Skip to content

Rollup of 8 pull requests #83964

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Apr 7, 2021
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
a591d7a
Add strong_count mutation methods to Rc
mystor Mar 25, 2021
960b699
Do not emit the advanced diagnostics on macros
JohnTitor Mar 29, 2021
81f00c9
Trigger `unused_doc_comments` on macros at once
JohnTitor Apr 3, 2021
815de0e
Move a `unused_doc_comments ` test to the `unused` dir
JohnTitor Apr 3, 2021
32be124
Use AnonConst for asm! constants
Amanieu Apr 6, 2021
ee79f83
forbid `impl Trait` in generic param defaults
SNCPlay42 Apr 6, 2021
7f823e5
Add reborrow suggestion when mutable reference is moved in a for loop
SkiFire13 Apr 6, 2021
a775984
Add regression test
SkiFire13 Apr 6, 2021
b8dda53
Remove trailing `:` from E0119 message
estebank Apr 7, 2021
18cf44b
Do not ICE when closure is involved in TAIT
estebank Apr 7, 2021
4752a54
Disable using non-ascii identifiers in extern blocks.
crlf0710 Apr 6, 2021
505846e
Rollup merge of #83476 - mystor:rc_mutate_strong_count, r=m-ou-se
Dylan-DPC Apr 7, 2021
2c55bac
Rollup merge of #83634 - JohnTitor:proc-macro-ice, r=varkor
Dylan-DPC Apr 7, 2021
4d5bb1c
Rollup merge of #83816 - JohnTitor:unused-doc-comments-on-macros, r=v…
Dylan-DPC Apr 7, 2021
b81c6cd
Rollup merge of #83916 - Amanieu:asm_anonconst, r=petrochenkov
Dylan-DPC Apr 7, 2021
d554385
Rollup merge of #83935 - SNCPlay42:param-default-impl-trait, r=varkor
Dylan-DPC Apr 7, 2021
9c688cd
Rollup merge of #83936 - crlf0710:disallow_extern_block_non_ascii, r=…
Dylan-DPC Apr 7, 2021
d7d42cc
Rollup merge of #83945 - SkiFire13:fix-83924, r=estebank
Dylan-DPC Apr 7, 2021
d82419b
Rollup merge of #83954 - estebank:issue-83613, r=varkor
Dylan-DPC Apr 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion compiler/rustc_ast_passes/src/ast_validation.rs
Original file line number Diff line number Diff line change
@@ -532,6 +532,25 @@ impl<'a> AstValidator<'a> {
}
}

/// An item in `extern { ... }` cannot use non-ascii identifier.
fn check_foreign_item_ascii_only(&self, ident: Ident) {
let symbol_str = ident.as_str();
if !symbol_str.is_ascii() {
let n = 83942;
self.err_handler()
.struct_span_err(
ident.span,
"items in `extern` blocks cannot use non-ascii identifiers",
)
.span_label(self.current_extern_span(), "in this `extern` block")
.note(&format!(
"This limitation may be lifted in the future; see issue #{} <https://github.com/rust-lang/rust/issues/{}> for more information",
n, n,
))
.emit();
}
}

/// Reject C-varadic type unless the function is foreign,
/// or free and `unsafe extern "C"` semantically.
fn check_c_varadic_type(&self, fk: FnKind<'a>) {
@@ -592,7 +611,7 @@ impl<'a> AstValidator<'a> {
self.session,
ident.span,
E0754,
"trying to load file for module `{}` with non ascii identifer name",
"trying to load file for module `{}` with non-ascii identifier name",
ident.name
)
.help("consider using `#[path]` attribute to specify filesystem path")
@@ -1103,15 +1122,18 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
self.check_defaultness(fi.span, *def);
self.check_foreign_fn_bodyless(fi.ident, body.as_deref());
self.check_foreign_fn_headerless(fi.ident, fi.span, sig.header);
self.check_foreign_item_ascii_only(fi.ident);
}
ForeignItemKind::TyAlias(box TyAliasKind(def, generics, bounds, body)) => {
self.check_defaultness(fi.span, *def);
self.check_foreign_kind_bodyless(fi.ident, "type", body.as_ref().map(|b| b.span));
self.check_type_no_bounds(bounds, "`extern` blocks");
self.check_foreign_ty_genericless(generics);
self.check_foreign_item_ascii_only(fi.ident);
}
ForeignItemKind::Static(_, _, body) => {
self.check_foreign_kind_bodyless(fi.ident, "static", body.as_ref().map(|b| b.span));
self.check_foreign_item_ascii_only(fi.ident);
}
ForeignItemKind::MacCall(..) => {}
}
1 change: 1 addition & 0 deletions src/test/ui/feature-gates/feature-gate-non_ascii_idents.rs
Original file line number Diff line number Diff line change
@@ -28,6 +28,7 @@ enum Bär { //~ ERROR non-ascii idents

extern "C" {
fn qüx(); //~ ERROR non-ascii idents
//~^ ERROR items in `extern` blocks
}

fn main() {}
12 changes: 11 additions & 1 deletion src/test/ui/feature-gates/feature-gate-non_ascii_idents.stderr
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
error: items in `extern` blocks cannot use non-ascii identifiers
--> $DIR/feature-gate-non_ascii_idents.rs:30:8
|
LL | extern "C" {
| ---------- in this `extern` block
LL | fn qüx();
| ^^^
|
= note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information

error[E0658]: non-ascii idents are not fully supported
--> $DIR/feature-gate-non_ascii_idents.rs:1:22
|
@@ -115,6 +125,6 @@ LL | fn qüx();
= note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
= help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable

error: aborting due to 13 previous errors
error: aborting due to 14 previous errors

For more information about this error, try `rustc --explain E0658`.
10 changes: 10 additions & 0 deletions src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#![feature(extern_types)]
#![feature(non_ascii_idents)]

extern "C" {
type 一; //~ items in `extern` blocks cannot use non-ascii identifiers
fn 二(); //~ items in `extern` blocks cannot use non-ascii identifiers
static 三: usize; //~ items in `extern` blocks cannot use non-ascii identifiers
}

fn main() {}
34 changes: 34 additions & 0 deletions src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
error: items in `extern` blocks cannot use non-ascii identifiers
--> $DIR/extern_block_nonascii_forbidden.rs:5:10
|
LL | extern "C" {
| ---------- in this `extern` block
LL | type 一;
| ^^
|
= note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information

error: items in `extern` blocks cannot use non-ascii identifiers
--> $DIR/extern_block_nonascii_forbidden.rs:6:8
|
LL | extern "C" {
| ---------- in this `extern` block
LL | type 一;
LL | fn 二();
| ^^
|
= note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information

error: items in `extern` blocks cannot use non-ascii identifiers
--> $DIR/extern_block_nonascii_forbidden.rs:7:12
|
LL | extern "C" {
| ---------- in this `extern` block
...
LL | static 三: usize;
| ^^
|
= note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information

error: aborting due to 3 previous errors

2 changes: 1 addition & 1 deletion src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ LL | mod řųśť;
|
= help: to create the module `řųśť`, create file "$DIR/řųśť.rs"

error[E0754]: trying to load file for module `řųśť` with non ascii identifer name
error[E0754]: trying to load file for module `řųśť` with non-ascii identifier name
--> $DIR/mod_file_nonascii_forbidden.rs:3:5
|
LL | mod řųśť;