
Namely, use a more sensical primary span. Don't pretty-print AST nodes for the diagnostic message. Why: * It's lossy (e.g., it doesn't replicate trailing `+`s in trait objects. * It's prone to leak error nodes (printed as `(/*ERROR*/)`) since the LHS can easily represent recovered code (e.g., `fn(i32?) + T`).
121 lines
2.7 KiB
Text
121 lines
2.7 KiB
Text
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:23:18
|
|
|
|
|
LL | type A = fn() -> impl A +;
|
|
| ^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = fn() -> (impl A +);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:25:18
|
|
|
|
|
LL | type A = fn() -> impl A + B;
|
|
| ^^^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = fn() -> (impl A + B);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:27:18
|
|
|
|
|
LL | type A = fn() -> dyn A + B;
|
|
| ^^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = fn() -> (dyn A + B);
|
|
| + +
|
|
|
|
error[E0178]: expected a path on the left-hand side of `+`
|
|
--> $DIR/impl-trait-plus-priority.rs:29:10
|
|
|
|
|
LL | type A = fn() -> A + B;
|
|
| ^^^^^^^^^----
|
|
| |
|
|
| perhaps you forgot parentheses?
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:32:18
|
|
|
|
|
LL | type A = Fn() -> impl A +;
|
|
| ^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = Fn() -> (impl A +);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:34:18
|
|
|
|
|
LL | type A = Fn() -> impl A + B;
|
|
| ^^^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = Fn() -> (impl A + B);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:36:18
|
|
|
|
|
LL | type A = Fn() -> dyn A + B;
|
|
| ^^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = Fn() -> (dyn A + B);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:40:11
|
|
|
|
|
LL | type A = &impl A +;
|
|
| ^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = &(impl A +);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:42:11
|
|
|
|
|
LL | type A = &impl A + B;
|
|
| ^^^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = &(impl A + B);
|
|
| + +
|
|
|
|
error: ambiguous `+` in a type
|
|
--> $DIR/impl-trait-plus-priority.rs:44:11
|
|
|
|
|
LL | type A = &dyn A + B;
|
|
| ^^^^^^^^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = &(dyn A + B);
|
|
| + +
|
|
|
|
error[E0178]: expected a path on the left-hand side of `+`
|
|
--> $DIR/impl-trait-plus-priority.rs:46:10
|
|
|
|
|
LL | type A = &A + B;
|
|
| ^^
|
|
|
|
|
help: try adding parentheses
|
|
|
|
|
LL | type A = &(A + B);
|
|
| + +
|
|
|
|
error: aborting due to 11 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0178`.
|