From: Jean Privat Date: Thu, 6 Aug 2015 21:04:12 +0000 (-0400) Subject: src: update AST client to handle qualified identifiers (no semantic change) X-Git-Tag: v0.7.8~101^2~2 X-Git-Url: http://nitlanguage.org src: update AST client to handle qualified identifiers (no semantic change) Signed-off-by: Jean Privat --- diff --git a/src/astbuilder.nit b/src/astbuilder.nit index ef969d7..cc7cd88 100644 --- a/src/astbuilder.nit +++ b/src/astbuilder.nit @@ -294,7 +294,8 @@ redef class ACallExpr do self._n_expr = recv _n_args = new AListExprs - _n_id = new TId + _n_qid = new AQid + _n_qid.n_id = new TId if args != null then self.n_args.n_exprs.add_all(args) end diff --git a/src/ffi/c_compiler_options.nit b/src/ffi/c_compiler_options.nit index 1618f9e..8bb2e44 100644 --- a/src/ffi/c_compiler_options.nit +++ b/src/ffi/c_compiler_options.nit @@ -68,7 +68,7 @@ private class CCompilerOptionsPhase 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 diff --git a/src/frontend/regex_phase.nit b/src/frontend/regex_phase.nit index feafa77..57e8822 100644 --- a/src/frontend/regex_phase.nit +++ b/src/frontend/regex_phase.nit @@ -51,7 +51,7 @@ redef class ACallExpr redef fun accept_regex_visitor(v) do - var method = n_id + var method = n_qid.n_id var receiver = n_expr # Check only string literals on which `to_re` is called diff --git a/src/metrics/detect_covariance.nit b/src/metrics/detect_covariance.nit index ef403a3..746ad9e 100644 --- a/src/metrics/detect_covariance.nit +++ b/src/metrics/detect_covariance.nit @@ -394,10 +394,15 @@ redef class TypeVisitor 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 diff --git a/src/parser/parser_work.nit b/src/parser/parser_work.nit index 66941c2..a5bef33 100644 --- a/src/parser/parser_work.nit +++ b/src/parser/parser_work.nit @@ -311,6 +311,6 @@ redef class AExpr 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_id.text + return self.n_qid.n_id.text end end diff --git a/src/pretty.nit b/src/pretty.nit index e4d848d..d55e248 100644 --- a/src/pretty.nit +++ b/src/pretty.nit @@ -1586,7 +1586,7 @@ redef class ACallExpr v.addt end - v.visit n_id + v.visit n_qid if not n_args.n_exprs.is_empty then if is_stmt and n_args.n_exprs.length == 1 then @@ -1607,7 +1607,7 @@ end redef class ACallAssignExpr redef fun accept_pretty_printer(v) do v.visit_recv n_expr - v.visit n_id + v.visit n_qid if not n_args.n_exprs.is_empty then v.consume "(" @@ -1625,7 +1625,7 @@ end redef class ACallReassignExpr redef fun accept_pretty_printer(v) do v.visit_recv n_expr - v.visit n_id + v.visit n_qid if not n_args.n_exprs.is_empty then v.consume "(" @@ -1727,7 +1727,7 @@ redef class ANewExpr v.adds v.visit n_type - if n_id != null then + if n_qid != null then v.consume "." if not can_inline then @@ -1737,7 +1737,7 @@ redef class ANewExpr v.indent -= 1 end - v.visit n_id + v.visit n_qid end v.visit_args n_args.n_exprs diff --git a/src/semantize/scope.nit b/src/semantize/scope.nit index 4106660..fa10118 100644 --- a/src/semantize/scope.nit +++ b/src/semantize/scope.nit @@ -446,7 +446,7 @@ redef class ACallFormExpr redef fun accept_scope_visitor(v) do if n_expr isa AImplicitSelfExpr then - var name = n_id.text + var name = n_qid.n_id.text var variable = v.search_variable(name) if variable != null then var n: AExpr @@ -473,14 +473,14 @@ redef class ACallExpr 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 - return new AVarAssignExpr.init_avarassignexpr(n_id, n_assign, n_value) + return new AVarAssignExpr.init_avarassignexpr(n_qid.n_id, n_assign, n_value) end end @@ -488,6 +488,6 @@ redef class ACallReassignExpr 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) end end diff --git a/src/semantize/typing.nit b/src/semantize/typing.nit index 1b53f65..41d2058 100644 --- a/src/semantize/typing.nit +++ b/src/semantize/typing.nit @@ -1766,14 +1766,14 @@ end redef class ACallExpr - 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 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 @@ -1841,8 +1841,8 @@ redef class ASendReassignFormExpr 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 @@ -2014,11 +2014,11 @@ redef class ANewExpr var kind = recvtype.mclass.kind var name: String - var nid = self.n_id + var nqid = self.n_qid var node: ANode - 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