src: update AST client to handle qualified identifiers (no semantic change)
authorJean Privat <jean@pryen.org>
Thu, 6 Aug 2015 21:04:12 +0000 (17:04 -0400)
committerJean Privat <jean@pryen.org>
Fri, 7 Aug 2015 15:29:30 +0000 (11:29 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/astbuilder.nit
src/ffi/c_compiler_options.nit
src/frontend/regex_phase.nit
src/metrics/detect_covariance.nit
src/parser/parser_work.nit
src/pretty.nit
src/semantize/scope.nit
src/semantize/typing.nit

index ef969d7..cc7cd88 100644 (file)
@@ -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
index 1618f9e..8bb2e44 100644 (file)
@@ -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
index feafa77..57e8822 100644 (file)
@@ -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
index ef403a3..746ad9e 100644 (file)
@@ -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
index 66941c2..a5bef33 100644 (file)
@@ -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
index e4d848d..d55e248 100644 (file)
@@ -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
index 4106660..fa10118 100644 (file)
@@ -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
index 1b53f65..41d2058 100644 (file)
@@ -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