Skip to content
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

Rollup of 4 pull requests #62461

Closed
wants to merge 17 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
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
Prev Previous commit
Next Next commit
in which the non_ascii_idents lint appears (RFC 2457)
RFC 2457 declares: "A `non_ascii_idents` lint is added to the
compiler. This lint is allow by default."
zackmdavis committed Jul 7, 2019
commit 6de8e39e2612305cef4e2d8ef3eca296294d01b5
3 changes: 3 additions & 0 deletions src/librustc_lint/lib.rs
Original file line number Diff line number Diff line change
@@ -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,
]);
)
}
22 changes: 22 additions & 0 deletions src/librustc_lint/non_ascii_idents.rs
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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