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);
public UsedAttr used_attr { get; set; }
public CodeContext () {
+ _root = new Namespace (null, this);
add_default_defines ();
resolver = new SymbolResolver ();
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;
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;
}
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 {
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 {
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 {
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 {
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);
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);
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;
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);
}
}
}
* @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;
}
/**
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;
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;
}
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) {
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 {
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 {
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 {
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 {
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 {
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;
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;