Rollup merge of #61883 - zackmdavis:non_ascii_idents_lint, r=Manishearth
`non_ascii_idents` lint (part of RFC 2457)
RFC 2457 [declares](121bbeff50/text/2457-non-ascii-idents.md
): "A `non_ascii_idents` lint is added to the compiler. This lint is allow by default."
(Part of #55467.)
r? @Manishearth
This commit is contained in:
commit
9cd75fb35f
@ -30,6 +30,7 @@ mod nonstandard_style;
|
|||||||
pub mod builtin;
|
pub mod builtin;
|
||||||
mod types;
|
mod types;
|
||||||
mod unused;
|
mod unused;
|
||||||
|
mod non_ascii_idents;
|
||||||
|
|
||||||
use rustc::lint;
|
use rustc::lint;
|
||||||
use rustc::lint::{EarlyContext, LateContext, LateLintPass, EarlyLintPass, LintPass, LintArray};
|
use rustc::lint::{EarlyContext, LateContext, LateLintPass, EarlyLintPass, LintPass, LintArray};
|
||||||
@ -61,6 +62,7 @@ use nonstandard_style::*;
|
|||||||
use builtin::*;
|
use builtin::*;
|
||||||
use types::*;
|
use types::*;
|
||||||
use unused::*;
|
use unused::*;
|
||||||
|
use non_ascii_idents::*;
|
||||||
use rustc::lint::internal::*;
|
use rustc::lint::internal::*;
|
||||||
|
|
||||||
/// Useful for other parts of the compiler.
|
/// Useful for other parts of the compiler.
|
||||||
@ -97,6 +99,7 @@ macro_rules! early_lint_passes {
|
|||||||
NonCamelCaseTypes: NonCamelCaseTypes,
|
NonCamelCaseTypes: NonCamelCaseTypes,
|
||||||
DeprecatedAttr: DeprecatedAttr::new(),
|
DeprecatedAttr: DeprecatedAttr::new(),
|
||||||
WhileTrue: WhileTrue,
|
WhileTrue: WhileTrue,
|
||||||
|
NonAsciiIdents: NonAsciiIdents,
|
||||||
]);
|
]);
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
22
src/librustc_lint/non_ascii_idents.rs
Normal file
22
src/librustc_lint/non_ascii_idents.rs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
use crate::lint::{EarlyContext, EarlyLintPass, LintArray, LintContext, LintPass};
|
||||||
|
use syntax::ast;
|
||||||
|
|
||||||
|
declare_lint! {
|
||||||
|
pub NON_ASCII_IDENTS,
|
||||||
|
Allow,
|
||||||
|
"detects non-ASCII identifiers"
|
||||||
|
}
|
||||||
|
|
||||||
|
declare_lint_pass!(NonAsciiIdents => [NON_ASCII_IDENTS]);
|
||||||
|
|
||||||
|
impl EarlyLintPass for NonAsciiIdents {
|
||||||
|
fn check_ident(&mut self, cx: &EarlyContext<'_>, ident: ast::Ident) {
|
||||||
|
if !ident.name.as_str().is_ascii() {
|
||||||
|
cx.struct_span_lint(
|
||||||
|
NON_ASCII_IDENTS,
|
||||||
|
ident.span,
|
||||||
|
"identifier contains non-ASCII characters",
|
||||||
|
).emit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
#![feature(non_ascii_idents)]
|
||||||
|
#![deny(non_ascii_idents)]
|
||||||
|
|
||||||
|
const חלודה: usize = 2; //~ ERROR identifier contains non-ASCII characters
|
||||||
|
|
||||||
|
fn coöperation() {} //~ ERROR identifier contains non-ASCII characters
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let naïveté = 2; //~ ERROR identifier contains non-ASCII characters
|
||||||
|
println!("{}", naïveté); //~ ERROR identifier contains non-ASCII characters
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
error: identifier contains non-ASCII characters
|
||||||
|
--> $DIR/lint-non-ascii-idents.rs:4:7
|
||||||
|
|
|
||||||
|
LL | const חלודה: usize = 2;
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
note: lint level defined here
|
||||||
|
--> $DIR/lint-non-ascii-idents.rs:2:9
|
||||||
|
|
|
||||||
|
LL | #![deny(non_ascii_idents)]
|
||||||
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: identifier contains non-ASCII characters
|
||||||
|
--> $DIR/lint-non-ascii-idents.rs:6:4
|
||||||
|
|
|
||||||
|
LL | fn coöperation() {}
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: identifier contains non-ASCII characters
|
||||||
|
--> $DIR/lint-non-ascii-idents.rs:9:9
|
||||||
|
|
|
||||||
|
LL | let naïveté = 2;
|
||||||
|
| ^^^^^^^
|
||||||
|
|
||||||
|
error: identifier contains non-ASCII characters
|
||||||
|
--> $DIR/lint-non-ascii-idents.rs:10:20
|
||||||
|
|
|
||||||
|
LL | println!("{}", naïveté);
|
||||||
|
| ^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 4 previous errors
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user