diff options
| author | Fabian Wolff <fabian.wolff@alumni.ethz.ch> | 2021-06-11 20:12:40 +0200 |
|---|---|---|
| committer | Fabian Wolff <fabian.wolff@alumni.ethz.ch> | 2021-06-11 23:05:17 +0200 |
| commit | 79dc9a76a6272dc2e080237de27406b1456d7c2c (patch) | |
| tree | cfb55c16266afa3759733d73fbe883b6b499fb25 /src/test | |
| parent | f687d5c43a0c90afba6d3fddab7665772bb0664a (diff) | |
Suggest a FnPtr type if a FnDef type is found
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/suggestions/unnamable-types.rs | 14 | ||||
| -rw-r--r-- | src/test/ui/suggestions/unnamable-types.stderr | 46 |
2 files changed, 33 insertions, 27 deletions
diff --git a/src/test/ui/suggestions/unnamable-types.rs b/src/test/ui/suggestions/unnamable-types.rs index ed70bcf5484..5d0616443e5 100644 --- a/src/test/ui/suggestions/unnamable-types.rs +++ b/src/test/ui/suggestions/unnamable-types.rs @@ -13,21 +13,27 @@ static B: _ = "abc"; //~| HELP: replace with the correct type +// FIXME: this should also suggest a function pointer, as the closure is non-capturing const C: _ = || 42; //~^ ERROR: the type placeholder `_` is not allowed within types on item signatures //~| NOTE: not allowed in type signatures //~| NOTE: however, the inferred type struct S<T> { t: T } -const D = S { t: || -> i32 { 42 } }; +const D = S { t: { let i = 0; move || -> i32 { i } } }; //~^ ERROR: missing type for `const` item //~| NOTE: however, the inferred type + fn foo() -> i32 { 42 } -const E = S { t: foo }; +const E = foo; //~^ ERROR: missing type for `const` item -//~| NOTE: however, the inferred type +//~| HELP: provide a type for the item +const F = S { t: foo }; +//~^ ERROR: missing type for `const` item +//~| HELP: provide a type for the item + -const F = || -> i32 { yield 0; return 1; }; +const G = || -> i32 { yield 0; return 1; }; //~^ ERROR: missing type for `const` item //~| NOTE: however, the inferred type diff --git a/src/test/ui/suggestions/unnamable-types.stderr b/src/test/ui/suggestions/unnamable-types.stderr index 8082707fd3c..2c8166781bf 100644 --- a/src/test/ui/suggestions/unnamable-types.stderr +++ b/src/test/ui/suggestions/unnamable-types.stderr @@ -14,53 +14,53 @@ LL | static B: _ = "abc"; | help: replace with the correct type: `&str` error[E0121]: the type placeholder `_` is not allowed within types on item signatures - --> $DIR/unnamable-types.rs:16:10 + --> $DIR/unnamable-types.rs:17:10 | LL | const C: _ = || 42; | ^ not allowed in type signatures | -note: however, the inferred type `[closure@$DIR/unnamable-types.rs:16:14: 16:19]` cannot be named - --> $DIR/unnamable-types.rs:16:14 +note: however, the inferred type `[closure@$DIR/unnamable-types.rs:17:14: 17:19]` cannot be named + --> $DIR/unnamable-types.rs:17:14 | LL | const C: _ = || 42; | ^^^^^ error: missing type for `const` item - --> $DIR/unnamable-types.rs:22:7 + --> $DIR/unnamable-types.rs:23:7 | -LL | const D = S { t: || -> i32 { 42 } }; +LL | const D = S { t: { let i = 0; move || -> i32 { i } } }; | ^ | -note: however, the inferred type `S<[closure@$DIR/unnamable-types.rs:22:18: 22:34]>` cannot be named - --> $DIR/unnamable-types.rs:22:11 +note: however, the inferred type `S<[closure@$DIR/unnamable-types.rs:23:31: 23:51]>` cannot be named + --> $DIR/unnamable-types.rs:23:11 | -LL | const D = S { t: || -> i32 { 42 } }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | const D = S { t: { let i = 0; move || -> i32 { i } } }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: missing type for `const` item - --> $DIR/unnamable-types.rs:27:7 + --> $DIR/unnamable-types.rs:29:7 | -LL | const E = S { t: foo }; - | ^ - | -note: however, the inferred type `S<fn() -> i32 {foo}>` cannot be named - --> $DIR/unnamable-types.rs:27:11 +LL | const E = foo; + | ^ help: provide a type for the item: `E: fn() -> i32` + +error: missing type for `const` item + --> $DIR/unnamable-types.rs:32:7 | -LL | const E = S { t: foo }; - | ^^^^^^^^^^^^ +LL | const F = S { t: foo }; + | ^ help: provide a type for the item: `F: S<fn() -> i32>` error: missing type for `const` item - --> $DIR/unnamable-types.rs:31:7 + --> $DIR/unnamable-types.rs:37:7 | -LL | const F = || -> i32 { yield 0; return 1; }; +LL | const G = || -> i32 { yield 0; return 1; }; | ^ | -note: however, the inferred type `[generator@$DIR/unnamable-types.rs:31:11: 31:43 {i32, ()}]` cannot be named - --> $DIR/unnamable-types.rs:31:11 +note: however, the inferred type `[generator@$DIR/unnamable-types.rs:37:11: 37:43 {i32, ()}]` cannot be named + --> $DIR/unnamable-types.rs:37:11 | -LL | const F = || -> i32 { yield 0; return 1; }; +LL | const G = || -> i32 { yield 0; return 1; }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: aborting due to 6 previous errors +error: aborting due to 7 previous errors For more information about this error, try `rustc --explain E0121`. |
