diff options
author | Muhammad Mahad <mahadtxt@gmail.com> | 2023-08-02 16:21:15 +0500 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 19:00:26 +0100 |
commit | 5db4f84f883513ff062f77c7eca5fdceeb58c825 (patch) | |
tree | 25adea1b6df97ad3670614a8bb894a7b4b2fdb0b /gcc/testsuite/rust/compile | |
parent | 8b1e1faa7f2eec13df511fa76d181337efb14f4d (diff) | |
download | gcc-5db4f84f883513ff062f77c7eca5fdceeb58c825.zip gcc-5db4f84f883513ff062f77c7eca5fdceeb58c825.tar.gz gcc-5db4f84f883513ff062f77c7eca5fdceeb58c825.tar.bz2 |
gccrs: [E0308] mismatch types on assignment
This errorcode emits when there are
mismatch types between lhs & rhs of
assignment operator & refactored
message. This error code was used
in many test cases, so updated the
error comments.
gcc/rust/ChangeLog:
* typecheck/rust-unify.cc (UnifyRules::emit_type_mismatch):
refactored & called error function.
gcc/testsuite/ChangeLog:
* rust/compile/arrays1.rs: changed comment to pass testcase.
* rust/compile/bad_type1.rs: likewise.
* rust/compile/bad_type2.rs: likewise.
* rust/compile/const_generics_6.rs: likewise.
* rust/compile/deadcode_err1.rs: likewise.
* rust/compile/deadcode_err2.rs: likewise.
* rust/compile/func1.rs: likewise.
* rust/compile/func3.rs: likewise.
* rust/compile/func4.rs: likewise.
* rust/compile/func5.rs: likewise.
* rust/compile/generics1.rs: likewise.
* rust/compile/generics2.rs: likewise.
* rust/compile/generics3.rs: likewise.
* rust/compile/implicit_returns_err1.rs: likewise.
* rust/compile/implicit_returns_err2.rs: likewise.
* rust/compile/implicit_returns_err3.rs: likewise.
* rust/compile/implicit_returns_err4.rs: likewise.
* rust/compile/issue-1152.rs: likewise.
* rust/compile/issue-2477.rs: likewise.
* rust/compile/reference1.rs: likewise.
* rust/compile/stmt_with_block_err1.rs: likewise.
* rust/compile/traits1.rs: likewise.
* rust/compile/traits2.rs: likewise.
* rust/compile/tuple_mismatch.rs: likewise.
* rust/compile/tuple_struct3.rs: likewise.
* rust/compile/mismatched-types.rs: New test from rustc.
Signed-off-by: Muhammad Mahad <mahadtxt@gmail.com>
Diffstat (limited to 'gcc/testsuite/rust/compile')
26 files changed, 38 insertions, 29 deletions
diff --git a/gcc/testsuite/rust/compile/arrays1.rs b/gcc/testsuite/rust/compile/arrays1.rs index 714a6be..2db5667 100644 --- a/gcc/testsuite/rust/compile/arrays1.rs +++ b/gcc/testsuite/rust/compile/arrays1.rs @@ -1,4 +1,4 @@ fn main() { let xs: [i32; 5] = [1, 2, 3, 4, 5]; - let a: bool = xs[0]; // { dg-error "expected .bool. got .i32." } + let a: bool = xs[0]; // { dg-error "mismatched types, expected .bool. but got .i32." } } diff --git a/gcc/testsuite/rust/compile/bad_type1.rs b/gcc/testsuite/rust/compile/bad_type1.rs index 93de439..88ab13b 100644 --- a/gcc/testsuite/rust/compile/bad_type1.rs +++ b/gcc/testsuite/rust/compile/bad_type1.rs @@ -1,3 +1,3 @@ fn main() { - let logical: bool = 123; // { dg-error "expected .bool. got .<integer>." } + let logical: bool = 123; // { dg-error "mismatched types, expected .bool. but got .<integer>." } } diff --git a/gcc/testsuite/rust/compile/bad_type2.rs b/gcc/testsuite/rust/compile/bad_type2.rs index e47b8aa..0fe3206 100644 --- a/gcc/testsuite/rust/compile/bad_type2.rs +++ b/gcc/testsuite/rust/compile/bad_type2.rs @@ -8,7 +8,7 @@ fn main() { let mut x; x = 1; - x = true; // { dg-error "expected .<integer>. got .bool." } + x = true; // { dg-error "mismatched types, expected .<integer>. but got .bool." } let call_test = test(1); } diff --git a/gcc/testsuite/rust/compile/const_generics_6.rs b/gcc/testsuite/rust/compile/const_generics_6.rs index de26123..b810b95 100644 --- a/gcc/testsuite/rust/compile/const_generics_6.rs +++ b/gcc/testsuite/rust/compile/const_generics_6.rs @@ -1,2 +1,2 @@ struct Foo<const N: usize>; -struct Bar<const N: usize = { 15i32 }>; // { dg-error "expected .usize. got .i32." } +struct Bar<const N: usize = { 15i32 }>; // { dg-error "mismatched types, expected .usize. but got .i32." } diff --git a/gcc/testsuite/rust/compile/deadcode_err1.rs b/gcc/testsuite/rust/compile/deadcode_err1.rs index 1dbe957..e77cef6 100644 --- a/gcc/testsuite/rust/compile/deadcode_err1.rs +++ b/gcc/testsuite/rust/compile/deadcode_err1.rs @@ -3,7 +3,7 @@ fn foo() -> i32 { let mut a = 1; // { dg-warning "unreachable statement" } a = 1.1; // { dg-warning "unreachable statement" } - // { dg-error "expected .<integer>. got .<float>." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .<integer>. but got .<float>." "" { target *-*-* } .-1 } } fn main() { diff --git a/gcc/testsuite/rust/compile/deadcode_err2.rs b/gcc/testsuite/rust/compile/deadcode_err2.rs index 8c0eb46..832fe99 100644 --- a/gcc/testsuite/rust/compile/deadcode_err2.rs +++ b/gcc/testsuite/rust/compile/deadcode_err2.rs @@ -1,11 +1,11 @@ fn foo() -> i32 { return 1; - return 1.5; // { dg-error "expected .i32. got .<float>." } + return 1.5; // { dg-error "mismatched types, expected .i32. but got .<float>." } // { dg-warning "unreachable statement" "" { target *-*-* } .-1 } } fn bar() -> i32 { - return 1.5; // { dg-error "expected .i32. got .<float>." } + return 1.5; // { dg-error "mismatched types, expected .i32. but got .<float>." } return 1; // { dg-warning "unreachable statement" "" { target *-*-* } .-1 } } diff --git a/gcc/testsuite/rust/compile/func1.rs b/gcc/testsuite/rust/compile/func1.rs index 6758a38..037d377 100644 --- a/gcc/testsuite/rust/compile/func1.rs +++ b/gcc/testsuite/rust/compile/func1.rs @@ -1,5 +1,5 @@ fn test(x: i32) -> bool { - return x + 1; // { dg-error "expected .bool. got .i32." } + return x + 1; // { dg-error "mismatched types, expected .bool. but got .i32." } } fn main() { diff --git a/gcc/testsuite/rust/compile/func3.rs b/gcc/testsuite/rust/compile/func3.rs index 002e5c9..338971a 100644 --- a/gcc/testsuite/rust/compile/func3.rs +++ b/gcc/testsuite/rust/compile/func3.rs @@ -4,5 +4,5 @@ fn test(a: i32, b: i32) -> i32 { fn main() { let a = test(1, true); - // { dg-error "expected .i32. got .bool." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .i32. but got .bool." "" { target *-*-* } .-1 } } diff --git a/gcc/testsuite/rust/compile/func4.rs b/gcc/testsuite/rust/compile/func4.rs index 3b2d2b0..1b54878 100644 --- a/gcc/testsuite/rust/compile/func4.rs +++ b/gcc/testsuite/rust/compile/func4.rs @@ -1,4 +1,4 @@ -fn func() -> i32 { // { dg-error "expected .i32. got ...." } +fn func() -> i32 { // { dg-error "mismatched types, expected .i32. but got ...." } } fn main() { diff --git a/gcc/testsuite/rust/compile/func5.rs b/gcc/testsuite/rust/compile/func5.rs index 05624f5..6f418a2 100644 --- a/gcc/testsuite/rust/compile/func5.rs +++ b/gcc/testsuite/rust/compile/func5.rs @@ -1,5 +1,5 @@ fn func() -> i32 { - return; // { dg-error "expected .i32. got ...." } + return; // { dg-error "mismatched types, expected .i32. but got ...." } } fn main() { diff --git a/gcc/testsuite/rust/compile/generics1.rs b/gcc/testsuite/rust/compile/generics1.rs index e9bdb3a..9e440af 100644 --- a/gcc/testsuite/rust/compile/generics1.rs +++ b/gcc/testsuite/rust/compile/generics1.rs @@ -1,4 +1,4 @@ -// { dg-error "expected .i32. got .i8." "" { target *-*-* } 0 } +// { dg-error "mismatched types, expected .i32. but got .i8." "" { target *-*-* } 0 } #[lang = "sized"] pub trait Sized {} diff --git a/gcc/testsuite/rust/compile/generics2.rs b/gcc/testsuite/rust/compile/generics2.rs index fc203ab..4c95fd1 100644 --- a/gcc/testsuite/rust/compile/generics2.rs +++ b/gcc/testsuite/rust/compile/generics2.rs @@ -1,4 +1,4 @@ -// { dg-error "expected .i32. got .i8." "" { target *-*-* } 0 } +// { dg-error "mismatched types, expected .i32. but got .i8." "" { target *-*-* } 0 } #[lang = "sized"] pub trait Sized {} diff --git a/gcc/testsuite/rust/compile/generics3.rs b/gcc/testsuite/rust/compile/generics3.rs index e28953c..514d713 100644 --- a/gcc/testsuite/rust/compile/generics3.rs +++ b/gcc/testsuite/rust/compile/generics3.rs @@ -1,4 +1,4 @@ -// { dg-error "expected .i32. got .i8." "" { target *-*-* } 0 } +// { dg-error "mismatched types, expected .i32. but got .i8." "" { target *-*-* } 0 } #[lang = "sized"] pub trait Sized {} diff --git a/gcc/testsuite/rust/compile/implicit_returns_err1.rs b/gcc/testsuite/rust/compile/implicit_returns_err1.rs index 973ba80..1e89854 100644 --- a/gcc/testsuite/rust/compile/implicit_returns_err1.rs +++ b/gcc/testsuite/rust/compile/implicit_returns_err1.rs @@ -1,5 +1,5 @@ fn test(x: i32) -> i32 { - if x > 1 { // { dg-error "expected .... got .<integer>." } + if x > 1 { // { dg-error "mismatched types, expected .... but got .<integer>." } 1 } else { 2 diff --git a/gcc/testsuite/rust/compile/implicit_returns_err2.rs b/gcc/testsuite/rust/compile/implicit_returns_err2.rs index fb90748..8d9e6e3 100644 --- a/gcc/testsuite/rust/compile/implicit_returns_err2.rs +++ b/gcc/testsuite/rust/compile/implicit_returns_err2.rs @@ -1,5 +1,5 @@ fn test(x: i32) -> i32 { - // { dg-error "expected .i32. got .bool." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .i32. but got .bool." "" { target *-*-* } .-1 } return 1; // { dg-warning "unreachable expression" "" { target *-*-* } .+1 } true diff --git a/gcc/testsuite/rust/compile/implicit_returns_err3.rs b/gcc/testsuite/rust/compile/implicit_returns_err3.rs index 37b1c62..ac98213 100644 --- a/gcc/testsuite/rust/compile/implicit_returns_err3.rs +++ b/gcc/testsuite/rust/compile/implicit_returns_err3.rs @@ -1,4 +1,4 @@ -fn test(x: i32) -> i32 { // { dg-error "expected .i32. got ...." } +fn test(x: i32) -> i32 { // { dg-error "mismatched types, expected .i32. but got ...." } if x > 1 { 1 } diff --git a/gcc/testsuite/rust/compile/implicit_returns_err4.rs b/gcc/testsuite/rust/compile/implicit_returns_err4.rs index 59c6a020..16a2f4c 100644 --- a/gcc/testsuite/rust/compile/implicit_returns_err4.rs +++ b/gcc/testsuite/rust/compile/implicit_returns_err4.rs @@ -1,5 +1,5 @@ fn test(x: bool) -> bool { - // { dg-error "expected .bool. got ...." "" { target *-*-*} .-1 } + // { dg-error "mismatched types, expected .bool. but got ...." "" { target *-*-*} .-1 } return x; // { dg-warning "unreachable expression" "" { target *-*-* } .+1 } () diff --git a/gcc/testsuite/rust/compile/issue-1152.rs b/gcc/testsuite/rust/compile/issue-1152.rs index 1569705..32908c3 100644 --- a/gcc/testsuite/rust/compile/issue-1152.rs +++ b/gcc/testsuite/rust/compile/issue-1152.rs @@ -1,6 +1,6 @@ fn test() { let f = [0; -4_isize]; - // { dg-error "expected .usize. got .isize." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .usize. but got .isize." "" { target *-*-* } .-1 } let f = [0_usize; -1_isize]; - // { dg-error "expected .usize. got .isize." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .usize. but got .isize." "" { target *-*-* } .-1 } } diff --git a/gcc/testsuite/rust/compile/issue-2477.rs b/gcc/testsuite/rust/compile/issue-2477.rs index 26831a6..ca13ac5 100644 --- a/gcc/testsuite/rust/compile/issue-2477.rs +++ b/gcc/testsuite/rust/compile/issue-2477.rs @@ -1,3 +1,3 @@ const FOO: u32 = return 0; // { dg-error "return statement outside of function body" "" { target *-*-* } .-1 } -// { dg-error "expected .u32. got" "" { target *-*-* } .-2 } +// { dg-error "mismatched types, expected .u32. but got" "" { target *-*-* } .-2 } diff --git a/gcc/testsuite/rust/compile/mismatched-types.rs b/gcc/testsuite/rust/compile/mismatched-types.rs new file mode 100644 index 0000000..08c7512 --- /dev/null +++ b/gcc/testsuite/rust/compile/mismatched-types.rs @@ -0,0 +1,9 @@ +// ErrorCode::E0308 +#![allow(unused)] +fn main() { + fn plus_one(x: i32) -> i32 { + x + 1 + } + plus_one("Not a number"); // { dg-error "mismatched types, expected .i32. but got .& str." } + let x: f32 = "Not a float"; // { dg-error "mismatched types, expected .f32. but got .& str." } +} diff --git a/gcc/testsuite/rust/compile/reference1.rs b/gcc/testsuite/rust/compile/reference1.rs index ff79153..2f94754 100644 --- a/gcc/testsuite/rust/compile/reference1.rs +++ b/gcc/testsuite/rust/compile/reference1.rs @@ -2,5 +2,5 @@ fn main() { let a = &123; let b: &mut i32 = a; // { dg-error "mismatched mutability" "" { target *-*-* } .-1 } - // { dg-error "expected .&mut i32. got .& i32." "" { target *-*-* } .-2 } + // { dg-error "mismatched types, expected .&mut i32. but got .& i32." "" { target *-*-* } .-2 } } diff --git a/gcc/testsuite/rust/compile/stmt_with_block_err1.rs b/gcc/testsuite/rust/compile/stmt_with_block_err1.rs index 8780d0f..ec75cae 100644 --- a/gcc/testsuite/rust/compile/stmt_with_block_err1.rs +++ b/gcc/testsuite/rust/compile/stmt_with_block_err1.rs @@ -1,11 +1,11 @@ fn test(x: i32) -> i32 { - if x > 1 { // { dg-error "expected .... got .<integer>." } + if x > 1 { // { dg-error "mismatched types, expected .... but got .<integer>." } 1 } else { 2 } - { // { dg-error "expected .... got .<integer>." } + { // { dg-error "mismatched types, expected .... but got .<integer>." } 3 } diff --git a/gcc/testsuite/rust/compile/traits1.rs b/gcc/testsuite/rust/compile/traits1.rs index 68f5abb..779662c 100644 --- a/gcc/testsuite/rust/compile/traits1.rs +++ b/gcc/testsuite/rust/compile/traits1.rs @@ -3,7 +3,7 @@ pub trait Sized {} trait Foo { fn Bar() -> i32 {} - // { dg-error "expected .i32. got .()." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .i32. but got .()." "" { target *-*-* } .-1 } } struct Baz; diff --git a/gcc/testsuite/rust/compile/traits2.rs b/gcc/testsuite/rust/compile/traits2.rs index 3631a09..a76f4c0 100644 --- a/gcc/testsuite/rust/compile/traits2.rs +++ b/gcc/testsuite/rust/compile/traits2.rs @@ -3,14 +3,14 @@ pub trait Sized {} trait Foo { fn Bar() -> i32 {} - // { dg-error "expected .i32. got .()." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .i32. but got .()." "" { target *-*-* } .-1 } } struct Baz; impl Foo for Baz { fn Bar() {} - // { dg-error "expected" "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected" "" { target *-*-* } .-1 } // { dg-error "method .Bar. has an incompatible type for trait .Foo." "" { target *-*-* } .-2 } } diff --git a/gcc/testsuite/rust/compile/tuple_mismatch.rs b/gcc/testsuite/rust/compile/tuple_mismatch.rs index fbeb4b2..828586b 100644 --- a/gcc/testsuite/rust/compile/tuple_mismatch.rs +++ b/gcc/testsuite/rust/compile/tuple_mismatch.rs @@ -7,7 +7,7 @@ fn main() { // The lhs and rhs sizes don't match, but we still resolve 'a' to be bool, we don't // error out immediately once we notice the size mismatch. -fn foo() -> i32 { // { dg-error "expected .i32. got .bool." } +fn foo() -> i32 { // { dg-error "mismatched types, expected .i32. but got .bool." } let (a, _) = (true, 2, 3); // { dg-error "expected a tuple with 3 elements, found one with 2 elements" } a } diff --git a/gcc/testsuite/rust/compile/tuple_struct3.rs b/gcc/testsuite/rust/compile/tuple_struct3.rs index 4af66b8..e2fb02f 100644 --- a/gcc/testsuite/rust/compile/tuple_struct3.rs +++ b/gcc/testsuite/rust/compile/tuple_struct3.rs @@ -2,5 +2,5 @@ struct Foo(i32, i32, bool); fn main() { let c = Foo(1, 2f32, true); - // { dg-error "expected .i32. got .f32." "" { target *-*-* } .-1 } + // { dg-error "mismatched types, expected .i32. but got .f32." "" { target *-*-* } .-1 } } |