about summary refs log tree commit diff
path: root/tests/ui/inference
diff options
context:
space:
mode:
authorLeón Orell Valerian Liehr <me@fmease.dev>2024-05-28 04:15:54 +0200
committerLeón Orell Valerian Liehr <me@fmease.dev>2024-05-28 09:40:02 +0200
commit27cdc0df4e73b76466c72ae69ab6545f84089ad2 (patch)
tree1d08887d49c450dbc673d039de259a1301cce98d /tests/ui/inference
parent0a59f113629aafb6e5ee55ad04a2d451a11d8466 (diff)
downloadrust-27cdc0df4e73b76466c72ae69ab6545f84089ad2.tar.gz
rust-27cdc0df4e73b76466c72ae69ab6545f84089ad2.zip
Don't suggest turning non-char-literal exprs of ty `char` into string literals
Diffstat (limited to 'tests/ui/inference')
-rw-r--r--tests/ui/inference/str-as-char-butchered.rs7
-rw-r--r--tests/ui/inference/str-as-char-butchered.stderr22
-rw-r--r--tests/ui/inference/str-as-char-non-lit.rs9
-rw-r--r--tests/ui/inference/str-as-char-non-lit.stderr19
4 files changed, 57 insertions, 0 deletions
diff --git a/tests/ui/inference/str-as-char-butchered.rs b/tests/ui/inference/str-as-char-butchered.rs
new file mode 100644
index 00000000000..6020cd3422f
--- /dev/null
+++ b/tests/ui/inference/str-as-char-butchered.rs
@@ -0,0 +1,7 @@
+// issue: rust-lang/rust#125081
+
+fn main() {
+    let _: &str = 'β;
+    //~^ ERROR expected `while`, `for`, `loop` or `{` after a label
+    //~| ERROR mismatched types
+}
diff --git a/tests/ui/inference/str-as-char-butchered.stderr b/tests/ui/inference/str-as-char-butchered.stderr
new file mode 100644
index 00000000000..ad465f979d4
--- /dev/null
+++ b/tests/ui/inference/str-as-char-butchered.stderr
@@ -0,0 +1,22 @@
+error: expected `while`, `for`, `loop` or `{` after a label
+  --> $DIR/str-as-char-butchered.rs:4:21
+   |
+LL |     let _: &str = 'β;
+   |                     ^ expected `while`, `for`, `loop` or `{` after a label
+   |
+help: add `'` to close the char literal
+   |
+LL |     let _: &str = 'β';
+   |                     +
+
+error[E0308]: mismatched types
+  --> $DIR/str-as-char-butchered.rs:4:19
+   |
+LL |     let _: &str = 'β;
+   |            ----   ^^ expected `&str`, found `char`
+   |            |
+   |            expected due to this
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/inference/str-as-char-non-lit.rs b/tests/ui/inference/str-as-char-non-lit.rs
new file mode 100644
index 00000000000..d38b46630dc
--- /dev/null
+++ b/tests/ui/inference/str-as-char-non-lit.rs
@@ -0,0 +1,9 @@
+// Don't suggest double quotes when encountering an expr of type `char` where a `&str`
+// is expected if the expr is not a char literal.
+// issue: rust-lang/rust#125595
+
+fn main() {
+    let _: &str = ('a'); //~ ERROR mismatched types
+    let token = || 'a';
+    let _: &str = token(); //~ ERROR mismatched types
+}
diff --git a/tests/ui/inference/str-as-char-non-lit.stderr b/tests/ui/inference/str-as-char-non-lit.stderr
new file mode 100644
index 00000000000..7675fe01330
--- /dev/null
+++ b/tests/ui/inference/str-as-char-non-lit.stderr
@@ -0,0 +1,19 @@
+error[E0308]: mismatched types
+  --> $DIR/str-as-char-non-lit.rs:6:19
+   |
+LL |     let _: &str = ('a');
+   |            ----   ^^^^^ expected `&str`, found `char`
+   |            |
+   |            expected due to this
+
+error[E0308]: mismatched types
+  --> $DIR/str-as-char-non-lit.rs:8:19
+   |
+LL |     let _: &str = token();
+   |            ----   ^^^^^^^ expected `&str`, found `char`
+   |            |
+   |            expected due to this
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0308`.