Skip to content

Closure type error ui tweak #46864

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 3 commits into from
Dec 23, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 2 additions & 4 deletions src/librustc/ty/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -260,10 +260,8 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
let expected_str = values.expected.sort_string(self);
let found_str = values.found.sort_string(self);
if expected_str == found_str && expected_str == "closure" {
db.span_note(sp,
"no two closures, even if identical, have the same type");
db.span_help(sp,
"consider boxing your closure and/or using it as a trait object");
db.note("no two closures, even if identical, have the same type");
db.help("consider boxing your closure and/or using it as a trait object");
}
},
TyParamDefaultMismatch(values) => {
Expand Down
4 changes: 2 additions & 2 deletions src/librustc_const_eval/check_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,8 +402,8 @@ fn check_arms<'a, 'tcx>(cx: &mut MatchCheckCtxt<'a, 'tcx>,
);
// if we had a catchall pattern, hint at that
if let Some(catchall) = catchall {
err.span_label(pat.span, "this is an unreachable pattern");
err.span_note(catchall, "this pattern matches any value");
err.span_label(pat.span, "unreachable pattern");
err.span_label(catchall, "matches any value");
}
err.emit();
},
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_resolve/build_reduced_graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ impl<'a> Resolver<'a> {
ResolutionError::SelfImportCanOnlyAppearOnceInTheList);

for other_span in self_spans.iter().skip(1) {
e.span_note(*other_span, "another `self` import appears here");
e.span_label(*other_span, "another `self` import appears here");
}

e.emit();
Expand Down
42 changes: 20 additions & 22 deletions src/librustc_resolve/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -290,17 +290,17 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
"`self` imports are only allowed within a { } list")
}
ResolutionError::SelfImportCanOnlyAppearOnceInTheList => {
struct_span_err!(resolver.session,
span,
E0430,
"`self` import can only appear once in the list")
let mut err = struct_span_err!(resolver.session, span, E0430,
"`self` import can only appear once in an import list");
err.span_label(span, "can only appear once in an import list");
err
}
ResolutionError::SelfImportOnlyInImportListWithNonEmptyPrefix => {
struct_span_err!(resolver.session,
span,
E0431,
"`self` import can only appear in an import list with a \
non-empty prefix")
let mut err = struct_span_err!(resolver.session, span, E0431,
"`self` import can only appear in an import list with \
a non-empty prefix");
err.span_label(span, "can only appear in an import list with a non-empty prefix");
err
}
ResolutionError::UnresolvedImport(name) => {
let (span, msg) = match name {
Expand All @@ -320,18 +320,17 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
err
}
ResolutionError::CannotCaptureDynamicEnvironmentInFnItem => {
struct_span_err!(resolver.session,
span,
E0434,
"{}",
"can't capture dynamic environment in a fn item; use the || { ... } \
closure form instead")
let mut err = struct_span_err!(resolver.session,
span,
E0434,
"{}",
"can't capture dynamic environment in a fn item");
err.help("use the `|| { ... }` closure form instead");
err
}
ResolutionError::AttemptToUseNonConstantValueInConstant => {
let mut err = struct_span_err!(resolver.session,
span,
E0435,
"attempt to use a non-constant value in a constant");
let mut err = struct_span_err!(resolver.session, span, E0435,
"attempt to use a non-constant value in a constant");
err.span_label(span, "non-constant value");
err
}
Expand All @@ -351,8 +350,7 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
let mut err = struct_span_err!(resolver.session, span, E0128,
"type parameters with a default cannot use \
forward declared identifiers");
err.span_label(span, format!("defaulted type parameters \
cannot be forward declared"));
err.span_label(span, format!("defaulted type parameters cannot be forward declared"));
err
}
}
Expand Down Expand Up @@ -3941,7 +3939,7 @@ impl<'a> Resolver<'a> {

feature_err(&self.session.parse_sess, feature,
attr.span, GateIssue::Language, msg)
.span_note(binding.span(), "procedural macro imported here")
.span_label(binding.span(), "procedural macro imported here")
.emit();
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/compile-fail/bad-env-capture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// error-pattern: can't capture dynamic environment in a fn item;
// error-pattern: can't capture dynamic environment in a fn item
fn foo() {
let x: isize;
fn bar() { log(debug, x); }
Expand Down
2 changes: 1 addition & 1 deletion src/test/compile-fail/bad-env-capture2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// error-pattern: can't capture dynamic environment in a fn item;
// error-pattern: can't capture dynamic environment in a fn item
fn foo(x: isize) {
fn bar() { log(debug, x); }
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/compile-fail/bad-env-capture3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// error-pattern: can't capture dynamic environment in a fn item;
// error-pattern: can't capture dynamic environment in a fn item
fn foo(x: isize) {
fn mth() {
fn bar() { log(debug, x); }
Expand Down
2 changes: 1 addition & 1 deletion src/test/compile-fail/capture1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// except according to those terms.


// error-pattern: can't capture dynamic environment in a fn item;
// error-pattern: can't capture dynamic environment in a fn item

fn main() {
let bar: isize = 5;
Expand Down
36 changes: 4 additions & 32 deletions src/test/ui/issue-24036.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,8 @@ error[E0308]: mismatched types
|
= note: expected type `[closure@$DIR/issue-24036.rs:12:17: 12:26]`
found type `[closure@$DIR/issue-24036.rs:13:9: 13:18]`
note: no two closures, even if identical, have the same type
--> $DIR/issue-24036.rs:13:9
|
13 | x = |c| c + 1;
| ^^^^^^^^^
help: consider boxing your closure and/or using it as a trait object
--> $DIR/issue-24036.rs:13:9
|
13 | x = |c| c + 1;
| ^^^^^^^^^
= note: no two closures, even if identical, have the same type
= help: consider boxing your closure and/or using it as a trait object

error[E0308]: match arms have incompatible types
--> $DIR/issue-24036.rs:18:13
Expand All @@ -31,28 +23,8 @@ error[E0308]: match arms have incompatible types
|
= note: expected type `[closure@$DIR/issue-24036.rs:20:14: 20:23]`
found type `[closure@$DIR/issue-24036.rs:21:14: 21:23]`
note: no two closures, even if identical, have the same type
--> $DIR/issue-24036.rs:18:13
|
18 | let x = match 1usize {
| _____________^
19 | | //~^ ERROR match arms have incompatible types
20 | | 1 => |c| c + 1,
21 | | 2 => |c| c - 1,
22 | | _ => |c| c - 1
23 | | };
| |_____^
help: consider boxing your closure and/or using it as a trait object
--> $DIR/issue-24036.rs:18:13
|
18 | let x = match 1usize {
| _____________^
19 | | //~^ ERROR match arms have incompatible types
20 | | 1 => |c| c + 1,
21 | | 2 => |c| c - 1,
22 | | _ => |c| c - 1
23 | | };
| |_____^
= note: no two closures, even if identical, have the same type
= help: consider boxing your closure and/or using it as a trait object
note: match arm with an incompatible type
--> $DIR/issue-24036.rs:21:14
|
Expand Down
10 changes: 4 additions & 6 deletions src/test/ui/issue-30302.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,17 @@ warning[E0170]: pattern binding `Nil` is named the same as one of the variants o
error: unreachable pattern
--> $DIR/issue-30302.rs:25:9
|
23 | Nil => true,
| --- matches any value
24 | //~^ WARN pattern binding `Nil` is named the same as one of the variants of the type `Stack`
25 | _ => false
| ^ this is an unreachable pattern
| ^ unreachable pattern
|
note: lint level defined here
--> $DIR/issue-30302.rs:14:9
|
14 | #![deny(unreachable_patterns)]
| ^^^^^^^^^^^^^^^^^^^^
note: this pattern matches any value
--> $DIR/issue-30302.rs:23:9
|
23 | Nil => true,
| ^^^

error: aborting due to previous error

29 changes: 9 additions & 20 deletions src/test/ui/issue-31221.stderr
Original file line number Diff line number Diff line change
@@ -1,43 +1,32 @@
error: unreachable pattern
--> $DIR/issue-31221.rs:28:9
|
27 | Var3 => (),
| ---- matches any value
28 | Var2 => (),
| ^^^^ this is an unreachable pattern
| ^^^^ unreachable pattern
|
note: lint level defined here
--> $DIR/issue-31221.rs:14:9
|
14 | #![deny(unreachable_patterns)]
| ^^^^^^^^^^^^^^^^^^^^
note: this pattern matches any value
--> $DIR/issue-31221.rs:27:9
|
27 | Var3 => (),
| ^^^^

error: unreachable pattern
--> $DIR/issue-31221.rs:34:9
|
34 | &Var2 => (),
| ^^^^^ this is an unreachable pattern
|
note: this pattern matches any value
--> $DIR/issue-31221.rs:33:9
|
33 | &Var3 => (),
| ^^^^^
| ----- matches any value
34 | &Var2 => (),
| ^^^^^ unreachable pattern

error: unreachable pattern
--> $DIR/issue-31221.rs:41:9
|
41 | anything => ()
| ^^^^^^^^ this is an unreachable pattern
|
note: this pattern matches any value
--> $DIR/issue-31221.rs:40:9
|
40 | (c, d) => (),
| ^^^^^^
| ------ matches any value
41 | anything => ()
| ^^^^^^^^ unreachable pattern

error: aborting due to 3 previous errors

2 changes: 1 addition & 1 deletion src/test/ui/use-mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

use foo::bar::{
self,
//~^ ERROR `self` import can only appear once in the list
//~^ ERROR `self` import can only appear once in an import list
Bar,
self
//~^ ERROR the name `bar` is defined multiple times
Expand Down
13 changes: 5 additions & 8 deletions src/test/ui/use-mod.stderr
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
error[E0430]: `self` import can only appear once in the list
error[E0430]: `self` import can only appear once in an import list
--> $DIR/use-mod.rs:12:5
|
12 | self,
| ^^^^
|
note: another `self` import appears here
--> $DIR/use-mod.rs:15:5
|
| ^^^^ can only appear once in an import list
...
15 | self
| ^^^^
| ---- another `self` import appears here

error[E0431]: `self` import can only appear in an import list with a non-empty prefix
--> $DIR/use-mod.rs:19:6
|
19 | use {self};
| ^^^^
| ^^^^ can only appear in an import list with a non-empty prefix

error[E0252]: the name `bar` is defined multiple times
--> $DIR/use-mod.rs:15:5
Expand Down