private fun do_type_iterator(v: TypeVisitor, mtype: MType)
do
+ if mtype isa MNullType then
+ v.error(self, "Type error: 'for' cannot iterate over 'null'")
+ return
+ end
+
# get obj class
var objcla = v.get_mclass(self, "Object")
if objcla == null then return
# anchor formal and virtual types
if mtype.need_anchor then mtype = v.anchor_to(mtype)
+ if mtype isa MNullableType then mtype = mtype.mtype
self.coltype = mtype.as(MClassType)
# get methods is_ok, next, item
--- /dev/null
+# 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 array
+
+var list: nullable Array[Int] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+#alt1# if true then list = null
+#alt2# list = null
+
+for i in list do i.output
+