Bring attention to suggestions when the only difference is capitalization

This commit is contained in:
Esteban Küber 2019-10-13 21:48:39 -07:00
parent 898f36c83c
commit 4bb771615e
38 changed files with 121 additions and 71 deletions

View File

@ -23,7 +23,7 @@ use syntax::feature_gate::UnstableFeatures;
use syntax::source_map::SourceMap;
use errors::emitter::HumanReadableErrorType;
use errors::{ColorConfig, FatalError, Handler};
use errors::{ColorConfig, FatalError, Handler, SourceMapperDyn};
use getopts;
@ -1854,6 +1854,7 @@ struct NullEmitter;
impl errors::emitter::Emitter for NullEmitter {
fn emit_diagnostic(&mut self, _: &errors::Diagnostic) {}
fn source_map(&self) -> Option<&Lrc<SourceMapperDyn>> { None }
}
// Converts strings provided as `--cfg [cfgspec]` into a `crate_cfg`.

View File

@ -22,7 +22,8 @@ use rustc::util::common::{time_depth, set_time_depth, print_time_passes_entry};
use rustc::util::profiling::SelfProfilerRef;
use rustc_fs_util::link_or_copy;
use rustc_data_structures::svh::Svh;
use rustc_errors::{Handler, Level, FatalError, DiagnosticId};
use rustc_data_structures::sync::Lrc;
use rustc_errors::{Handler, Level, FatalError, DiagnosticId, SourceMapperDyn};
use rustc_errors::emitter::{Emitter};
use rustc_target::spec::MergeFunctions;
use syntax::attr;
@ -1681,6 +1682,9 @@ impl Emitter for SharedEmitter {
}
drop(self.sender.send(SharedEmitterMessage::AbortIfErrors));
}
fn source_map(&self) -> Option<&Lrc<SourceMapperDyn>> {
None
}
}
impl SharedEmitterMain {

View File

@ -49,6 +49,10 @@ impl Emitter for AnnotateSnippetEmitterWriter {
&suggestions);
}
fn source_map(&self) -> Option<&Lrc<SourceMapperDyn>> {
self.source_map.as_ref()
}
fn should_show_explain(&self) -> bool {
!self.short_message
}

View File

@ -192,6 +192,8 @@ pub trait Emitter {
true
}
fn source_map(&self) -> Option<&Lrc<SourceMapperDyn>>;
/// Formats the substitutions of the primary_span
///
/// The are a lot of conditions to this method, but in short:
@ -204,7 +206,7 @@ pub trait Emitter {
/// we return the original `primary_span` and the original suggestions.
fn primary_span_formatted<'a>(
&mut self,
db: &'a Diagnostic
db: &'a Diagnostic,
) -> (MultiSpan, &'a [CodeSuggestion]) {
let mut primary_span = db.span.clone();
if let Some((sugg, rest)) = db.suggestions.split_first() {
@ -234,7 +236,20 @@ pub trait Emitter {
format!("help: {}", sugg.msg)
} else {
// Show the default suggestion text with the substitution
format!("help: {}: `{}`", sugg.msg, substitution)
format!(
"help: {}{}: `{}`",
sugg.msg,
if self.source_map().as_ref().map(|sm| substitution.to_lowercase() == sm
.span_to_snippet(sugg.substitutions[0].parts[0].span)
.unwrap()
.to_lowercase()).unwrap_or(false)
{
" (notice the capitalization)"
} else {
""
},
substitution,
)
};
primary_span.push_span_label(sugg.substitutions[0].parts[0].span, msg);
@ -382,6 +397,10 @@ pub trait Emitter {
}
impl Emitter for EmitterWriter {
fn source_map(&self) -> Option<&Lrc<SourceMapperDyn>> {
self.sm.as_ref()
}
fn emit_diagnostic(&mut self, db: &Diagnostic) {
let mut children = db.children.clone();
let (mut primary_span, suggestions) = self.primary_span_formatted(&db);
@ -1461,7 +1480,9 @@ impl EmitterWriter {
let suggestions = suggestion.splice_lines(&**sm);
let mut row_num = 2;
for &(ref complete, ref parts) in suggestions.iter().take(MAX_SUGGESTIONS) {
let mut notice_capitalization = false;
for (complete, parts, only_capitalization) in suggestions.iter().take(MAX_SUGGESTIONS) {
notice_capitalization |= only_capitalization;
// Only show underline if the suggestion spans a single line and doesn't cover the
// entirety of the code output. If you have multiple replacements in the same line
// of code, show the underline.
@ -1552,7 +1573,10 @@ impl EmitterWriter {
}
if suggestions.len() > MAX_SUGGESTIONS {
let msg = format!("and {} other candidates", suggestions.len() - MAX_SUGGESTIONS);
buffer.puts(row_num, 0, &msg, Style::NoStyle);
buffer.puts(row_num, max_line_num_len + 3, &msg, Style::NoStyle);
} else if notice_capitalization {
let msg = "notice the capitalization difference";
buffer.puts(row_num, max_line_num_len + 3, &msg, Style::NoStyle);
}
emit_to_destination(&buffer.render(), level, &mut self.dst, self.short_message)?;
Ok(())

View File

@ -37,13 +37,16 @@ pub mod registry;
mod styled_buffer;
mod lock;
use syntax_pos::{BytePos,
Loc,
FileLinesResult,
SourceFile,
FileName,
MultiSpan,
Span};
use syntax_pos::{
BytePos,
FileLinesResult,
FileName,
Loc,
MultiSpan,
SourceFile,
Span,
SpanSnippetError,
};
/// Indicates the confidence in the correctness of a suggestion.
///
@ -147,6 +150,7 @@ pub trait SourceMapper {
fn lookup_char_pos(&self, pos: BytePos) -> Loc;
fn span_to_lines(&self, sp: Span) -> FileLinesResult;
fn span_to_string(&self, sp: Span) -> String;
fn span_to_snippet(&self, sp: Span) -> Result<String, SpanSnippetError>;
fn span_to_filename(&self, sp: Span) -> FileName;
fn merge_spans(&self, sp_lhs: Span, sp_rhs: Span) -> Option<Span>;
fn call_span_if_macro(&self, sp: Span) -> Span;
@ -155,9 +159,12 @@ pub trait SourceMapper {
}
impl CodeSuggestion {
/// Returns the assembled code suggestions and whether they should be shown with an underline.
pub fn splice_lines(&self, cm: &SourceMapperDyn)
-> Vec<(String, Vec<SubstitutionPart>)> {
/// Returns the assembled code suggestions, whether they should be shown with an underline
/// and whether the substitution only differs in capitalization.
pub fn splice_lines(
&self,
cm: &SourceMapperDyn,
) -> Vec<(String, Vec<SubstitutionPart>, bool)> {
use syntax_pos::{CharPos, Pos};
fn push_trailing(buf: &mut String,
@ -232,6 +239,8 @@ impl CodeSuggestion {
prev_hi = cm.lookup_char_pos(part.span.hi());
prev_line = fm.get_line(prev_hi.line - 1);
}
let only_capitalization = buf.clone().to_lowercase()
== cm.span_to_snippet(bounding_span).unwrap().to_lowercase();
// if the replacement already ends with a newline, don't print the next line
if !buf.ends_with('\n') {
push_trailing(&mut buf, prev_line.as_ref(), &prev_hi, None);
@ -240,7 +249,8 @@ impl CodeSuggestion {
while buf.ends_with('\n') {
buf.pop();
}
(buf, substitution.parts)
(buf, substitution.parts, only_capitalization)
}).collect()
}
}

View File

@ -12,7 +12,7 @@
use crate::source_map::{SourceMap, FilePathMapping};
use errors::registry::Registry;
use errors::{SubDiagnostic, CodeSuggestion, SourceMapper};
use errors::{SubDiagnostic, CodeSuggestion, SourceMapper, SourceMapperDyn};
use errors::{DiagnosticId, Applicability};
use errors::emitter::{Emitter, HumanReadableErrorType};
@ -113,6 +113,10 @@ impl Emitter for JsonEmitter {
}
}
fn source_map(&self) -> Option<&Lrc<SourceMapperDyn>> {
Some(&self.sm)
}
fn should_show_explain(&self) -> bool {
match self.json_rendered {
HumanReadableErrorType::Short(_) => false,

View File

@ -987,6 +987,9 @@ impl SourceMapper for SourceMap {
fn span_to_string(&self, sp: Span) -> String {
self.span_to_string(sp)
}
fn span_to_snippet(&self, sp: Span) -> Result<String, SpanSnippetError> {
self.span_to_snippet(sp)
}
fn span_to_filename(&self, sp: Span) -> FileName {
self.span_to_filename(sp)
}

View File

@ -10,7 +10,7 @@ error: const parameter `x` should have an upper case name
--> $DIR/const-parameter-uppercase-lint.rs:6:15
|
LL | fn noop<const x: u32>() {
| ^ help: convert the identifier to upper case: `X`
| ^ help: convert the identifier to upper case (notice the capitalization): `X`
|
note: lint level defined here
--> $DIR/const-parameter-uppercase-lint.rs:4:9

View File

@ -20,7 +20,7 @@ warning: constant `X_const` should have an upper case name
--> $DIR/const_fn_ptr.rs:9:7
|
LL | const X_const: fn(usize) -> usize = double_const;
| ^^^^^^^ help: convert the identifier to upper case: `X_CONST`
| ^^^^^^^ help: convert the identifier to upper case (notice the capitalization): `X_CONST`
|
= note: `#[warn(non_upper_case_globals)]` on by default

View File

@ -55,7 +55,7 @@ LL | let z = ManyVariants::Three();
| ^^^^^^^^^^^^^^^^^^^
LL | let z = ManyVariants::Four();
| ^^^^^^^^^^^^^^^^^^
and 6 other candidates
and 6 other candidates
error: aborting due to 5 previous errors

View File

@ -13,7 +13,7 @@ LL | fn setup() -> Determine { Set }
| ^^^^^^^^^
LL | fn setup() -> PutDown { Set }
| ^^^^^^^
and 3 other candidates
and 3 other candidates
error[E0425]: cannot find value `Set` in this scope
--> $DIR/issue-56028-there-is-an-enum-variant.rs:9:21
@ -30,7 +30,7 @@ LL | use Determine::Set;
|
LL | use PutDown::Set;
|
and 3 other candidates
and 3 other candidates
error: aborting due to 2 previous errors

View File

@ -2,7 +2,7 @@ error: function `BOGUS` should have a snake case name
--> $DIR/enable-unstable-lib-feature.rs:11:8
|
LL | pub fn BOGUS() { }
| ^^^^^ help: convert the identifier to snake case: `bogus`
| ^^^^^ help: convert the identifier to snake case (notice the capitalization): `bogus`
|
note: lint level defined here
--> $DIR/enable-unstable-lib-feature.rs:6:9

View File

@ -34,7 +34,7 @@ LL | let f = Foo();
| ^^^
| |
| did you mean `Foo { /* fields */ }`?
| help: a function with a similar name exists: `foo`
| help: a function with a similar name exists (notice the capitalization): `foo`
error[E0423]: expected value, found struct `T`
--> $DIR/E0423.rs:14:8

View File

@ -2,7 +2,7 @@ error: variable `X` should have a snake case name
--> $DIR/expr_attr_paren_order.rs:19:17
|
LL | let X = 0;
| ^ help: convert the identifier to snake case: `x`
| ^ help: convert the identifier to snake case (notice the capitalization): `x`
|
note: lint level defined here
--> $DIR/expr_attr_paren_order.rs:17:17

View File

@ -5,7 +5,7 @@ LL | use my_core;
| ^^^^^^^
| |
| no `my_core` in the root
| help: a similar name exists in the module: `my_core`
| help: a similar name exists in the module (notice the capitalization): `my_core`
error[E0432]: unresolved import `my_core`
--> $DIR/extern-prelude-from-opaque-fail.rs:7:13

View File

@ -34,7 +34,7 @@ LL | use foo::test2::test::g;
|
LL | use foo::test::g;
|
and 2 other candidates
and 2 other candidates
error[E0425]: cannot find function `f` in this scope
--> $DIR/globs.rs:61:12

View File

@ -2,7 +2,7 @@ error[E0425]: cannot find value `Opaque` in this scope
--> $DIR/rustc-macro-transparency.rs:26:5
|
LL | Opaque;
| ^^^^^^ help: a local variable with a similar name exists: `opaque`
| ^^^^^^ help: a local variable with a similar name exists (notice the capitalization): `opaque`
error[E0423]: expected value, found macro `semitransparent`
--> $DIR/rustc-macro-transparency.rs:29:5

View File

@ -2,7 +2,7 @@ error[E0532]: expected tuple struct/variant, found function `foo`
--> $DIR/issue-10200.rs:6:9
|
LL | foo(x)
| ^^^ help: a tuple struct with a similar name exists: `Foo`
| ^^^ help: a tuple struct with a similar name exists (notice the capitalization): `Foo`
error: aborting due to previous error

View File

@ -27,7 +27,7 @@ LL | use std::prelude::v1::Result;
|
LL | use std::result::Result;
|
and 1 other candidates
and 1 other candidates
error[E0573]: expected type, found variant `Result`
--> $DIR/issue-17546.rs:28:13
@ -44,7 +44,7 @@ LL | use std::prelude::v1::Result;
|
LL | use std::result::Result;
|
and 1 other candidates
and 1 other candidates
error[E0573]: expected type, found variant `NoResult`
--> $DIR/issue-17546.rs:33:15

View File

@ -15,7 +15,7 @@ error: constant `foo` should have an upper case name
--> $DIR/issue-17718-const-naming.rs:4:7
|
LL | const foo: isize = 3;
| ^^^ help: convert the identifier to upper case: `FOO`
| ^^^ help: convert the identifier to upper case (notice the capitalization): `FOO`
|
note: lint level defined here
--> $DIR/issue-17718-const-naming.rs:2:9

View File

@ -2,7 +2,7 @@ error[E0422]: cannot find struct, variant or union type `TyUInt` in this scope
--> $DIR/issue-46332.rs:9:5
|
LL | TyUInt {};
| ^^^^^^ help: a struct with a similar name exists: `TyUint`
| ^^^^^^ help: a struct with a similar name exists (notice the capitalization): `TyUint`
error: aborting due to previous error

View File

@ -41,7 +41,7 @@ error: static variable `bad` should have an upper case name
--> $DIR/lint-group-nonstandard-style.rs:14:16
|
LL | static bad: isize = 1;
| ^^^ help: convert the identifier to upper case: `BAD`
| ^^^ help: convert the identifier to upper case (notice the capitalization): `BAD`
|
note: lint level defined here
--> $DIR/lint-group-nonstandard-style.rs:10:14

View File

@ -2,7 +2,7 @@ error: constant in pattern `a` should have an upper case name
--> $DIR/lint-lowercase-static-const-pattern.rs:11:13
|
LL | (0, a) => 0,
| ^ help: convert the identifier to upper case: `A`
| ^ help: convert the identifier to upper case (notice the capitalization): `A`
|
note: lint level defined here
--> $DIR/lint-lowercase-static-const-pattern.rs:4:9
@ -14,13 +14,13 @@ error: constant in pattern `aha` should have an upper case name
--> $DIR/lint-lowercase-static-const-pattern.rs:26:13
|
LL | (0, aha) => 0,
| ^^^ help: convert the identifier to upper case: `AHA`
| ^^^ help: convert the identifier to upper case (notice the capitalization): `AHA`
error: constant in pattern `not_okay` should have an upper case name
--> $DIR/lint-lowercase-static-const-pattern.rs:40:13
|
LL | (0, not_okay) => 0,
| ^^^^^^^^ help: convert the identifier to upper case: `NOT_OKAY`
| ^^^^^^^^ help: convert the identifier to upper case (notice the capitalization): `NOT_OKAY`
error: aborting due to 3 previous errors

View File

@ -14,43 +14,43 @@ error: type `foo` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:7:8
|
LL | struct foo {
| ^^^ help: convert the identifier to upper camel case: `Foo`
| ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Foo`
error: type `foo2` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:11:6
|
LL | enum foo2 {
| ^^^^ help: convert the identifier to upper camel case: `Foo2`
| ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Foo2`
error: type `foo3` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:15:8
|
LL | struct foo3 {
| ^^^^ help: convert the identifier to upper camel case: `Foo3`
| ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Foo3`
error: type `foo4` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:19:6
|
LL | type foo4 = isize;
| ^^^^ help: convert the identifier to upper camel case: `Foo4`
| ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Foo4`
error: variant `bar` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:22:5
|
LL | bar
| ^^^ help: convert the identifier to upper camel case: `Bar`
| ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Bar`
error: trait `foo6` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:25:7
|
LL | trait foo6 {
| ^^^^ help: convert the identifier to upper camel case: `Foo6`
| ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Foo6`
error: type parameter `ty` should have an upper camel case name
--> $DIR/lint-non-camel-case-types.rs:29:6
|
LL | fn f<ty>(_: ty) {}
| ^^ help: convert the identifier to upper camel case: `Ty`
| ^^ help: convert the identifier to upper camel case (notice the capitalization): `Ty`
error: aborting due to 8 previous errors

View File

@ -2,7 +2,7 @@ error: method `Foo_Method` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:7:8
|
LL | fn Foo_Method() {}
| ^^^^^^^^^^ help: convert the identifier to snake case: `foo_method`
| ^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `foo_method`
|
note: lint level defined here
--> $DIR/lint-non-snake-case-functions.rs:1:9
@ -26,19 +26,19 @@ error: method `render_HTML` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:17:8
|
LL | fn render_HTML() {}
| ^^^^^^^^^^^ help: convert the identifier to snake case: `render_html`
| ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `render_html`
error: trait method `ABC` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:22:8
|
LL | fn ABC();
| ^^^ help: convert the identifier to snake case: `abc`
| ^^^ help: convert the identifier to snake case (notice the capitalization): `abc`
error: trait method `a_b_C` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:25:8
|
LL | fn a_b_C(&self) {}
| ^^^^^ help: convert the identifier to snake case: `a_b_c`
| ^^^^^ help: convert the identifier to snake case (notice the capitalization): `a_b_c`
error: trait method `something__else` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:28:8
@ -50,13 +50,13 @@ error: function `Cookie` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:38:4
|
LL | fn Cookie() {}
| ^^^^^^ help: convert the identifier to snake case: `cookie`
| ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `cookie`
error: function `bi_S_Cuit` should have a snake case name
--> $DIR/lint-non-snake-case-functions.rs:41:8
|
LL | pub fn bi_S_Cuit() {}
| ^^^^^^^^^ help: convert the identifier to snake case: `bi_s_cuit`
| ^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `bi_s_cuit`
error: aborting due to 9 previous errors

View File

@ -2,7 +2,7 @@ error: associated constant `not_upper` should have an upper case name
--> $DIR/lint-non-uppercase-associated-const.rs:7:11
|
LL | const not_upper: bool = true;
| ^^^^^^^^^ help: convert the identifier to upper case: `NOT_UPPER`
| ^^^^^^^^^ help: convert the identifier to upper case (notice the capitalization): `NOT_UPPER`
|
note: lint level defined here
--> $DIR/lint-non-uppercase-associated-const.rs:1:9

View File

@ -2,7 +2,7 @@ error: static variable `foo` should have an upper case name
--> $DIR/lint-non-uppercase-statics.rs:4:8
|
LL | static foo: isize = 1;
| ^^^ help: convert the identifier to upper case: `FOO`
| ^^^ help: convert the identifier to upper case (notice the capitalization): `FOO`
|
note: lint level defined here
--> $DIR/lint-non-uppercase-statics.rs:1:11
@ -14,7 +14,7 @@ error: static variable `bar` should have an upper case name
--> $DIR/lint-non-uppercase-statics.rs:6:12
|
LL | static mut bar: isize = 1;
| ^^^ help: convert the identifier to upper case: `BAR`
| ^^^ help: convert the identifier to upper case (notice the capitalization): `BAR`
error: aborting due to 2 previous errors

View File

@ -21,7 +21,7 @@ error: structure field `X` should have a snake case name
--> $DIR/lint-uppercase-variables.rs:10:5
|
LL | X: usize
| ^ help: convert the identifier to snake case: `x`
| ^ help: convert the identifier to snake case (notice the capitalization): `x`
|
note: lint level defined here
--> $DIR/lint-uppercase-variables.rs:3:9
@ -33,19 +33,19 @@ error: variable `Xx` should have a snake case name
--> $DIR/lint-uppercase-variables.rs:13:9
|
LL | fn test(Xx: usize) {
| ^^ help: convert the identifier to snake case: `xx`
| ^^ help: convert the identifier to snake case (notice the capitalization): `xx`
error: variable `Test` should have a snake case name
--> $DIR/lint-uppercase-variables.rs:18:9
|
LL | let Test: usize = 0;
| ^^^^ help: convert the identifier to snake case: `test`
| ^^^^ help: convert the identifier to snake case (notice the capitalization): `test`
error: variable `Foo` should have a snake case name
--> $DIR/lint-uppercase-variables.rs:22:9
|
LL | Foo => {}
| ^^^ help: convert the identifier to snake case: `foo`
| ^^^ help: convert the identifier to snake case (notice the capitalization): `foo`
error: aborting due to 4 previous errors

View File

@ -10,11 +10,11 @@ warning: unknown lint: `DEAD_CODE`
--> $DIR/not_found.rs:8:8
|
LL | #[warn(DEAD_CODE)]
| ^^^^^^^^^ help: did you mean: `dead_code`
| ^^^^^^^^^ help: did you mean (notice the capitalization): `dead_code`
warning: unknown lint: `Warnings`
--> $DIR/not_found.rs:10:8
|
LL | #[deny(Warnings)]
| ^^^^^^^^ help: did you mean: `warnings`
| ^^^^^^^^ help: did you mean (notice the capitalization): `warnings`

View File

@ -15,7 +15,7 @@ warning: variable `Social_exchange_psychology` should have a snake case name
--> $DIR/reasons.rs:30:9
|
LL | let Social_exchange_psychology = CheaterDetectionMechanism {};
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `social_exchange_psychology`
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `social_exchange_psychology`
|
= note: people shouldn't have to change their usual style habits
to contribute to our project

View File

@ -395,7 +395,7 @@ mod foo {
\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m
\u001b[0m\u001b[1m\u001b[38;5;12mLL\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse std::collections::hash_map::Iter;\u001b[0m
\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m
\u001b[0mand 8 other candidates\u001b[0m
\u001b[0m and 8 other candidates\u001b[0m
"
}

View File

@ -27,7 +27,7 @@ LL | use mul3::Mul;
|
LL | use mul4::Mul;
|
and 2 other candidates
and 2 other candidates
error[E0405]: cannot find trait `ThisTraitReallyDoesntExistInAnyModuleReally` in this scope
--> $DIR/issue-21221-1.rs:63:6

View File

@ -8,7 +8,7 @@ LL | handle: Handle
| ^^^^^^
| |
| did you mean `Handle { /* fields */ }`?
| help: a local variable with a similar name exists: `handle`
| help: a local variable with a similar name exists (notice the capitalization): `handle`
error: aborting due to previous error

View File

@ -38,13 +38,13 @@ error[E0412]: cannot find type `first` in module `m`
--> $DIR/levenshtein.rs:28:15
|
LL | let b: m::first = m::second; // Misspelled item in module.
| ^^^^^ help: a struct with a similar name exists: `First`
| ^^^^^ help: a struct with a similar name exists (notice the capitalization): `First`
error[E0425]: cannot find value `second` in module `m`
--> $DIR/levenshtein.rs:28:26
|
LL | let b: m::first = m::second; // Misspelled item in module.
| ^^^^^^ help: a unit struct with a similar name exists: `Second`
| ^^^^^^ help: a unit struct with a similar name exists (notice the capitalization): `Second`
error: aborting due to 8 previous errors

View File

@ -13,7 +13,7 @@ LL | use std::collections::hash_map::Drain;
|
LL | use std::collections::hash_set::Drain;
|
and 3 other candidates
and 3 other candidates
error: aborting due to previous error

View File

@ -5,7 +5,7 @@ LL | use main as x;
| ----^^^^^
| |
| no `main` in the root
| help: a similar name exists in the module: `main`
| help: a similar name exists in the module (notice the capitalization): `main`
error[E0432]: unresolved import `test`
--> $DIR/inaccessible-test-modules.rs:6:5
@ -14,7 +14,7 @@ LL | use test as y;
| ----^^^^^
| |
| no `test` in the root
| help: a similar name exists in the module: `test`
| help: a similar name exists in the module (notice the capitalization): `test`
error: aborting due to 2 previous errors

View File

@ -2,7 +2,7 @@ error[E0573]: expected type, found module `a`
--> $DIR/trait-impl-for-module.rs:7:12
|
LL | impl A for a {
| ^ help: a trait with a similar name exists: `A`
| ^ help: a trait with a similar name exists (notice the capitalization): `A`
error: aborting due to previous error

View File

@ -38,7 +38,7 @@ warning: type parameter `γ` should have an upper camel case name
--> $DIR/utf8_idents.rs:3:5
|
LL | γ
| ^ help: convert the identifier to upper camel case: `Γ`
| ^ help: convert the identifier to upper camel case (notice the capitalization): `Γ`
|
= note: `#[warn(non_camel_case_types)]` on by default