Signed-off-by: Jean Privat <jean@pryen.org>
do
self._n_expr = recv
_n_args = new AListExprs
do
self._n_expr = recv
_n_args = new AListExprs
+ _n_qid = new AQid
+ _n_qid.n_id = new TId
if args != null then
self.n_args.n_exprs.add_all(args)
end
if args != null then
self.n_args.n_exprs.add_all(args)
end
else if expr isa ACallExpr then
# We support calls to "exec" only
var exec_args = expr.n_args.to_a
else if expr isa ACallExpr then
# We support calls to "exec" only
var exec_args = expr.n_args.to_a
- if expr.n_id.text != "exec" or exec_args.is_empty then
+ if expr.n_qid.n_id.text != "exec" or exec_args.is_empty then
modelbuilder.error(nat, "Syntax Error: `{annotation_name}` accepts only calls to `exec` with the command as arguments.")
return
end
modelbuilder.error(nat, "Syntax Error: `{annotation_name}` accepts only calls to `exec` with the command as arguments.")
return
end
redef fun accept_regex_visitor(v)
do
redef fun accept_regex_visitor(v)
do
+ var method = n_qid.n_id
var receiver = n_expr
# Check only string literals on which `to_re` is called
var receiver = n_expr
# Check only string literals on which `to_re` is called
if node isa AArrayExpr then
dcp.cpt_explanations.inc("lit-array")
if node isa AArrayExpr then
dcp.cpt_explanations.inc("lit-array")
- else if p isa ACallExpr and (p.n_id.text == "sort" or p.n_id.text == "linearize_mpropdefs") then
- dcp.cpt_explanations.inc("generic methods (sort-method)")
- else if p isa ACallExpr and p.n_id.text == "visit_list" then
- dcp.cpt_explanations.inc("use-site covariance (visit_list-method)")
+ else if p isa ACallExpr then
+ var name = p.n_qid.n_id.text
+ if name == "sort" or name == "linearize_mpropdefs" then
+ dcp.cpt_explanations.inc("generic methods (sort-method)")
+ else if name == "visit_list" then
+ dcp.cpt_explanations.inc("use-site covariance (visit_list-method)")
+ else
+ dcp.cpt_explanations.inc("other covariance")
+ end
else
dcp.cpt_explanations.inc("other covariance")
end
else
dcp.cpt_explanations.inc("other covariance")
end
if not self isa ACallExpr then return null
if not self.n_expr isa AImplicitSelfExpr then return null
if not self.n_args.n_exprs.is_empty then return null
if not self isa ACallExpr then return null
if not self.n_expr isa AImplicitSelfExpr then return null
if not self.n_args.n_exprs.is_empty then return null
+ return self.n_qid.n_id.text
if not n_args.n_exprs.is_empty then
if is_stmt and n_args.n_exprs.length == 1 then
if not n_args.n_exprs.is_empty then
if is_stmt and n_args.n_exprs.length == 1 then
redef class ACallAssignExpr
redef fun accept_pretty_printer(v) do
v.visit_recv n_expr
redef class ACallAssignExpr
redef fun accept_pretty_printer(v) do
v.visit_recv n_expr
if not n_args.n_exprs.is_empty then
v.consume "("
if not n_args.n_exprs.is_empty then
v.consume "("
redef class ACallReassignExpr
redef fun accept_pretty_printer(v) do
v.visit_recv n_expr
redef class ACallReassignExpr
redef fun accept_pretty_printer(v) do
v.visit_recv n_expr
if not n_args.n_exprs.is_empty then
v.consume "("
if not n_args.n_exprs.is_empty then
v.consume "("
v.consume "."
if not can_inline then
v.consume "."
if not can_inline then
end
v.visit_args n_args.n_exprs
end
v.visit_args n_args.n_exprs
redef fun accept_scope_visitor(v)
do
if n_expr isa AImplicitSelfExpr then
redef fun accept_scope_visitor(v)
do
if n_expr isa AImplicitSelfExpr then
+ var name = n_qid.n_id.text
var variable = v.search_variable(name)
if variable != null then
var n: AExpr
var variable = v.search_variable(name)
if variable != null then
var n: AExpr
redef fun variable_create(variable)
do
variable.warn_unread = false
redef fun variable_create(variable)
do
variable.warn_unread = false
- return new AVarExpr.init_avarexpr(n_id)
+ return new AVarExpr.init_avarexpr(n_qid.n_id)
end
end
redef class ACallAssignExpr
redef fun variable_create(variable)
do
end
end
redef class ACallAssignExpr
redef fun variable_create(variable)
do
- return new AVarAssignExpr.init_avarassignexpr(n_id, n_assign, n_value)
+ return new AVarAssignExpr.init_avarassignexpr(n_qid.n_id, n_assign, n_value)
redef fun variable_create(variable)
do
variable.warn_unread = false
redef fun variable_create(variable)
do
variable.warn_unread = false
- return new AVarReassignExpr.init_avarreassignexpr(n_id, n_assign_op, n_value)
+ return new AVarReassignExpr.init_avarreassignexpr(n_qid.n_id, n_assign_op, n_value)
- redef fun property_name do return n_id.text
- redef fun property_node do return n_id
+ redef fun property_name do return n_qid.n_id.text
+ redef fun property_node do return n_qid
redef fun compute_raw_arguments do return n_args.to_a
end
redef class ACallAssignExpr
redef fun compute_raw_arguments do return n_args.to_a
end
redef class ACallAssignExpr
- redef fun property_name do return n_id.text + "="
- redef fun property_node do return n_id
+ redef fun property_name do return n_qid.n_id.text + "="
+ redef fun property_node do return n_qid
redef fun compute_raw_arguments
do
var res = n_args.to_a
redef fun compute_raw_arguments
do
var res = n_args.to_a
end
redef class ACallReassignExpr
end
redef class ACallReassignExpr
- redef fun property_name do return n_id.text
- redef fun property_node do return n_id
+ redef fun property_name do return n_qid.n_id.text
+ redef fun property_node do return n_qid.n_id
redef fun compute_raw_arguments do return n_args.to_a
end
redef fun compute_raw_arguments do return n_args.to_a
end
var kind = recvtype.mclass.kind
var name: String
var kind = recvtype.mclass.kind
var name: String
- if nid != null then
- name = nid.text
- node = nid
+ if nqid != null then
+ name = nqid.n_id.text
+ node = nqid
else
name = "new"
node = self.n_kwnew
else
name = "new"
node = self.n_kwnew