diff graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemErrorsTest.java @ 18782:3ea386a1036f

Truffle-DSL: breaking: @TypeCheck and @TypeCast now require casted/checked type as explicit parameter. Previously the type was parsed from the method name. (GRAAL-446 #resolve)
author Christian Humer <christian.humer@gmail.com>
date Mon, 05 Jan 2015 20:23:22 +0100
parents 64dcb92ee75a
children 7d67a33e1bbb
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemErrorsTest.java	Mon Jan 05 20:23:22 2015 +0100
+++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemErrorsTest.java	Mon Jan 05 20:23:22 2015 +0100
@@ -38,33 +38,82 @@
 
     }
 
-    @TypeSystem({int.class, boolean.class})
-    public static class Types2 {
-
-        @TypeCast
-        @ExpectError("The provided return type \"String\" does not match expected return type \"int\".%")
-        String asInteger(Object value) {
-            return (String) value;
-        }
-
-    }
-
-    @TypeSystem({int.class, boolean.class})
-    public static class Types3 {
-
-        @TypeCast
-        @ExpectError("The provided return type \"boolean\" does not match expected return type \"int\".%")
-        boolean asInteger(Object value) {
-            return (boolean) value;
-        }
-
-    }
-
     @TypeSystemReference(Types0.class)
     @NodeChild
     @ExpectError("The @TypeSystem of the node and the @TypeSystem of the @NodeChild does not match. Types0 != SimpleTypes. ")
     abstract static class ErrorNode1 extends ValueNode {
+    }
 
+    @TypeSystem({int.class})
+    public static class CastError1 {
+        @TypeCast(int.class)
+        @ExpectError("The provided return type \"String\" does not match expected return type \"int\".%")
+        public static String asInteger(Object value) {
+            return (String) value;
+        }
+    }
+
+    @TypeSystem({int.class})
+    public static class CastError2 {
+        @TypeCast(int.class)
+        @ExpectError("The provided return type \"boolean\" does not match expected return type \"int\".%")
+        public static boolean asInteger(Object value) {
+            return (boolean) value;
+        }
+    }
+
+    @TypeSystem({boolean.class})
+    public static class CastError3 {
+        @ExpectError("The type 'int' is not declared in the @TypeSystem.")
+        @TypeCast(int.class)
+        public static int asInt(Object value) {
+            return (int) value;
+        }
+    }
+
+    @TypeSystem({int.class})
+    public static class CastError4 {
+        @ExpectError("@TypeCast annotated method asInt must be public and static.")
+        @TypeCast(int.class)
+        public int asInt(Object value) {
+            return (int) value;
+        }
+    }
+
+    @TypeSystem({int.class})
+    public static class CastError5 {
+        @ExpectError("@TypeCast annotated method asInt must be public and static.")
+        @TypeCast(int.class)
+        static int asInt(Object value) {
+            return (int) value;
+        }
+    }
+
+    @TypeSystem({boolean.class})
+    public static class CheckError1 {
+        @ExpectError("The type 'int' is not declared in the @TypeSystem.")
+        @TypeCheck(int.class)
+        public static boolean isInt(Object value) {
+            return value instanceof Integer;
+        }
+    }
+
+    @TypeSystem({int.class})
+    public static class CheckError2 {
+        @ExpectError("@TypeCheck annotated method isInt must be public and static.")
+        @TypeCheck(int.class)
+        public boolean isInt(Object value) {
+            return value instanceof Integer;
+        }
+    }
+
+    @TypeSystem({int.class})
+    public static class CheckError3 {
+        @ExpectError("@TypeCheck annotated method isInt must be public and static.")
+        @TypeCheck(int.class)
+        static boolean isInt(Object value) {
+            return value instanceof Integer;
+        }
     }
 
 }