summaryrefslogtreecommitdiffstats
path: root/src/test/ui/structs/structure-constructor-type-mismatch.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/structs/structure-constructor-type-mismatch.rs')
-rw-r--r--src/test/ui/structs/structure-constructor-type-mismatch.rs73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/test/ui/structs/structure-constructor-type-mismatch.rs b/src/test/ui/structs/structure-constructor-type-mismatch.rs
new file mode 100644
index 000000000..a03ef590c
--- /dev/null
+++ b/src/test/ui/structs/structure-constructor-type-mismatch.rs
@@ -0,0 +1,73 @@
+struct Point<T> {
+ x: T,
+ y: T,
+}
+
+type PointF = Point<f32>;
+
+struct Pair<T,U> {
+ x: T,
+ y: U,
+}
+
+type PairF<U> = Pair<f32,U>;
+
+fn main() {
+ let pt = PointF {
+ x: 1,
+ //~^ ERROR mismatched types
+ //~| expected `f32`, found integer
+ y: 2,
+ //~^ ERROR mismatched types
+ //~| expected `f32`, found integer
+ };
+
+ let pt2 = Point::<f32> {
+ x: 3,
+ //~^ ERROR mismatched types
+ //~| expected `f32`, found integer
+ y: 4,
+ //~^ ERROR mismatched types
+ //~| expected `f32`, found integer
+ };
+
+ let pair = PairF {
+ x: 5,
+ //~^ ERROR mismatched types
+ //~| expected `f32`, found integer
+ y: 6,
+ };
+
+ let pair2 = PairF::<i32> {
+ x: 7,
+ //~^ ERROR mismatched types
+ //~| expected `f32`, found integer
+ y: 8,
+ };
+
+ let pt3 = PointF::<i32> { //~ ERROR this type alias takes 0 generic arguments but 1 generic argument
+ x: 9, //~ ERROR mismatched types
+ y: 10, //~ ERROR mismatched types
+ };
+
+ match (Point { x: 1, y: 2 }) {
+ PointF::<u32> { .. } => {} //~ ERROR this type alias takes 0 generic arguments but 1 generic argument
+ //~^ ERROR mismatched types
+ }
+
+ match (Point { x: 1, y: 2 }) {
+ PointF { .. } => {} //~ ERROR mismatched types
+ }
+
+ match (Point { x: 1.0, y: 2.0 }) {
+ PointF { .. } => {} // ok
+ }
+
+ match (Pair { x: 1, y: 2 }) {
+ PairF::<u32> { .. } => {} //~ ERROR mismatched types
+ }
+
+ match (Pair { x: 1.0, y: 2 }) {
+ PairF::<u32> { .. } => {} // ok
+ }
+}