diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-07-07 17:00:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-07 17:00:15 +0200 |
| commit | 9cd75fb35f1d24f805c6759fd6236cd708b81ee1 (patch) | |
| tree | 700a42673d9375f779853ee3cc37cc224074fb9e /src | |
| parent | dd2e8040a35883574ae0c4cc7a4e887ecb66469c (diff) | |
| parent | 6de8e39e2612305cef4e2d8ef3eca296294d01b5 (diff) | |
| download | rust-9cd75fb35f1d24f805c6759fd6236cd708b81ee1.tar.gz rust-9cd75fb35f1d24f805c6759fd6236cd708b81ee1.zip | |
Rollup merge of #61883 - zackmdavis:non_ascii_idents_lint, r=Manishearth
`non_ascii_idents` lint (part of RFC 2457) RFC 2457 [declares](https://github.com/rust-lang/rfcs/blob/121bbeff500c3274cea22c7e0ca176274d592646/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
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_lint/lib.rs | 3 | ||||
| -rw-r--r-- | src/librustc_lint/non_ascii_idents.rs | 22 | ||||
| -rw-r--r-- | src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr | 32 |
4 files changed, 68 insertions, 0 deletions
diff --git a/src/librustc_lint/lib.rs b/src/librustc_lint/lib.rs index 2519981fa21..13a9963fa90 100644 --- a/src/librustc_lint/lib.rs +++ b/src/librustc_lint/lib.rs @@ -30,6 +30,7 @@ mod nonstandard_style; pub mod builtin; mod types; mod unused; +mod non_ascii_idents; use rustc::lint; use rustc::lint::{EarlyContext, LateContext, LateLintPass, EarlyLintPass, LintPass, LintArray}; @@ -61,6 +62,7 @@ use nonstandard_style::*; use builtin::*; use types::*; use unused::*; +use non_ascii_idents::*; use rustc::lint::internal::*; /// Useful for other parts of the compiler. @@ -97,6 +99,7 @@ macro_rules! early_lint_passes { NonCamelCaseTypes: NonCamelCaseTypes, DeprecatedAttr: DeprecatedAttr::new(), WhileTrue: WhileTrue, + NonAsciiIdents: NonAsciiIdents, ]); ) } diff --git a/src/librustc_lint/non_ascii_idents.rs b/src/librustc_lint/non_ascii_idents.rs new file mode 100644 index 00000000000..aa39211efc7 --- /dev/null +++ b/src/librustc_lint/non_ascii_idents.rs @@ -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(); + } + } +} diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs new file mode 100644 index 00000000000..057329a0a65 --- /dev/null +++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs @@ -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 +} diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr new file mode 100644 index 00000000000..56925846e95 --- /dev/null +++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr @@ -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 + |
