diff options
author | Daniel Espinosa <esodan@gmail.com> | 2021-12-31 14:53:55 -0600 |
---|---|---|
committer | Daniel Espinosa <esodan@gmail.com> | 2022-01-03 17:51:33 -0600 |
commit | fa8287ca4e53baab57ebe6c360a4738886a4d859 (patch) | |
tree | dbbdbe5e5cbd4ca2eeb6e0ecbb9a5f0c9782eed9 | |
parent | f6742a9f9964f0e4472e3799a0582b15190b28b7 (diff) | |
download | vala-fa8287ca4e53baab57ebe6c360a4738886a4d859.tar.gz |
Namespace: set current context at construction time
With this change any namespace will have access to
current context, to allow access from its childs
Related to issue #1270
-rw-r--r-- | vala/valacodecontext.vala | 3 | ||||
-rw-r--r-- | vala/valagenieparser.vala | 16 | ||||
-rw-r--r-- | vala/valagirparser.vala | 4 | ||||
-rw-r--r-- | vala/valanamespace.vala | 3 | ||||
-rw-r--r-- | vala/valaparser.vala | 16 | ||||
-rw-r--r-- | vapigen/valagidlparser.vala | 4 |
6 files changed, 24 insertions, 22 deletions
diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 0b9022eb1..d3a11547d 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -206,7 +206,7 @@ public class Vala.CodeContext { private List<SourceFile> source_files = new ArrayList<SourceFile> (); private Map<string,unowned SourceFile> source_files_map = new HashMap<string,unowned SourceFile> (str_hash, str_equal); private List<string> c_source_files = new ArrayList<string> (str_equal); - private Namespace _root = new Namespace (null); + private Namespace _root; private List<string> packages = new ArrayList<string> (str_equal); @@ -241,6 +241,7 @@ public class Vala.CodeContext { public UsedAttr used_attr { get; set; } public CodeContext () { + _root = new Namespace (null, this); add_default_defines (); resolver = new SymbolResolver (); diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala index 87a125f22..b581135cf 100644 --- a/vala/valagenieparser.vala +++ b/vala/valagenieparser.vala @@ -2575,7 +2575,7 @@ public class Vala.Genie.Parser : CodeVisitor { var begin = get_location (); expect (TokenType.NAMESPACE); var sym = parse_symbol_name (); - var ns = new Namespace (sym.name, get_src (begin)); + var ns = new Namespace (sym.name, context, get_src (begin)); if (comment != null) { ns.add_comment (comment); comment = null; @@ -2587,7 +2587,7 @@ public class Vala.Genie.Parser : CodeVisitor { Namespace result = ns; while (sym.inner != null) { sym = sym.inner; - ns = new Namespace (sym.name, result.source_reference); + ns = new Namespace (sym.name, context, result.source_reference); ns.add_namespace ((Namespace) result); result = ns; } @@ -2722,7 +2722,7 @@ public class Vala.Genie.Parser : CodeVisitor { Symbol result = cl; while (sym.inner != null) { sym = sym.inner; - var ns = new Namespace (sym.name, cl.source_reference); + var ns = new Namespace (sym.name, context, cl.source_reference); if (result is Namespace) { ns.add_namespace ((Namespace) result); } else { @@ -3326,7 +3326,7 @@ public class Vala.Genie.Parser : CodeVisitor { Symbol result = st; while (sym.inner != null) { sym = sym.inner; - var ns = new Namespace (sym.name, st.source_reference); + var ns = new Namespace (sym.name, context, st.source_reference); if (result is Namespace) { ns.add_namespace ((Namespace) result); } else { @@ -3395,7 +3395,7 @@ public class Vala.Genie.Parser : CodeVisitor { Symbol result = iface; while (sym.inner != null) { sym = sym.inner; - var ns = new Namespace (sym.name, iface.source_reference); + var ns = new Namespace (sym.name, context, iface.source_reference); if (result is Namespace) { ns.add_namespace ((Namespace) result); } else { @@ -3482,7 +3482,7 @@ public class Vala.Genie.Parser : CodeVisitor { Symbol result = en; while (sym.inner != null) { sym = sym.inner; - var ns = new Namespace (sym.name, en.source_reference); + var ns = new Namespace (sym.name, context, en.source_reference); if (result is Namespace) { ns.add_namespace ((Namespace) result); } else { @@ -3538,7 +3538,7 @@ public class Vala.Genie.Parser : CodeVisitor { Symbol result = ed; while (sym.inner != null) { sym = sym.inner; - var ns = new Namespace (sym.name, ed.source_reference); + var ns = new Namespace (sym.name, context, ed.source_reference); if (result is Namespace) { ns.add_namespace ((Namespace) result); @@ -3826,7 +3826,7 @@ public class Vala.Genie.Parser : CodeVisitor { Symbol result = d; while (sym.inner != null) { sym = sym.inner; - var ns = new Namespace (sym.name, d.source_reference); + var ns = new Namespace (sym.name, context, d.source_reference); if (result is Namespace) { ns.add_namespace ((Namespace) result); diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index f99c64ceb..cf952d72c 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -2210,7 +2210,7 @@ public class Vala.GirParser : CodeVisitor { Namespace ns; push_node (vala_namespace, true); if (current.new_symbol) { - ns = new Namespace (vala_namespace, current.source_reference); + ns = new Namespace (vala_namespace, context, current.source_reference); current.symbol = ns; } else { ns = (Namespace) current.symbol; @@ -3838,7 +3838,7 @@ public class Vala.GirParser : CodeVisitor { void create_new_namespaces () { foreach (var node in Node.new_namespaces) { if (node.symbol == null) { - node.symbol = new Namespace (node.name, node.source_reference); + node.symbol = new Namespace (node.name, context, node.source_reference); } } } diff --git a/vala/valanamespace.vala b/vala/valanamespace.vala index d62babb63..73b0d314e 100644 --- a/vala/valanamespace.vala +++ b/vala/valanamespace.vala @@ -49,9 +49,10 @@ public class Vala.Namespace : Symbol { * @param source_reference reference to source code * @return newly created namespace */ - public Namespace (string? name, SourceReference? source_reference = null) { + public Namespace (string? name, CodeContext context, SourceReference? source_reference = null) { base (name, source_reference); access = SymbolAccessibility.PUBLIC; + this.context = context; } /** diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 5d12d1d68..3ad133ac9 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -2888,7 +2888,7 @@ public class Vala.Parser : CodeVisitor { var begin = get_location (); expect (TokenType.NAMESPACE); var sym = parse_symbol_name (); - var ns = new Namespace (sym.name, get_src (begin)); + var ns = new Namespace (sym.name, context, get_src (begin)); if (comment != null) { ns.add_comment (comment); comment = null; @@ -2916,7 +2916,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, ns.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, ns.source_reference) : parent); next.add_namespace ((Namespace) result); result = next; } @@ -3048,7 +3048,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, cl.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, cl.source_reference) : parent); if (result is Namespace) { next.add_namespace ((Namespace) result); } else if (!partial_reparse && cl.is_partial) { @@ -3497,7 +3497,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, st.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, st.source_reference) : parent); if (result is Namespace) { next.add_namespace ((Namespace) result); } else { @@ -3540,7 +3540,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, iface.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, iface.source_reference) : parent); if (result is Namespace) { next.add_namespace ((Namespace) result); } else { @@ -3607,7 +3607,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, en.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, en.source_reference) : parent); if (result is Namespace) { next.add_namespace ((Namespace) result); } else { @@ -3672,7 +3672,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, ed.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, ed.source_reference) : parent); if (result is Namespace) { next.add_namespace ((Namespace) result); } else { @@ -3927,7 +3927,7 @@ public class Vala.Parser : CodeVisitor { while (sym != null) { sym = sym.inner; - Symbol next = (sym != null ? new Namespace (sym.name, d.source_reference) : parent); + Symbol next = (sym != null ? new Namespace (sym.name, context, d.source_reference) : parent); if (result is Namespace) { next.add_namespace ((Namespace) result); } else { diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 007896ec4..2b1005de7 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -475,7 +475,7 @@ public class Vala.GIdlParser : CodeVisitor { foreach ( unowned string tok in path ) { cc = cp.scope.lookup (tok); if ( cc == null ) { - cc = new Namespace (tok, current_source_reference); + cc = new Namespace (tok, context, current_source_reference); add_symbol_to_container (cp, cc); } cp = cc; @@ -494,7 +494,7 @@ public class Vala.GIdlParser : CodeVisitor { ns.source_reference = current_source_reference; } } else { - ns = new Namespace (module.name, current_source_reference); + ns = new Namespace (module.name, context, current_source_reference); } current_namespace = ns; |