Skip to content

Commit 05c8d7b

Browse files
committed
gccrs: Add test cases to close out issues
Fixes #4157 gcc/testsuite/ChangeLog: * rust/compile/issue-4157-1.rs: New test. * rust/compile/issue-4157-2.rs: New test. Signed-off-by: Philip Herron <herron.philip@googlemail.com>
1 parent a8487d8 commit 05c8d7b

2 files changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#![feature(no_core)]
2+
#![no_core]
3+
#![feature(lang_items)]
4+
5+
#[lang = "sized"]
6+
trait Sized {}
7+
8+
struct MyStruct {}
9+
struct Nested {
10+
nested: MyStruct,
11+
}
12+
struct Mix2 {
13+
nested: (Nested,),
14+
}
15+
16+
const MIX_2: Mix2 = Mix2 { nested: ((2,),) };
17+
// { dg-error "mismatched types, expected .Nested. but got" "" { target *-*-* } .-1 }
18+
19+
fn main() {
20+
let f = [0; (MIX_2.nested.0).0];
21+
// { dg-error "expected tuple or tuple struct, found .Nested." "" { target *-*-* } .-1 }
22+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#![feature(no_core)]
2+
#![no_core]
3+
#![feature(lang_items)]
4+
5+
#[lang = "sized"]
6+
trait Sized {}
7+
8+
struct MyStruct {
9+
field: usize,
10+
}
11+
struct Nested {
12+
nested: MyStruct,
13+
}
14+
struct Mix2 {
15+
nested: (Nested,),
16+
}
17+
18+
const STRUCT: MyStruct = MyStruct { field: 42 };
19+
const TUP: (usize,) = (43,);
20+
const NESTED_S: Nested = Nested {
21+
nested: MyStruct { field: 5 },
22+
};
23+
const NESTED_T: ((usize,),) = ((4,),);
24+
const MIX_1: ((Nested,),) = ((MyStruct { field: 3 },),);
25+
// { dg-error "mismatched types, expected .Nested. but got .MyStruct." "" { target *-*-* } .-1 }
26+
const MIX_2: Mix2 = Mix2 { nested: ((2,),) };
27+
// { dg-error "mismatched types, expected .Nested. but got" "" { target *-*-* } .-1 }
28+
const INSTANT_1: usize = (MyStruct { field: 1 }).field;
29+
const INSTANT_2: usize = (4,).0;
30+
31+
fn main() {
32+
let h = [0; STRUCT.field];
33+
let b = [0; TUP.0];
34+
let c = [0; NESTED_S.nested.field];
35+
let d = [0; (NESTED_T.0).0];
36+
let e = [0; (MIX_1.0).0.nested.field];
37+
// { dg-error "failed to resolve TupleIndexExpr receiver" "" { target *-*-* } .-1 }
38+
// { dg-error "expected algebraic data type got .<tyty::error>." "" { target *-*-* } .-2 }
39+
let f = [0; (MIX_2.nested.0).0];
40+
// { dg-error "expected tuple or tuple struct, found .Nested." "" { target *-*-* } .-1 }
41+
let g = [0; INSTANT_1];
42+
let h = [0; INSTANT_2];
43+
}

0 commit comments

Comments
 (0)