public override void visit_namespace(Namespace ns) { check_unused_attr(ns); ns.accept_children(this); }
/// <summary> /// Adds the specified namespace to this source file. /// /// <param name="ns">a namespace</param> /// </summary> public override void add_namespace(Namespace ns) { if (ns.owner == null) { ns.source_reference.file.add_node(ns); } if (scope.lookup(ns.name) is Namespace) { // merge if namespace already exists var old_ns = (Namespace)scope.lookup(ns.name); if (old_ns.external_package && !ns.external_package) { old_ns.source_reference = ns.source_reference; } foreach (var using_directive in ns.using_directives) { old_ns.add_using_directive(using_directive); } foreach (Namespace sub_ns in ns.get_namespaces()) { old_ns.add_namespace(sub_ns); } foreach (Class cl in ns.get_classes()) { old_ns.add_class(cl); } foreach (Struct st in ns.get_structs()) { old_ns.add_struct(st); } foreach (Interface iface in ns.get_interfaces()) { old_ns.add_interface(iface); } foreach (ValaDelegate d in ns.get_delegates()) { old_ns.add_delegate(d); } foreach (ValaEnum en in ns.get_enums()) { old_ns.add_enum(en); } foreach (ErrorDomain ed in ns.get_error_domains()) { old_ns.add_error_domain(ed); } foreach (Constant c in ns.get_constants()) { old_ns.add_constant(c); } foreach (Field f in ns.get_fields()) { old_ns.add_field(f); } foreach (Method m in ns.get_methods()) { old_ns.add_method(m); } foreach (Comment c in ns.get_comments()) { old_ns.add_comment(c); } foreach (ValaAttribute a in ns.attributes) { if (old_ns.get_attribute(a.name) == null) { old_ns.attributes.Add(a); } } } else { namespaces.Add(ns); scope.add(ns.name, ns); } }