aboutsummaryrefslogtreecommitdiff
path: root/tests/iii/implicit-conversion-errors
diff options
context:
space:
mode:
Diffstat (limited to 'tests/iii/implicit-conversion-errors')
-rw-r--r--tests/iii/implicit-conversion-errors/case.json24
-rw-r--r--tests/iii/implicit-conversion-errors/program.cps48
2 files changed, 72 insertions, 0 deletions
diff --git a/tests/iii/implicit-conversion-errors/case.json b/tests/iii/implicit-conversion-errors/case.json
new file mode 100644
index 0000000..a004af2
--- /dev/null
+++ b/tests/iii/implicit-conversion-errors/case.json
@@ -0,0 +1,24 @@
+{
+ "errors": [
+ {
+ "line": 28,
+ "reason": "Cannot use a value of type INTEGER where ExplicitOnly is expected"
+ },
+ {
+ "line": 29,
+ "reason": "Cannot use a value of type INTEGER where Second is expected"
+ },
+ {
+ "line": 30,
+ "reason": "BYREF argument I to Ref must be of type First"
+ },
+ {
+ "line": 41,
+ "reason": "Ambiguous call to Ambiguous"
+ },
+ {
+ "line": 48,
+ "reason": "Cannot access private method NEW"
+ }
+ ]
+}
diff --git a/tests/iii/implicit-conversion-errors/program.cps b/tests/iii/implicit-conversion-errors/program.cps
new file mode 100644
index 0000000..6297b16
--- /dev/null
+++ b/tests/iii/implicit-conversion-errors/program.cps
@@ -0,0 +1,48 @@
+CLASS ExplicitOnly
+ Value : INTEGER
+ PROCEDURE NEW(Number : INTEGER)
+ Value <- Number
+ ENDPROCEDURE
+ENDCLASS
+CLASS First
+ Value : INTEGER
+ IMPLICIT PROCEDURE NEW(Number : INTEGER)
+ Value <- Number
+ ENDPROCEDURE
+ENDCLASS
+CLASS Second
+ Value : INTEGER
+ IMPLICIT PROCEDURE NEW(Other : First)
+ Value <- Other.Value
+ ENDPROCEDURE
+ENDCLASS
+OVERLOAD PROCEDURE Choose(Value : First)
+ENDPROCEDURE
+OVERLOAD PROCEDURE Choose(Value : Second)
+ENDPROCEDURE
+PROCEDURE Ref(BYREF Value : First)
+ENDPROCEDURE
+DECLARE E : ExplicitOnly(1)
+DECLARE S : Second
+DECLARE I : INTEGER
+E <- 1
+S <- 1
+CALL Ref(I)
+CLASS Alternative
+ Value : INTEGER
+ IMPLICIT PROCEDURE NEW(Number : INTEGER)
+ Value <- Number
+ ENDPROCEDURE
+ENDCLASS
+OVERLOAD PROCEDURE Ambiguous(Value : First)
+ENDPROCEDURE
+OVERLOAD PROCEDURE Ambiguous(Value : Alternative)
+ENDPROCEDURE
+CALL Ambiguous(1)
+CLASS Hidden
+ PRIVATE IMPLICIT PROCEDURE NEW(Number : INTEGER)
+ ENDPROCEDURE
+ENDCLASS
+PROCEDURE HiddenArg(Value : Hidden)
+ENDPROCEDURE
+CALL HiddenArg(1)