!nobra | {bra} expr_atom~nopar braargs {-> New expr.bra(expr_atom~nopar.expr, [braargs.expr], [])}
| {new} kwnew no type~nobra dot [n2]:no id args {-> New expr.new(kwnew, type~nobra.type, id, [args.expr])}
// !nopar to unambiguise 'foo[5].bar' between '(foo[5]).bar' and 'foo([5].bar),
-!nobra!nopar | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra {-> New expr.crange(expr, expr2.expr)}
-!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra {-> New expr.orange(expr, expr2.expr)}
+!nobra!nopar | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra {-> New expr.crange(obra, expr, expr2.expr, cbra)}
+!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra {-> New expr.orange(obra, expr, expr2.expr, cbra)}
!nobra!nopar | {array} braargs {-> New expr.array([braargs.expr])}
| {self} kwself {-> New expr.self(kwself)}
| {true} kwtrue {-> New expr.true(kwtrue)}
| {var_assign} id assign [value]:expr
| {var_reassign} id assign_op [value]:expr
| {range} expr [expr2]:expr
- | {crange} expr [expr2]:expr
- | {orange} expr [expr2]:expr
+ | {crange} obra expr [expr2]:expr cbra
+ | {orange} obra expr [expr2]:expr [cbra]:obra
| {array} [exprs]:expr*
| {self} kwself
| {implicit_self}
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist3
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist7
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
+ assert pexprnode4 isa nullable AExpr
+ var tcbranode5 = nodearraylist9
+ assert tcbranode5 isa nullable TCbra
var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
- pexprnode2,
- pexprnode3
+ tobranode2,
+ pexprnode3,
+ pexprnode4,
+ tcbranode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pexprnode2 = nodearraylist3
- assert pexprnode2 isa nullable AExpr
- var pexprnode3 = nodearraylist7
+ var tobranode2 = nodearraylist1
+ assert tobranode2 isa nullable TObra
+ var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
+ var pexprnode4 = nodearraylist7
+ assert pexprnode4 isa nullable AExpr
+ var tobranode5 = nodearraylist9
+ assert tobranode5 isa nullable TObra
var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
- pexprnode2,
- pexprnode3
+ tobranode2,
+ pexprnode3,
+ pexprnode4,
+ tobranode5
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
class ACrangeExpr
super AExpr
+ readable var _n_obra: TObra
readable var _n_expr: AExpr
readable var _n_expr2: AExpr
+ readable var _n_cbra: TCbra
end
class AOrangeExpr
super AExpr
+ readable var _n_obra: TObra
readable var _n_expr: AExpr
readable var _n_expr2: AExpr
+ readable var _n_cbra: TObra
end
class AArrayExpr
super AExpr
end
class ACrangeExpr
super ARangeExpr
+ readable var _n_obra: TObra
+ readable var _n_cbra: TCbra
end
class AOrangeExpr
super ARangeExpr
+ readable var _n_obra: TObra
+ readable var _n_cbra: TObra
end
class AArrayExpr
super AExpr
private init empty_init do end
init init_acrangeexpr (
+ n_obra: nullable TObra,
n_expr: nullable AExpr,
- n_expr2: nullable AExpr
+ n_expr2: nullable AExpr,
+ n_cbra: nullable TCbra
)
do
empty_init
+ _n_obra = n_obra.as(not null)
+ n_obra.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
+ _n_cbra = n_cbra.as(not null)
+ n_cbra.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
+ if _n_obra == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TObra
+ _n_obra = new_child
+ else
+ abort
+ end
+ return
+ end
if _n_expr == old_child then
if new_child != null then
new_child.parent = self
end
return
end
+ if _n_cbra == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TCbra
+ _n_cbra = new_child
+ else
+ abort
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
+ v.enter_visit(_n_obra)
v.enter_visit(_n_expr)
v.enter_visit(_n_expr2)
+ v.enter_visit(_n_cbra)
end
end
redef class AOrangeExpr
private init empty_init do end
init init_aorangeexpr (
+ n_obra: nullable TObra,
n_expr: nullable AExpr,
- n_expr2: nullable AExpr
+ n_expr2: nullable AExpr,
+ n_cbra: nullable TObra
)
do
empty_init
+ _n_obra = n_obra.as(not null)
+ n_obra.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
+ _n_cbra = n_cbra.as(not null)
+ n_cbra.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
+ if _n_obra == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TObra
+ _n_obra = new_child
+ else
+ abort
+ end
+ return
+ end
if _n_expr == old_child then
if new_child != null then
new_child.parent = self
end
return
end
+ if _n_cbra == old_child then
+ if new_child != null then
+ new_child.parent = self
+ assert new_child isa TObra
+ _n_cbra = new_child
+ else
+ abort
+ end
+ return
+ end
end
redef fun visit_all(v: Visitor)
do
+ v.enter_visit(_n_obra)
v.enter_visit(_n_expr)
v.enter_visit(_n_expr2)
+ v.enter_visit(_n_cbra)
end
end
redef class AArrayExpr
alt/error_expr_not_ok_alt2.nit:135,1--11: Error: Method '[]=' doesn't exists in Int.
alt/error_expr_not_ok_alt2.nit:136,1--12: Error: Method '[]' doesn't exists in Int.
alt/error_expr_not_ok_alt2.nit:137,1--17: Error: Method '[]=' doesn't exists in Int.
-alt/error_expr_not_ok_alt2.nit:139,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt2.nit:140,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt2.nit:141,8--17: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt2.nit:142,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt2.nit:143,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt2.nit:144,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt2.nit:139,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt2.nit:140,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt2.nit:141,7--18: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt2.nit:142,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt2.nit:143,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt2.nit:144,7--18: Type error: expected A, got Range[Int]
alt/error_expr_not_ok_alt2.nit:145,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt2.nit:146,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt2.nit:147,8--17: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt3.nit:135,1--11: Error: Method '[]=' doesn't exists in Int.
alt/error_expr_not_ok_alt3.nit:136,1--12: Error: Method '[]' doesn't exists in Int.
alt/error_expr_not_ok_alt3.nit:137,1--17: Error: Method '[]=' doesn't exists in Int.
-alt/error_expr_not_ok_alt3.nit:139,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt3.nit:140,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt3.nit:141,8--17: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt3.nit:142,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt3.nit:143,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt3.nit:144,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt3.nit:139,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt3.nit:140,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt3.nit:141,7--18: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt3.nit:142,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt3.nit:143,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt3.nit:144,7--18: Type error: expected A, got Range[Int]
alt/error_expr_not_ok_alt3.nit:145,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt3.nit:146,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt3.nit:147,8--17: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt4.nit:135,1--11: Error: Method '[]=' doesn't exists in Int.
alt/error_expr_not_ok_alt4.nit:136,1--12: Error: Method '[]' doesn't exists in Int.
alt/error_expr_not_ok_alt4.nit:137,1--17: Error: Method '[]=' doesn't exists in Int.
-alt/error_expr_not_ok_alt4.nit:139,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt4.nit:140,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt4.nit:141,8--17: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt4.nit:142,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt4.nit:143,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt4.nit:144,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:139,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:140,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:141,7--18: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:142,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:143,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:144,7--18: Type error: expected A, got Range[Int]
alt/error_expr_not_ok_alt4.nit:145,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt4.nit:146,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt4.nit:147,8--17: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt5.nit:135,1--11: Error: Method '[]=' doesn't exists in Int.
alt/error_expr_not_ok_alt5.nit:136,1--12: Error: Method '[]' doesn't exists in Int.
alt/error_expr_not_ok_alt5.nit:137,1--17: Error: Method '[]=' doesn't exists in Int.
-alt/error_expr_not_ok_alt5.nit:139,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt5.nit:140,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt5.nit:141,8--17: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt5.nit:142,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt5.nit:143,8--14: Type error: expected A, got Range[Int]
-alt/error_expr_not_ok_alt5.nit:144,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:139,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:140,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:141,7--18: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:142,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:143,7--15: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:144,7--18: Type error: expected A, got Range[Int]
alt/error_expr_not_ok_alt5.nit:145,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt5.nit:146,8--14: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt5.nit:147,8--17: Type error: expected A, got Array[Int]
alt/error_expr_not_ok_alt6.nit:135,1--11: Error: Method '[]=' call on 'null'.
alt/error_expr_not_ok_alt6.nit:136,1--12: Error: Method '[]' call on 'null'.
alt/error_expr_not_ok_alt6.nit:137,1--17: Error: Method '[]=' call on 'null'.
-alt/error_expr_not_ok_alt6.nit:139,8--14: Type error: Int incompatible with null.
-alt/error_expr_not_ok_alt6.nit:140,8--14: Type error: null incompatible with Int.
+alt/error_expr_not_ok_alt6.nit:139,7--15: Type error: Int incompatible with null.
+alt/error_expr_not_ok_alt6.nit:140,7--15: Type error: null incompatible with Int.
alt/error_expr_not_ok_alt6.nit:141,8--11: Type error: expected Discrete, got null
-alt/error_expr_not_ok_alt6.nit:142,8--14: Type error: Int incompatible with null.
-alt/error_expr_not_ok_alt6.nit:143,8--14: Type error: null incompatible with Int.
+alt/error_expr_not_ok_alt6.nit:142,7--15: Type error: Int incompatible with null.
+alt/error_expr_not_ok_alt6.nit:143,7--15: Type error: null incompatible with Int.
alt/error_expr_not_ok_alt6.nit:144,8--11: Type error: expected Discrete, got null
alt/error_expr_not_ok_alt6.nit:145,8--14: Type error: expected A, got Array[nullable Int]
alt/error_expr_not_ok_alt6.nit:146,8--14: Type error: expected A, got Array[nullable Int]
../src/syntax/typing.nit:756,3--758,5
keyword 'for' ... ../src/syntax/typing.nit:756,3--5
identifier 'i' ... ../src/syntax/typing.nit:756,7
- ../src/syntax/typing.nit:756,13--25
+ ../src/syntax/typing.nit:756,12--26
+ '[' ... ../src/syntax/typing.nit:756,12
../src/syntax/typing.nit:756,13
literal value '0' ... ../src/syntax/typing.nit:756,13
../src/syntax/typing.nit:756,16--25
../src/syntax/typing.nit:756,16
identifier 'vas' ... ../src/syntax/typing.nit:756,16--18
identifier 'length' ... ../src/syntax/typing.nit:756,20--25
+ '[' ... ../src/syntax/typing.nit:756,26
keyword 'do' ... ../src/syntax/typing.nit:756,28--29
../src/syntax/typing.nit:757,4--758,5
../src/syntax/typing.nit:757,4--24
../src/syntax/typing.nit:1437,3--1451,5
keyword 'for' ... ../src/syntax/typing.nit:1437,3--5
identifier 'par_idx' ... ../src/syntax/typing.nit:1437,7--13
- ../src/syntax/typing.nit:1437,19--30
+ ../src/syntax/typing.nit:1437,18--31
+ '[' ... ../src/syntax/typing.nit:1437,18
../src/syntax/typing.nit:1437,19
literal value '0' ... ../src/syntax/typing.nit:1437,19
../src/syntax/typing.nit:1437,22--30
../src/syntax/typing.nit:1437,22
identifier 'par_arity' ... ../src/syntax/typing.nit:1437,22--30
+ '[' ... ../src/syntax/typing.nit:1437,31
keyword 'do' ... ../src/syntax/typing.nit:1437,33--34
../src/syntax/typing.nit:1438,4--1451,5
../src/syntax/typing.nit:1438,4--15
../src/syntax/typing.nit:1441,5--1445,7
keyword 'for' ... ../src/syntax/typing.nit:1441,5--7
identifier 'i' ... ../src/syntax/typing.nit:1441,9
- ../src/syntax/typing.nit:1441,15--38
+ ../src/syntax/typing.nit:1441,14--39
+ '[' ... ../src/syntax/typing.nit:1441,14
../src/syntax/typing.nit:1441,15
literal value '0' ... ../src/syntax/typing.nit:1441,15
../src/syntax/typing.nit:1441,18--38
../src/syntax/typing.nit:1441,29
identifier 'par_arity' ... ../src/syntax/typing.nit:1441,29--37
')' ... ../src/syntax/typing.nit:1441,38
+ ']' ... ../src/syntax/typing.nit:1441,39
keyword 'do' ... ../src/syntax/typing.nit:1441,41--42
../src/syntax/typing.nit:1442,6--1445,7
../src/syntax/typing.nit:1442,6--25
../src/syntax/typing.nit:1480,5--1498,7
keyword 'for' ... ../src/syntax/typing.nit:1480,5--7
identifier 'i' ... ../src/syntax/typing.nit:1480,9
- ../src/syntax/typing.nit:1480,15--22
+ ../src/syntax/typing.nit:1480,14--23
+ '[' ... ../src/syntax/typing.nit:1480,14
../src/syntax/typing.nit:1480,15
literal value '0' ... ../src/syntax/typing.nit:1480,15
../src/syntax/typing.nit:1480,18--22
../src/syntax/typing.nit:1480,18
identifier 'arity' ... ../src/syntax/typing.nit:1480,18--22
+ '[' ... ../src/syntax/typing.nit:1480,23
keyword 'do' ... ../src/syntax/typing.nit:1480,25--26
../src/syntax/typing.nit:1481,6--1498,7
../src/syntax/typing.nit:1481,6--19
../src/syntax/typing.nit:2000,3--2005,5
keyword 'for' ... ../src/syntax/typing.nit:2000,3--5
identifier 'i' ... ../src/syntax/typing.nit:2000,7
- ../src/syntax/typing.nit:2000,13--27
+ ../src/syntax/typing.nit:2000,12--28
+ '[' ... ../src/syntax/typing.nit:2000,12
../src/syntax/typing.nit:2000,13
literal value '0' ... ../src/syntax/typing.nit:2000,13
../src/syntax/typing.nit:2000,16--27
../src/syntax/typing.nit:2000,16
identifier 'n_ids' ... ../src/syntax/typing.nit:2000,16--20
identifier 'length' ... ../src/syntax/typing.nit:2000,22--27
+ '[' ... ../src/syntax/typing.nit:2000,28
keyword 'do' ... ../src/syntax/typing.nit:2000,30--31
../src/syntax/typing.nit:2001,4--2005,5
../src/syntax/typing.nit:2001,4--56