Because of transform and other potential optimization using astbuilder,
the typing phase cannot stores the raw_arguments and expect it is still
valid after subsequent phases.
The simplest way is to make `raw_arguments` a method that recollect the
correct nodes.
Alternative using some kind of cache invalidation seems to complex for not
a real gain.
Signed-off-by: Jean Privat <jean@pryen.org>
do
self._n_expr = recv
recv.parent = self
do
self._n_expr = recv
recv.parent = self
- self.raw_arguments = args or else new Array[AExpr]
_n_args = new AListExprs
_n_id = new TId
if args != null then
_n_args = new AListExprs
_n_id = new TId
if args != null then
var msignature = callsite.msignature
var args = compute_raw_arguments
var msignature = callsite.msignature
var args = compute_raw_arguments
- self.raw_arguments = args
callsite.check_signature(v, args)
callsite.check_signature(v, args)
private fun property_name: String is abstract
# An array of all arguments (excluding self)
private fun property_name: String is abstract
# An array of all arguments (excluding self)
- var raw_arguments: nullable Array[AExpr]
+ fun raw_arguments: Array[AExpr] do return compute_raw_arguments
private fun compute_raw_arguments: Array[AExpr] is abstract
end
private fun compute_raw_arguments: Array[AExpr] is abstract
end
self.callsite = callsite
var args = compute_raw_arguments
self.callsite = callsite
var args = compute_raw_arguments
- self.raw_arguments = args
callsite.check_signature(v, args)
callsite.check_signature(v, args)