]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/PolymorphicRecursion.scl
Automatic execution of SCL tests in Maven
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / scl / PolymorphicRecursion.scl
diff --git a/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/PolymorphicRecursion.scl b/tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/scl/PolymorphicRecursion.scl
new file mode 100644 (file)
index 0000000..ed84193
--- /dev/null
@@ -0,0 +1,16 @@
+// Idea here is to test the following property:\r
+// When a function is called recursively it has locally a monomorphic type.\r
+// Therefore the definition of cons does not work even if it works\r
+// with a proper type annotation.\r
+\r
+data Vec a = Nil | Zero (Vec (a,a)) | One a (Vec (a,a))\r
+\r
+// cons :: a -> Vec a -> Vec a\r
+cons x Nil        = One x Nil\r
+cons x (Zero ps)  = One x ps\r
+cons x (One y ps) = Zero (cons (x, y) ps)\r
+--\r
+11:21-11:42: Expected <Vec (a, a)> got <Vec a>.\r
+11:33-11:34: Type (a, a) is not a subtype of a.\r
+11:36-11:37: Type (a, a) is not a subtype of a.\r
+11:39-11:41: Expected <Vec a> got <Vec (a, a)>.
\ No newline at end of file