parser: oneline assignment for 'return' and 'continue'
[nit.git] / src / parser / parser_prod.nit
index 61d6f95..3b605f3 100644 (file)
@@ -1262,19 +1262,10 @@ redef class AAttrPropdef
         _n_visibility = n
        n.parent = self
     end
-    redef fun n_kwattr=(n)
-    do
-        _n_kwattr = n
-        if n != null then
-           n.parent = self
-        end
-    end
     redef fun n_kwvar=(n)
     do
         _n_kwvar = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     redef fun n_id=(n)
     do
@@ -1304,7 +1295,6 @@ redef class AAttrPropdef
             n_writable: nullable AAble,
             n_kwredef: nullable TKwredef,
             n_visibility: nullable AVisibility,
-            n_kwattr: nullable TKwattr,
             n_kwvar: nullable TKwvar,
             n_id: nullable TAttrid,
             n_type: nullable AType,
@@ -1330,14 +1320,8 @@ redef class AAttrPropdef
        end
         _n_visibility = n_visibility.as(not null)
        n_visibility.parent = self
-        _n_kwattr = n_kwattr
-       if n_kwattr != null then
-               n_kwattr.parent = self
-       end
-        _n_kwvar = n_kwvar
-       if n_kwvar != null then
-               n_kwvar.parent = self
-       end
+        _n_kwvar = n_kwvar.as(not null)
+       n_kwvar.parent = self
         _n_id = n_id.as(not null)
        n_id.parent = self
         _n_type = n_type
@@ -1402,23 +1386,13 @@ redef class AAttrPropdef
             end
             return
        end
-        if _n_kwattr == old_child then
-            if new_child != null then
-                new_child.parent = self
-               assert new_child isa TKwattr
-                _n_kwattr = new_child
-           else
-               _n_kwattr = null
-            end
-            return
-       end
         if _n_kwvar == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwvar
                 _n_kwvar = new_child
            else
-               _n_kwvar = null
+               abort
             end
             return
        end
@@ -1469,12 +1443,7 @@ redef class AAttrPropdef
             v.enter_visit(_n_kwredef.as(not null))
         end
         v.enter_visit(_n_visibility)
-        if _n_kwattr != null then
-            v.enter_visit(_n_kwattr.as(not null))
-        end
-        if _n_kwvar != null then
-            v.enter_visit(_n_kwvar.as(not null))
-        end
+        v.enter_visit(_n_kwvar)
         v.enter_visit(_n_id)
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
@@ -1499,12 +1468,7 @@ redef class AAttrPropdef
             v.enter_visit(_n_kwredef.as(not null))
         end
         v.enter_visit(_n_visibility)
-        if _n_kwattr != null then
-            v.enter_visit(_n_kwattr.as(not null))
-        end
-        if _n_kwvar != null then
-            v.enter_visit(_n_kwvar.as(not null))
-        end
+        v.enter_visit(_n_kwvar)
         v.enter_visit(_n_id)
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
@@ -3867,11 +3831,6 @@ redef class AParam
     end
 end
 redef class AClosureDecl
-    redef fun n_kwwith=(n)
-    do
-        _n_kwwith = n
-       n.parent = self
-    end
     redef fun n_kwbreak=(n)
     do
         _n_kwbreak = n
@@ -3879,6 +3838,11 @@ redef class AClosureDecl
            n.parent = self
         end
     end
+    redef fun n_bang=(n)
+    do
+        _n_bang = n
+       n.parent = self
+    end
     redef fun n_id=(n)
     do
         _n_id = n
@@ -3900,20 +3864,20 @@ redef class AClosureDecl
     private init empty_init do end
 
     init init_aclosuredecl (
-            n_kwwith: nullable TKwwith,
             n_kwbreak: nullable TKwbreak,
+            n_bang: nullable TBang,
             n_id: nullable TId,
             n_signature: nullable ASignature,
             n_expr: nullable AExpr
     )
     do
         empty_init
-        _n_kwwith = n_kwwith.as(not null)
-       n_kwwith.parent = self
         _n_kwbreak = n_kwbreak
        if n_kwbreak != null then
                n_kwbreak.parent = self
        end
+        _n_bang = n_bang.as(not null)
+       n_bang.parent = self
         _n_id = n_id.as(not null)
        n_id.parent = self
         _n_signature = n_signature.as(not null)
@@ -3926,23 +3890,23 @@ redef class AClosureDecl
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
-        if _n_kwwith == old_child then
+        if _n_kwbreak == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa TKwwith
-                _n_kwwith = new_child
+               assert new_child isa TKwbreak
+                _n_kwbreak = new_child
            else
-               abort
+               _n_kwbreak = null
             end
             return
        end
-        if _n_kwbreak == old_child then
+        if _n_bang == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa TKwbreak
-                _n_kwbreak = new_child
+               assert new_child isa TBang
+                _n_bang = new_child
            else
-               _n_kwbreak = null
+               abort
             end
             return
        end
@@ -3980,10 +3944,10 @@ redef class AClosureDecl
 
     redef fun visit_all(v: Visitor)
     do
-        v.enter_visit(_n_kwwith)
         if _n_kwbreak != null then
             v.enter_visit(_n_kwbreak.as(not null))
         end
+        v.enter_visit(_n_bang)
         v.enter_visit(_n_id)
         v.enter_visit(_n_signature)
         if _n_expr != null then
@@ -3993,10 +3957,10 @@ redef class AClosureDecl
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.enter_visit(_n_kwwith)
         if _n_kwbreak != null then
             v.enter_visit(_n_kwbreak.as(not null))
         end
+        v.enter_visit(_n_bang)
         v.enter_visit(_n_id)
         v.enter_visit(_n_signature)
         if _n_expr != null then
@@ -4364,7 +4328,9 @@ redef class AReturnExpr
     redef fun n_kwreturn=(n)
     do
         _n_kwreturn = n
-       n.parent = self
+        if n != null then
+           n.parent = self
+        end
     end
     redef fun n_expr=(n)
     do
@@ -4382,8 +4348,10 @@ redef class AReturnExpr
     )
     do
         empty_init
-        _n_kwreturn = n_kwreturn.as(not null)
-       n_kwreturn.parent = self
+        _n_kwreturn = n_kwreturn
+       if n_kwreturn != null then
+               n_kwreturn.parent = self
+       end
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
@@ -4398,7 +4366,7 @@ redef class AReturnExpr
                assert new_child isa TKwreturn
                 _n_kwreturn = new_child
            else
-               abort
+               _n_kwreturn = null
             end
             return
        end
@@ -4416,7 +4384,9 @@ redef class AReturnExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.enter_visit(_n_kwreturn)
+        if _n_kwreturn != null then
+            v.enter_visit(_n_kwreturn.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -4424,7 +4394,9 @@ redef class AReturnExpr
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.enter_visit(_n_kwreturn)
+        if _n_kwreturn != null then
+            v.enter_visit(_n_kwreturn.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -4574,7 +4546,9 @@ redef class AContinueExpr
     redef fun n_kwcontinue=(n)
     do
         _n_kwcontinue = n
-       n.parent = self
+        if n != null then
+           n.parent = self
+        end
     end
     redef fun n_label=(n)
     do
@@ -4600,8 +4574,10 @@ redef class AContinueExpr
     )
     do
         empty_init
-        _n_kwcontinue = n_kwcontinue.as(not null)
-       n_kwcontinue.parent = self
+        _n_kwcontinue = n_kwcontinue
+       if n_kwcontinue != null then
+               n_kwcontinue.parent = self
+       end
         _n_label = n_label
        if n_label != null then
                n_label.parent = self
@@ -4620,7 +4596,7 @@ redef class AContinueExpr
                assert new_child isa TKwcontinue
                 _n_kwcontinue = new_child
            else
-               abort
+               _n_kwcontinue = null
             end
             return
        end
@@ -4648,7 +4624,9 @@ redef class AContinueExpr
 
     redef fun visit_all(v: Visitor)
     do
-        v.enter_visit(_n_kwcontinue)
+        if _n_kwcontinue != null then
+            v.enter_visit(_n_kwcontinue.as(not null))
+        end
         if _n_label != null then
             v.enter_visit(_n_label.as(not null))
         end
@@ -4659,7 +4637,9 @@ redef class AContinueExpr
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.enter_visit(_n_kwcontinue)
+        if _n_kwcontinue != null then
+            v.enter_visit(_n_kwcontinue.as(not null))
+        end
         if _n_label != null then
             v.enter_visit(_n_label.as(not null))
         end
@@ -9428,15 +9408,22 @@ redef class AMinusAssignOp
     end
 end
 redef class AClosureDef
-    redef fun n_kwwith=(n)
+    redef fun n_bang=(n)
     do
-        _n_kwwith = n
+        _n_bang = n
+       n.parent = self
+    end
+    redef fun n_id=(n)
+    do
+        _n_id = n
        n.parent = self
     end
     redef fun n_kwdo=(n)
     do
         _n_kwdo = n
-       n.parent = self
+        if n != null then
+           n.parent = self
+        end
     end
     redef fun n_expr=(n)
     do
@@ -9456,23 +9443,28 @@ redef class AClosureDef
     private init empty_init do end
 
     init init_aclosuredef (
-            n_kwwith: nullable TKwwith,
-            n_id: Collection[Object], # Should be Collection[TId]
+            n_bang: nullable TBang,
+            n_id: nullable AClosureId,
+            n_ids: Collection[Object], # Should be Collection[TId]
             n_kwdo: nullable TKwdo,
             n_expr: nullable AExpr,
             n_label: nullable ALabel
     )
     do
         empty_init
-        _n_kwwith = n_kwwith.as(not null)
-       n_kwwith.parent = self
-       for n in n_id do
+        _n_bang = n_bang.as(not null)
+       n_bang.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+       for n in n_ids do
                assert n isa TId
-               _n_id.add(n)
+               _n_ids.add(n)
                n.parent = self
        end
-        _n_kwdo = n_kwdo.as(not null)
-       n_kwdo.parent = self
+        _n_kwdo = n_kwdo
+       if n_kwdo != null then
+               n_kwdo.parent = self
+       end
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
@@ -9485,24 +9477,34 @@ redef class AClosureDef
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     do
-        if _n_kwwith == old_child then
+        if _n_bang == old_child then
             if new_child != null then
                 new_child.parent = self
-               assert new_child isa TKwwith
-                _n_kwwith = new_child
+               assert new_child isa TBang
+                _n_bang = new_child
            else
                abort
             end
             return
        end
-        for i in [0.._n_id.length[ do
-            if _n_id[i] == old_child then
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AClosureId
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+        for i in [0.._n_ids.length[ do
+            if _n_ids[i] == old_child then
                 if new_child != null then
                    assert new_child isa TId
-                    _n_id[i] = new_child
+                    _n_ids[i] = new_child
                     new_child.parent = self
                 else
-                    _n_id.remove_at(i)
+                    _n_ids.remove_at(i)
                 end
                 return
             end
@@ -9513,7 +9515,7 @@ redef class AClosureDef
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               abort
+               _n_kwdo = null
             end
             return
        end
@@ -9541,11 +9543,14 @@ redef class AClosureDef
 
     redef fun visit_all(v: Visitor)
     do
-        v.enter_visit(_n_kwwith)
-            for n in _n_id do
+        v.enter_visit(_n_bang)
+        v.enter_visit(_n_id)
+            for n in _n_ids do
                 v.enter_visit(n)
            end
-        v.enter_visit(_n_kwdo)
+        if _n_kwdo != null then
+            v.enter_visit(_n_kwdo.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -9556,15 +9561,18 @@ redef class AClosureDef
 
     redef fun visit_all_reverse(v: Visitor)
     do
-        v.enter_visit(_n_kwwith)
+        v.enter_visit(_n_bang)
+        v.enter_visit(_n_id)
        do
-           var i = _n_id.length
+           var i = _n_ids.length
             while i >= 0 do
-                v.enter_visit(_n_id[i])
+                v.enter_visit(_n_ids[i])
                i = i - 1
            end
        end
-        v.enter_visit(_n_kwdo)
+        if _n_kwdo != null then
+            v.enter_visit(_n_kwdo.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -9573,6 +9581,90 @@ redef class AClosureDef
         end
     end
 end
+redef class ASimpleClosureId
+    redef fun n_id=(n)
+    do
+        _n_id = n
+       n.parent = self
+    end
+
+    private init empty_init do end
+
+    init init_asimpleclosureid (
+            n_id: nullable TId
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TId
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+
+    redef fun visit_all_reverse(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
+redef class ABreakClosureId
+    redef fun n_kwbreak=(n)
+    do
+        _n_kwbreak = n
+       n.parent = self
+    end
+
+    private init empty_init do end
+
+    init init_abreakclosureid (
+            n_kwbreak: nullable TKwbreak
+    )
+    do
+        empty_init
+        _n_kwbreak = n_kwbreak.as(not null)
+       n_kwbreak.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_kwbreak == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwbreak
+                _n_kwbreak = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_kwbreak)
+    end
+
+    redef fun visit_all_reverse(v: Visitor)
+    do
+        v.enter_visit(_n_kwbreak)
+    end
+end
 redef class AQualified
     redef fun n_classid=(n)
     do