parser: `Visitor::visit` does not accepts `null`
[nit.git] / src / program.nit
index c4a18ec..728b7ce 100644 (file)
@@ -91,16 +91,19 @@ class Program
                                        var iroutine = new IRoutine(iselfa, null)
                                        var icb = new ICodeBuilder(main_module, iroutine)
 
-                                       for g in c.global_properties do
-                                               if not g.intro isa MMAttribute then continue
-                                               var p = c[g]
-                                               var t = p.signature.return_type
-                                               if p isa MMAttribute and t != null then
-                                                       var ir = p.iroutine
-                                                       if ir == null then continue
-                                                       # FIXME: Not compatible with sep compilation
-                                                       var e = icb.inline_routine(ir, iselfa, null).as(not null)
-                                                       icb.stmt(new IAttrWrite(p, iself, e))
+                                       for sc in c.che.linear_extension.reversed do
+                                               for g in sc.global_properties do
+                                                       if g.local_class != sc then continue
+                                                       if not g.intro isa MMAttribute then continue
+                                                       var p = c[g]
+                                                       var t = p.signature.return_type
+                                                       if p isa MMAttribute and t != null then
+                                                               var ir = p.iroutine
+                                                               if ir == null then continue
+                                                               # FIXME: Not compatible with sep compilation
+                                                               var e = icb.inline_routine(ir, iselfa, null).as(not null)
+                                                               icb.stmt(new IAttrWrite(p, iself, e))
+                                                       end
                                                end
                                        end
 
@@ -182,7 +185,7 @@ class Program
                                if iroutine != null then
                                        action(iroutine, m)
                                end
-                               for i in c.new_instance_iroutine do
+                               for i in c.new_instance_iroutine.values do
                                        action(i, m)
                                end
                        end