# A `once` expression. eg `once x`
class AOnceExpr
- super AProxyExpr
+ super AExpr
var n_kwonce: TKwonce is writable, noinit
+ var n_expr: AExpr is writable, noinit
end
# A polymorphic invocation of a method
# A simple parenthesis. eg `(x)`
class AParExpr
- super AProxyExpr
- var n_opar: TOpar is writable, noinit
- var n_cpar: TCpar is writable, noinit
-end
-
-# Whatever just contains (and mimic) an other expression
-abstract class AProxyExpr
super AExpr
+ var n_opar: TOpar is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_cpar: TCpar is writable, noinit
end
# A type cast. eg `x.as(T)`
end
end
-redef class AProxyExpr
+redef class AParExpr
+ redef fun accept_flow_visitor(v)
+ do
+ var after_expr = v.visit_expr(self.n_expr)
+ v.current_flow_context = after_expr
+ end
+end
+
+redef class AOnceExpr
redef fun accept_flow_visitor(v)
do
var after_expr = v.visit_expr(self.n_expr)
end
end
-redef class AProxyExpr
+redef class AParExpr
+ redef fun accept_typing(v)
+ do
+ self.mtype = v.visit_expr(self.n_expr)
+ end
+end
+
+redef class AOnceExpr
redef fun accept_typing(v)
do
self.mtype = v.visit_expr(self.n_expr)