internal static int ResolveTypes(ProjectDom db, ICompilationUnit unit, IList <IType> types, out List <IType> result)
        {
            TypeResolverVisitor tr = new TypeResolverVisitor(db, unit);

            int unresolvedCount = 0;

            result = new List <IType> ();
            foreach (IType c in types)
            {
                tr.UnresolvedCount = 0;
                DomType rc = (DomType)c.AcceptVisitor(tr, null);
                rc.Resolved = true;

                if (tr.UnresolvedCount == 0 && c.FullName != "System.Object")
                {
                    // If the class has no base classes, make sure it subclasses System.Object
                    if (rc.BaseType == null)
                    {
                        rc.BaseType = new DomReturnType("System.Object");
                    }
                }

                result.Add(rc);
                unresolvedCount += tr.UnresolvedCount;
            }

            return(unresolvedCount);
        }
Esempio n. 2
0
        internal static int ResolveTypes(ProjectDom db, ICompilationUnit unit, IEnumerable <IType> types, IEnumerable <IAttribute> attributes, out List <IType> result, out List <IAttribute> resultAtrtibutes)
        {
            TypeResolverVisitor tr = new TypeResolverVisitor(db, unit);

            int unresolvedCount = 0;

            result = new List <IType> ();
            foreach (IType c in types)
            {
                tr.UnresolvedCount = 0;
                DomType rc = (DomType)c.AcceptVisitor(tr, null);
                if (rc.CompilationUnit != null)
                {
                    rc.CompilationUnit = new CompilationUnit(rc.CompilationUnit.FileName);
                }
                rc.Resolved = true;
                // no need to set the base type here - the completion db handles that
                // (setting to system.object is wrong for enums & structs - and interfaces may never have a base)

/*
 *                              if (tr.UnresolvedCount == 0 && c.FullName != "System.Object") {
 *                                      // If the class has no base classes, make sure it subclasses System.Object
 *                                      if (rc.BaseType == null)
 *                                              rc.BaseType = new DomReturnType ("System.Object");
 *                              }*/

                result.Add(rc);
                unresolvedCount += tr.UnresolvedCount;
            }

            resultAtrtibutes = new List <IAttribute> ();
            foreach (IAttribute a in attributes)
            {
                tr.UnresolvedCount = 0;
                DomAttribute ra = (DomAttribute)a.AcceptVisitor(tr, null);
                resultAtrtibutes.Add(ra);
                unresolvedCount += tr.UnresolvedCount;
            }

            return(unresolvedCount);
        }