tests: add base_not_null.nit and base_notnull_lit.nit
authorJean Privat <jean@pryen.org>
Sat, 4 Apr 2015 15:50:58 +0000 (22:50 +0700)
committerJean Privat <jean@pryen.org>
Wed, 8 Apr 2015 00:52:02 +0000 (07:52 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

16 files changed:
tests/base_notnull.nit [new file with mode: 0644]
tests/base_notnull_lit.nit [new file with mode: 0644]
tests/sav/base_notnull.res [new file with mode: 0644]
tests/sav/base_notnull_1alt1.res [new file with mode: 0644]
tests/sav/base_notnull_1alt1_alt1.res [new file with mode: 0644]
tests/sav/base_notnull_1alt1_alt2.res [new file with mode: 0644]
tests/sav/base_notnull_1alt1_alt3.res [new file with mode: 0644]
tests/sav/base_notnull_1alt1_alt4.res [new file with mode: 0644]
tests/sav/base_notnull_alt1.res [new file with mode: 0644]
tests/sav/base_notnull_alt2.res [new file with mode: 0644]
tests/sav/base_notnull_alt3.res [new file with mode: 0644]
tests/sav/base_notnull_alt4.res [new file with mode: 0644]
tests/sav/base_notnull_lit.res [new file with mode: 0644]
tests/sav/base_notnull_lit_alt1.res [new file with mode: 0644]
tests/sav/base_notnull_lit_alt2.res [new file with mode: 0644]
tests/sav/nitg-e/base_notnull_lit.res [new file with mode: 0644]

diff --git a/tests/base_notnull.nit b/tests/base_notnull.nit
new file mode 100644 (file)
index 0000000..133aef1
--- /dev/null
@@ -0,0 +1,43 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import standard::kernel
+
+class A[E] #alt2# class A[E: Object]
+       type V: nullable Object #alt2# type V: Object
+
+       fun foo(e: E, v: E) do #1alt1# fun foo(e: nullable E, v: nullable E) do
+               assert e != null#alt1# #alt3# assert e == null #alt4# if false then e = null
+               assert v != null#alt1# #alt3# assert v == null #alt4# if false then e = null
+               bar(e)
+               bar(v)
+               if e != null then
+                       bar(e)
+               else bar(e)
+               if v != null then
+                       bar(v)
+               else bar(v)
+               bar(e.as(not null))
+               bar(v.as(not null))
+               bar(e or else 0)
+               bar(v or else 0)
+               bar(e or else v)
+               bar(v or else e)
+       end
+
+       fun bar(o: Object) do o.output
+end
+
+var a = new A[Object]
+a.foo (1, 2)
diff --git a/tests/base_notnull_lit.nit b/tests/base_notnull_lit.nit
new file mode 100644 (file)
index 0000000..dae4e46
--- /dev/null
@@ -0,0 +1,40 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+class A[E: nullable Discrete]
+       fun array(e, f: E): Object
+       do
+               assert e != null
+               assert f != null #alt1# #alt2# assert f == null
+               return [e, f]
+       end
+
+       fun range(e, f: E): Object
+       do
+               assert e != null
+               assert f != null #alt1#
+               return [e..f]
+       end
+end
+
+var a = new A[nullable Int]
+
+var ar = a.array(1, 5)
+ar.output_class_name
+ar.as(Array[Int]).add 6
+print ar
+
+var ra = a.range(1, 5)
+ra.output_class_name
+print ra
diff --git a/tests/sav/base_notnull.res b/tests/sav/base_notnull.res
new file mode 100644 (file)
index 0000000..1b755df
--- /dev/null
@@ -0,0 +1,18 @@
+base_notnull.nit:25,6: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:28,6: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:31,7: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:32,7: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:33,7: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:34,7: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:35,7: Warning: expression is not null, since it is a `not null E`.
+base_notnull.nit:36,7: Warning: expression is not null, since it is a `not null E`.
+1
+2
+1
+2
+1
+2
+1
+2
+1
+2
diff --git a/tests/sav/base_notnull_1alt1.res b/tests/sav/base_notnull_1alt1.res
new file mode 100644 (file)
index 0000000..925e389
--- /dev/null
@@ -0,0 +1,18 @@
+alt/base_notnull_1alt1.nit:25,6: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:28,6: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:31,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:32,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:33,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:34,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:35,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1.nit:36,7: Warning: expression is not null, since it is a `not null E`.
+1
+2
+1
+2
+1
+2
+1
+2
+1
+2
diff --git a/tests/sav/base_notnull_1alt1_alt1.res b/tests/sav/base_notnull_1alt1_alt1.res
new file mode 100644 (file)
index 0000000..8a63507
--- /dev/null
@@ -0,0 +1,6 @@
+alt/base_notnull_1alt1_alt1.nit:23,7: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_1alt1_alt1.nit:24,7: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_1alt1_alt1.nit:27,12: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt1.nit:30,12: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt1.nit:35,7--17: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_1alt1_alt1.nit:36,7--17: Type error: expected Object, got nullable E: nullable Object
diff --git a/tests/sav/base_notnull_1alt1_alt2.res b/tests/sav/base_notnull_1alt1_alt2.res
new file mode 100644 (file)
index 0000000..a316b82
--- /dev/null
@@ -0,0 +1,18 @@
+alt/base_notnull_1alt1_alt2.nit:25,6: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:28,6: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:31,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:32,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:33,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:34,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:35,7: Warning: expression is not null, since it is a `not null E`.
+alt/base_notnull_1alt1_alt2.nit:36,7: Warning: expression is not null, since it is a `not null E`.
+1
+2
+1
+2
+1
+2
+1
+2
+1
+2
diff --git a/tests/sav/base_notnull_1alt1_alt3.res b/tests/sav/base_notnull_1alt1_alt3.res
new file mode 100644 (file)
index 0000000..d044957
--- /dev/null
@@ -0,0 +1,16 @@
+alt/base_notnull_1alt1_alt3.nit:23,7: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:24,7: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:26,8: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:27,12: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:29,8: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:30,12: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:31,7--20: Type error: as(not null) on null
+alt/base_notnull_1alt1_alt3.nit:32,7--20: Type error: as(not null) on null
+alt/base_notnull_1alt1_alt3.nit:33,7: Type error: or else on null
+alt/base_notnull_1alt1_alt3.nit:33,7--17: Type error: expected Object, got nullable Int
+alt/base_notnull_1alt1_alt3.nit:34,7: Type error: or else on null
+alt/base_notnull_1alt1_alt3.nit:34,7--17: Type error: expected Object, got nullable Int
+alt/base_notnull_1alt1_alt3.nit:35,7: Type error: or else on null
+alt/base_notnull_1alt1_alt3.nit:35,7--17: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt3.nit:36,7: Type error: or else on null
+alt/base_notnull_1alt1_alt3.nit:36,7--17: Type error: expected Object, got null
diff --git a/tests/sav/base_notnull_1alt1_alt4.res b/tests/sav/base_notnull_1alt1_alt4.res
new file mode 100644 (file)
index 0000000..b0f0ecd
--- /dev/null
@@ -0,0 +1,6 @@
+alt/base_notnull_1alt1_alt4.nit:23,7: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_1alt1_alt4.nit:24,7: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_1alt1_alt4.nit:27,12: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt4.nit:30,12: Type error: expected Object, got null
+alt/base_notnull_1alt1_alt4.nit:35,7--17: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_1alt1_alt4.nit:36,7--17: Type error: expected Object, got nullable E: nullable Object
diff --git a/tests/sav/base_notnull_alt1.res b/tests/sav/base_notnull_alt1.res
new file mode 100644 (file)
index 0000000..4a50aa8
--- /dev/null
@@ -0,0 +1,6 @@
+alt/base_notnull_alt1.nit:23,7: Type error: expected Object, got E: nullable Object
+alt/base_notnull_alt1.nit:24,7: Type error: expected Object, got E: nullable Object
+alt/base_notnull_alt1.nit:27,12: Type error: expected Object, got null
+alt/base_notnull_alt1.nit:30,12: Type error: expected Object, got null
+alt/base_notnull_alt1.nit:35,7--17: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_alt1.nit:36,7--17: Type error: expected Object, got nullable E: nullable Object
diff --git a/tests/sav/base_notnull_alt2.res b/tests/sav/base_notnull_alt2.res
new file mode 100644 (file)
index 0000000..9450e83
--- /dev/null
@@ -0,0 +1,20 @@
+alt/base_notnull_alt2.nit:21,10: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:22,10: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:25,6: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:28,6: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:31,7: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:32,7: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:33,7: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:34,7: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:35,7: Warning: expression is not null, since it is a `E: Object`.
+alt/base_notnull_alt2.nit:36,7: Warning: expression is not null, since it is a `E: Object`.
+1
+2
+1
+2
+1
+2
+1
+2
+1
+2
diff --git a/tests/sav/base_notnull_alt3.res b/tests/sav/base_notnull_alt3.res
new file mode 100644 (file)
index 0000000..addd582
--- /dev/null
@@ -0,0 +1,16 @@
+alt/base_notnull_alt3.nit:23,7: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:24,7: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:26,8: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:27,12: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:29,8: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:30,12: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:31,7--20: Type error: as(not null) on null
+alt/base_notnull_alt3.nit:32,7--20: Type error: as(not null) on null
+alt/base_notnull_alt3.nit:33,7: Type error: or else on null
+alt/base_notnull_alt3.nit:33,7--17: Type error: expected Object, got nullable Int
+alt/base_notnull_alt3.nit:34,7: Type error: or else on null
+alt/base_notnull_alt3.nit:34,7--17: Type error: expected Object, got nullable Int
+alt/base_notnull_alt3.nit:35,7: Type error: or else on null
+alt/base_notnull_alt3.nit:35,7--17: Type error: expected Object, got null
+alt/base_notnull_alt3.nit:36,7: Type error: or else on null
+alt/base_notnull_alt3.nit:36,7--17: Type error: expected Object, got null
diff --git a/tests/sav/base_notnull_alt4.res b/tests/sav/base_notnull_alt4.res
new file mode 100644 (file)
index 0000000..d0db7c3
--- /dev/null
@@ -0,0 +1,6 @@
+alt/base_notnull_alt4.nit:23,7: Type error: expected Object, got E: nullable Object
+alt/base_notnull_alt4.nit:24,7: Type error: expected Object, got E: nullable Object
+alt/base_notnull_alt4.nit:27,12: Type error: expected Object, got null
+alt/base_notnull_alt4.nit:30,12: Type error: expected Object, got null
+alt/base_notnull_alt4.nit:35,7--17: Type error: expected Object, got nullable E: nullable Object
+alt/base_notnull_alt4.nit:36,7--17: Type error: expected Object, got nullable E: nullable Object
diff --git a/tests/sav/base_notnull_lit.res b/tests/sav/base_notnull_lit.res
new file mode 100644 (file)
index 0000000..dc19389
--- /dev/null
@@ -0,0 +1,4 @@
+Array[Int]
+156
+Range[Int]
+12345
diff --git a/tests/sav/base_notnull_lit_alt1.res b/tests/sav/base_notnull_lit_alt1.res
new file mode 100644 (file)
index 0000000..fac195d
--- /dev/null
@@ -0,0 +1 @@
+alt/base_notnull_lit_alt1.nit:27,14: Type error: expected Discrete, got E: nullable Discrete
diff --git a/tests/sav/base_notnull_lit_alt2.res b/tests/sav/base_notnull_lit_alt2.res
new file mode 100644 (file)
index 0000000..522489c
--- /dev/null
@@ -0,0 +1 @@
+Runtime error: Assert failed (alt/base_notnull_lit_alt2.nit:19)
diff --git a/tests/sav/nitg-e/base_notnull_lit.res b/tests/sav/nitg-e/base_notnull_lit.res
new file mode 100644 (file)
index 0000000..59ec579
--- /dev/null
@@ -0,0 +1,4 @@
+Array
+156
+Range
+12345