Skip to content

Commit 941b2e3

Browse files
committed
slight rewording of labels
1 parent d7a74be commit 941b2e3

File tree

5 files changed

+23
-17
lines changed

5 files changed

+23
-17
lines changed

src/librustc_resolve/lib.rs

+19-13
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,26 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
197197
err.span_label(span, "use of type variable from outer function");
198198

199199
let cm = resolver.session.source_map();
200-
let mut is_self = false;
201200
match outer_def {
202-
Def::SelfTy(_, maybe_impl_defid) => {
203-
if let Some(impl_span) = maybe_impl_defid.map_or(None,
204-
|def_id| resolver.definitions.opt_span(def_id)) {
205-
err.span_label(reduce_impl_span_to_impl_keyword(cm, impl_span),
206-
"`Self` type implicitly declared here, on the `impl`");
201+
Def::SelfTy(maybe_trait_defid, maybe_impl_defid) => {
202+
if let Some(impl_span) = maybe_impl_defid.and_then(|def_id| {
203+
resolver.definitions.opt_span(def_id)
204+
}) {
205+
err.span_label(
206+
reduce_impl_span_to_impl_keyword(cm, impl_span),
207+
"`Self` type implicitly declared here, on the `impl`",
208+
);
209+
}
210+
match (maybe_trait_defid, maybe_impl_defid) {
211+
(Some(_), None) => {
212+
err.span_label(span, "can't use `Self` here");
213+
}
214+
(_, Some(_)) => {
215+
err.span_label(span, "use a type here instead");
216+
}
217+
(None, None) => bug!("`impl` without trait nor type?"),
207218
}
208-
is_self = true;
219+
return err;
209220
},
210221
Def::TyParam(typaram_defid) => {
211222
if let Some(typaram_span) = resolver.definitions.opt_span(typaram_defid) {
@@ -221,12 +232,7 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver,
221232
// Try to retrieve the span of the function signature and generate a new message with
222233
// a local type parameter
223234
let sugg_msg = "try using a local type parameter instead";
224-
if is_self {
225-
// Suggest using the actual type
226-
err.span_label(span, "use a materialized type here instead");
227-
} else if let Some(
228-
(sugg_span, new_snippet),
229-
) = cm.generate_local_type_param_snippet(span) {
235+
if let Some((sugg_span, new_snippet)) = cm.generate_local_type_param_snippet(span) {
230236
// Suggest the modification to the user
231237
err.span_suggestion_with_applicability(
232238
sugg_span,

src/test/ui/error-codes/E0401.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ LL | fn helper(sel: &Self) -> u8 { //~ ERROR E0401
3030
| ^^^^
3131
| |
3232
| use of type variable from outer function
33-
| use a materialized type here instead
33+
| use a type here instead
3434

3535
error: aborting due to 3 previous errors
3636

src/test/ui/issues/issue-12796.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ LL | fn inner(_: &Self) {
55
| ^^^^
66
| |
77
| use of type variable from outer function
8-
| use a materialized type here instead
8+
| can't use `Self` here
99

1010
error: aborting due to previous error
1111

src/test/ui/use-self-in-inner-fn.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ impl A {
1616
fn peach(this: &Self) {
1717
//~^ ERROR can't use type parameters from outer function
1818
//~| NOTE use of type variable from outer function
19-
//~| NOTE use a materialized type here instead
19+
//~| NOTE use a type here instead
2020
}
2121
}
2222
}

src/test/ui/use-self-in-inner-fn.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ LL | fn peach(this: &Self) {
88
| ^^^^
99
| |
1010
| use of type variable from outer function
11-
| use a materialized type here instead
11+
| use a type here instead
1212

1313
error: aborting due to previous error
1414

0 commit comments

Comments
 (0)