From: Jean Privat Date: Sat, 4 Apr 2015 15:50:58 +0000 (+0700) Subject: tests: add base_not_null.nit and base_notnull_lit.nit X-Git-Tag: v0.7.4~37^2~1 X-Git-Url: http://nitlanguage.org tests: add base_not_null.nit and base_notnull_lit.nit Signed-off-by: Jean Privat --- diff --git a/tests/base_notnull.nit b/tests/base_notnull.nit new file mode 100644 index 0000000..133aef1 --- /dev/null +++ b/tests/base_notnull.nit @@ -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 index 0000000..dae4e46 --- /dev/null +++ b/tests/base_notnull_lit.nit @@ -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 index 0000000..1b755df --- /dev/null +++ b/tests/sav/base_notnull.res @@ -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 index 0000000..925e389 --- /dev/null +++ b/tests/sav/base_notnull_1alt1.res @@ -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 index 0000000..8a63507 --- /dev/null +++ b/tests/sav/base_notnull_1alt1_alt1.res @@ -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 index 0000000..a316b82 --- /dev/null +++ b/tests/sav/base_notnull_1alt1_alt2.res @@ -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 index 0000000..d044957 --- /dev/null +++ b/tests/sav/base_notnull_1alt1_alt3.res @@ -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 index 0000000..b0f0ecd --- /dev/null +++ b/tests/sav/base_notnull_1alt1_alt4.res @@ -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 index 0000000..4a50aa8 --- /dev/null +++ b/tests/sav/base_notnull_alt1.res @@ -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 index 0000000..9450e83 --- /dev/null +++ b/tests/sav/base_notnull_alt2.res @@ -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 index 0000000..addd582 --- /dev/null +++ b/tests/sav/base_notnull_alt3.res @@ -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 index 0000000..d0db7c3 --- /dev/null +++ b/tests/sav/base_notnull_alt4.res @@ -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 index 0000000..dc19389 --- /dev/null +++ b/tests/sav/base_notnull_lit.res @@ -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 index 0000000..fac195d --- /dev/null +++ b/tests/sav/base_notnull_lit_alt1.res @@ -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 index 0000000..522489c --- /dev/null +++ b/tests/sav/base_notnull_lit_alt2.res @@ -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 index 0000000..59ec579 --- /dev/null +++ b/tests/sav/nitg-e/base_notnull_lit.res @@ -0,0 +1,4 @@ +Array +156 +Range +12345