Beispiel #1
0
 public override void visit_namespace(Namespace ns)
 {
     check_unused_attr(ns);
     ns.accept_children(this);
 }
Beispiel #2
0
        /// <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);
            }
        }