]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/RecordWildcards.scl
(refs #7601) Wildcard syntax for SCL records
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / scl / RecordWildcards.scl
diff --git a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/RecordWildcards.scl b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/RecordWildcards.scl
new file mode 100644 (file)
index 0000000..2ff5245
--- /dev/null
@@ -0,0 +1,27 @@
+import "Prelude"
+
+data XYZ = XYZ { x :: Double, y :: Double, z :: Double }
+deriving instance Show XYZ
+
+updateX x' XYZ {..} = XYZ {x', ..} 
+
+main = print $ updateX 5 $ XYZ { x = 4, y = 3, .. }
+  where
+    z = 2
+-- 
+XYZ 5.0 3.0 2.0
+()
+--
+import "Prelude"
+
+main = ()
+  where
+    constraint R { a :: Integer, b :: Integer, label :: String }
+    
+    -R { a = 0, ..   } => print "Final: b = \(?b), label = \(?label)"
+    -R { ?a,  ?b, .. } => R { a=?a-1, b=?b+1, .. }
+    
+    True => R { a = 5, b = 5, label = "My label" } 
+--
+Final: b = 10, label = My label
+()
\ No newline at end of file