Record construction tests
--- /dev/null
+-- !!! Check that using a label belonging to another constructor
+-- !!! is flagged as being incorrect.
+module ShouldFail where
+
+data F
+ = F { x :: Int }
+ | G { y :: Int }
+
+z :: F
+z = F { y = 2 }
+
--- /dev/null
+
+tcfail084.hs:10:
+ Constructor `F' does not have field `y'
+ In the right-hand side of a pattern binding: F {y = 2}
+
+Compilation had errors
+
--- /dev/null
+-- !!! Check that not supplying bindings for strict fields
+-- !!! is flagged as being incorrect.
+module ShouldFail where
+
+data F
+ = F { x :: Int, y :: !Int }
+
+z :: F
+z = F { x = 2 }
+
--- /dev/null
+
+tcfail085.hs:9:
+ Constructor `F' does not have the required strict field `y'
+ In the right-hand side of a pattern binding: F {x = 2}
+
+Compilation had errors
+