Distinguish no bloc vs. empty bloc
authorJean Privat <jean@pryen.org>
Fri, 6 Feb 2009 15:24:30 +0000 (10:24 -0500)
committerJean Privat <jean@pryen.org>
Fri, 6 Feb 2009 15:24:30 +0000 (10:24 -0500)
On empty bloc, a empty ABlocExpr is given instead of null.

src/parser/nit.sablecc3xx
src/parser/parser.nit

index 87d0f84..3cfcf96 100644 (file)
@@ -299,8 +299,8 @@ typing {-> type}
 stmtso/*B2*/ {-> expr?}
        = {oneline} stmt/*B2*/ {-> stmt/*B2*/.expr}
        | {block} n stmts [n2]:n kwend {-> stmts.expr}
-       | {emptyblock} n kwend {-> Null}
-       | {emptyoneline} kwend {-> Null}
+       | {emptyblock} n kwend {-> New expr.block([])}
+       | {emptyoneline} kwend {-> New expr.block([])}
        ;
 stmts {-> expr}
        = stmt stmts_tail* {-> New expr.block([stmt.expr, stmts_tail.expr])};
index 492ea9b..f9970ed 100644 (file)
@@ -10559,7 +10559,11 @@ special ReduceAction
                                        var node_list: Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
@@ -10570,7 +10574,11 @@ special ReduceAction
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
 init do end
@@ -15570,7 +15578,11 @@ special ReduceAction
                                        var node_list: Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
 init do end
@@ -15581,7 +15593,11 @@ special ReduceAction
        do
                                        var node_list: Object = null
                                        var nodearraylist1 = p.pop
-                                       node_list = null
+                                       var listnode2 = new Array[Object]
+                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                               listnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
 init do end