Merge: doc: fixed some typos and other misc. corrections
[nit.git] / tests / base_notnull.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 import core::kernel
16
17 class A[E] #alt2# class A[E: Object]
18 type V: nullable Object #alt2# type V: Object
19
20 fun foo(e: E, v: E) do #1alt1# fun foo(e: nullable E, v: nullable E) do
21 assert e != null#alt1# #alt3# assert e == null #alt4# if false then e = null
22 assert v != null#alt1# #alt3# assert v == null #alt4# if false then e = null
23 bar(e)
24 bar(v)
25 if e != null then
26 bar(e)
27 else bar(e)
28 if v != null then
29 bar(v)
30 else bar(v)
31 bar(e.as(not null))
32 bar(v.as(not null))
33 bar(e or else 0)
34 bar(v or else 0)
35 bar(e or else v)
36 bar(v or else e)
37 end
38
39 fun bar(o: Object) do o.output
40 end
41
42 var a = new A[Object]
43 a.foo (1, 2)