rust/src/test/ui/issues/issue-66667-function-cmp-cycle.stderr
Aaron Hill ff65bffe2b
Fix cycle error when emitting suggestion for mismatched fn type
Fixes #66667

Previously, we called `tcx.typeck_tables_of` when determining whether or
not to emit a suggestion for a type error. However, we might already be
type-checking the `DefId` we pass to `typeck_tables_of` (it could be
anywhere in the query stack).

Fortunately, we only need the function signature, not the entire
`TypeckTables`. By using `tcx.fn_sig`, we avoid the possibility of cycle
errors while retaining the ability to emit a suggestion.
2020-03-11 15:35:46 -04:00

56 lines
1.5 KiB
Plaintext

error[E0369]: binary operation `==` cannot be applied to type `fn() {second}`
--> $DIR/issue-66667-function-cmp-cycle.rs:2:12
|
LL | second == 1
| ------ ^^ - {integer}
| |
| fn() {second}
error[E0308]: mismatched types
--> $DIR/issue-66667-function-cmp-cycle.rs:2:15
|
LL | second == 1
| ^ expected fn item, found integer
|
= note: expected fn item `fn() {second}`
found type `{integer}`
error[E0369]: binary operation `==` cannot be applied to type `fn() {first}`
--> $DIR/issue-66667-function-cmp-cycle.rs:7:11
|
LL | first == 1
| ----- ^^ - {integer}
| |
| fn() {first}
error[E0308]: mismatched types
--> $DIR/issue-66667-function-cmp-cycle.rs:7:14
|
LL | first == 1
| ^ expected fn item, found integer
|
= note: expected fn item `fn() {first}`
found type `{integer}`
error[E0369]: binary operation `==` cannot be applied to type `fn() {bar}`
--> $DIR/issue-66667-function-cmp-cycle.rs:12:9
|
LL | bar == 1
| --- ^^ - {integer}
| |
| fn() {bar}
error[E0308]: mismatched types
--> $DIR/issue-66667-function-cmp-cycle.rs:12:12
|
LL | bar == 1
| ^ expected fn item, found integer
|
= note: expected fn item `fn() {bar}`
found type `{integer}`
error: aborting due to 6 previous errors
Some errors have detailed explanations: E0308, E0369.
For more information about an error, try `rustc --explain E0308`.