summaryrefslogtreecommitdiffstats
path: root/src/test/ui/typeof
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/typeof')
-rw-r--r--src/test/ui/typeof/type_mismatch.rs9
-rw-r--r--src/test/ui/typeof/type_mismatch.stderr28
2 files changed, 37 insertions, 0 deletions
diff --git a/src/test/ui/typeof/type_mismatch.rs b/src/test/ui/typeof/type_mismatch.rs
new file mode 100644
index 000000000..3f8339fa5
--- /dev/null
+++ b/src/test/ui/typeof/type_mismatch.rs
@@ -0,0 +1,9 @@
+// Test that using typeof results in the correct type mismatch errors instead of always assuming
+// `usize`, in addition to the pre-existing "typeof is reserved and unimplemented" error
+fn main() {
+ const a: u8 = 1;
+ let b: typeof(a) = 1i8;
+ //~^ ERROR `typeof` is a reserved keyword but unimplemented
+ //~| ERROR mismatched types
+ //~| expected `u8`, found `i8`
+}
diff --git a/src/test/ui/typeof/type_mismatch.stderr b/src/test/ui/typeof/type_mismatch.stderr
new file mode 100644
index 000000000..e75214cd3
--- /dev/null
+++ b/src/test/ui/typeof/type_mismatch.stderr
@@ -0,0 +1,28 @@
+error[E0516]: `typeof` is a reserved keyword but unimplemented
+ --> $DIR/type_mismatch.rs:5:12
+ |
+LL | let b: typeof(a) = 1i8;
+ | ^^^^^^^^^ reserved keyword
+ |
+help: consider replacing `typeof(...)` with an actual type
+ |
+LL | let b: u8 = 1i8;
+ | ~~
+
+error[E0308]: mismatched types
+ --> $DIR/type_mismatch.rs:5:24
+ |
+LL | let b: typeof(a) = 1i8;
+ | --------- ^^^ expected `u8`, found `i8`
+ | |
+ | expected due to this
+ |
+help: change the type of the numeric literal from `i8` to `u8`
+ |
+LL | let b: typeof(a) = 1u8;
+ | ~~
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0308, E0516.
+For more information about an error, try `rustc --explain E0308`.