#[lang = "sized"] trait Sized {} const M: usize = 4; struct Foo { value: [T; N], } fn main() { let foo = Foo:: { value: [15] }; let foo = Foo:: { value: [15, 13] }; let foo: Foo = Foo { value: [15, 13] }; let foo: Foo = Foo:: { value: [15, 13] }; let foo: Foo = Foo { value: [15, 13] }; let foo = Foo:: { value: [15, 13] }; let foo: Foo = Foo:: { value: [15, 13] }; let foo: Foo = Foo:: { value: [15, 13, 11, 9], }; let invalid_foo: Foo = Foo:: { value: [15, 13] }; // { dg-error {mismatched types, expected ..T=i32; 3.. but got ...integer.; 2.. .E0308.} "" { target *-*-* } .-1 } // { dg-error {mismatched types, expected ..T=i32; 2.. but got ..T=i32; 3.. .E0308.} "" { target *-*-* } .-2 } let invalid_foo: Foo = Foo:: { value: [15, 13] }; // { dg-error {mismatched types, expected ..T=i32; 4.. but got ...integer.; 2.. .E0308.} "" { target *-*-* } .-1 } // { dg-error {mismatched types, expected ..T=i32; 2.. but got ..T=i32; 4.. .E0308.} "" { target *-*-* } .-2 } let invalid_foo: Foo = Foo:: { value: [15, 13] }; // { dg-error {mismatched types, expected ..T=i32; 1.. but got ..T=i32; 2.. .E0308.} "" { target *-*-* } .-1 } }