Merge branch 'll-and-gg-operators' into wip
[nit.git] / src / parser / parser_prod.nit
index a4fbac9..4ec1345 100644 (file)
@@ -71,15 +71,15 @@ redef class AModule
     private init empty_init do end
 
     init init_amodule (
-            n_packagedecl: nullable APackagedecl,
+            n_moduledecl: nullable AModuledecl,
             n_imports: Collection[Object], # Should be Collection[AImport]
             n_classdefs: Collection[Object] # Should be Collection[AClassdef]
     )
     do
         empty_init
-        _n_packagedecl = n_packagedecl
-       if n_packagedecl != null then
-               n_packagedecl.parent = self
+        _n_moduledecl = n_moduledecl
+       if n_moduledecl != null then
+               n_moduledecl.parent = self
        end
        for n in n_imports do
                assert n isa AImport
@@ -95,13 +95,13 @@ redef class AModule
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
-        if _n_packagedecl == old_child then
+        if _n_moduledecl == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa APackagedecl
-                _n_packagedecl = new_child
+               assert new_child isa AModuledecl
+                _n_moduledecl = new_child
            else
-               _n_packagedecl = null
+               _n_moduledecl = null
             end
             return
        end
@@ -133,8 +133,8 @@ redef class AModule
 
     redef fun visit_all(v: Visitor)
     do
-        if _n_packagedecl != null then
-            v.enter_visit(_n_packagedecl.as(not null))
+        if _n_moduledecl != null then
+            v.enter_visit(_n_moduledecl.as(not null))
         end
             for n in _n_imports do
                 v.enter_visit(n)
@@ -144,12 +144,12 @@ redef class AModule
            end
     end
 end
-redef class APackagedecl
+redef class AModuledecl
     private init empty_init do end
 
-    init init_apackagedecl (
+    init init_amoduledecl (
             n_doc: nullable ADoc,
-            n_kwpackage: nullable TKwpackage,
+            n_kwmodule: nullable TKwmodule,
             n_id: nullable TId
     )
     do
@@ -158,8 +158,8 @@ redef class APackagedecl
        if n_doc != null then
                n_doc.parent = self
        end
-        _n_kwpackage = n_kwpackage.as(not null)
-       n_kwpackage.parent = self
+        _n_kwmodule = n_kwmodule.as(not null)
+       n_kwmodule.parent = self
         _n_id = n_id.as(not null)
        n_id.parent = self
     end
@@ -176,11 +176,11 @@ redef class APackagedecl
             end
             return
        end
-        if _n_kwpackage == old_child then
+        if _n_kwmodule == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa TKwpackage
-                _n_kwpackage = new_child
+               assert new_child isa TKwmodule
+                _n_kwmodule = new_child
            else
                abort
             end
@@ -203,7 +203,7 @@ redef class APackagedecl
         if _n_doc != null then
             v.enter_visit(_n_doc.as(not null))
         end
-        v.enter_visit(_n_kwpackage)
+        v.enter_visit(_n_kwmodule)
         v.enter_visit(_n_id)
     end
 end
@@ -937,6 +937,7 @@ redef class AAttrPropdef
             n_visibility: nullable AVisibility,
             n_kwvar: nullable TKwvar,
             n_id: nullable TAttrid,
+            n_id2: nullable TId,
             n_type: nullable AType,
             n_expr: nullable AExpr
     )
@@ -962,8 +963,14 @@ redef class AAttrPropdef
        n_visibility.parent = self
         _n_kwvar = n_kwvar.as(not null)
        n_kwvar.parent = self
-        _n_id = n_id.as(not null)
-       n_id.parent = self
+        _n_id = n_id
+       if n_id != null then
+               n_id.parent = self
+       end
+        _n_id2 = n_id2
+       if n_id2 != null then
+               n_id2.parent = self
+       end
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -1042,7 +1049,17 @@ redef class AAttrPropdef
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               abort
+               _n_id = null
+            end
+            return
+       end
+        if _n_id2 == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TId
+                _n_id2 = new_child
+           else
+               _n_id2 = null
             end
             return
        end
@@ -1084,7 +1101,12 @@ redef class AAttrPropdef
         end
         v.enter_visit(_n_visibility)
         v.enter_visit(_n_kwvar)
-        v.enter_visit(_n_id)
+        if _n_id != null then
+            v.enter_visit(_n_id.as(not null))
+        end
+        if _n_id2 != null then
+            v.enter_visit(_n_id2.as(not null))
+        end
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
         end
@@ -2007,6 +2029,7 @@ redef class AWriteAble
 
     init init_awriteable (
             n_kwredef: nullable TKwredef,
+            n_visibility: nullable AVisibility,
             n_kwwritable: nullable TKwwritable
     )
     do
@@ -2015,6 +2038,10 @@ redef class AWriteAble
        if n_kwredef != null then
                n_kwredef.parent = self
        end
+        _n_visibility = n_visibility
+       if n_visibility != null then
+               n_visibility.parent = self
+       end
         _n_kwwritable = n_kwwritable.as(not null)
        n_kwwritable.parent = self
     end
@@ -2031,6 +2058,16 @@ redef class AWriteAble
             end
             return
        end
+        if _n_visibility == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AVisibility
+                _n_visibility = new_child
+           else
+               _n_visibility = null
+            end
+            return
+       end
         if _n_kwwritable == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -2048,6 +2085,9 @@ redef class AWriteAble
         if _n_kwredef != null then
             v.enter_visit(_n_kwredef.as(not null))
         end
+        if _n_visibility != null then
+            v.enter_visit(_n_visibility.as(not null))
+        end
         v.enter_visit(_n_kwwritable)
     end
 end
@@ -2423,6 +2463,68 @@ redef class AGtMethid
         v.enter_visit(_n_gt)
     end
 end
+redef class ALlMethid
+    private init empty_init do end
+
+    init init_allmethid (
+            n_ll: nullable TLl
+    )
+    do
+        empty_init
+        _n_ll = n_ll.as(not null)
+       n_ll.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_ll == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TLl
+                _n_ll = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_ll)
+    end
+end
+redef class AGgMethid
+    private init empty_init do end
+
+    init init_aggmethid (
+            n_gg: nullable TGg
+    )
+    do
+        empty_init
+        _n_gg = n_gg.as(not null)
+       n_gg.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_gg == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TGg
+                _n_gg = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_gg)
+    end
+end
 redef class ABraMethid
     private init empty_init do end
 
@@ -4443,6 +4545,51 @@ redef class ALeExpr
         v.enter_visit(_n_expr2)
     end
 end
+redef class ALlExpr
+    private init empty_init do end
+
+    init init_allexpr (
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
+    )
+    do
+        empty_init
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_expr == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AExpr
+                _n_expr = new_child
+           else
+               abort
+            end
+            return
+       end
+        if _n_expr2 == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AExpr
+                _n_expr2 = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
+    end
+end
 redef class AGtExpr
     private init empty_init do end
 
@@ -4533,6 +4680,51 @@ redef class AGeExpr
         v.enter_visit(_n_expr2)
     end
 end
+redef class AGgExpr
+    private init empty_init do end
+
+    init init_aggexpr (
+            n_expr: nullable AExpr,
+            n_expr2: nullable AExpr
+    )
+    do
+        empty_init
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_expr == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AExpr
+                _n_expr = new_child
+           else
+               abort
+            end
+            return
+       end
+        if _n_expr2 == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AExpr
+                _n_expr2 = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_expr)
+        v.enter_visit(_n_expr2)
+    end
+end
 redef class AIsaExpr
     private init empty_init do end