1835 Symbol bestSoFar = typeNotFound;
1836 for (Scope.Entry e = scope.lookup(name); e.scope != null; e = e.next()) {
1837 Symbol sym = loadClass(env, e.sym.flatName());
1838 if (bestSoFar.kind == TYP && sym.kind == TYP &&
1839 bestSoFar != sym)
1840 return new AmbiguityError(bestSoFar, sym);
1841 else if (sym.kind < bestSoFar.kind)
1842 bestSoFar = sym;
1843 }
1844 return bestSoFar;
1845 }
1846
1847 /** Find an unqualified type symbol.
1848 * @param env The current environment.
1849 * @param name The type's name.
1850 */
1851 Symbol findType(Env<AttrContext> env, Name name) {
1852 Symbol bestSoFar = typeNotFound;
1853 Symbol sym;
1854 boolean staticOnly = false;
1855 for (Env<AttrContext> env1 = env; env1.outer != null; env1 = env1.outer) {
1856 if (isStatic(env1)) staticOnly = true;
1857 for (Scope.Entry e = env1.info.scope.lookup(name);
1858 e.scope != null;
1859 e = e.next()) {
1860 if (e.sym.kind == TYP) {
1861 if (staticOnly &&
1862 e.sym.type.hasTag(TYPEVAR) &&
1863 e.sym.owner.kind == TYP) return new StaticError(e.sym);
1864 return e.sym;
1865 }
1866 }
1867
1868 sym = findMemberType(env1, env1.enclClass.sym.type, name,
1869 env1.enclClass.sym);
1870 if (staticOnly && sym.kind == TYP &&
1871 sym.type.hasTag(CLASS) &&
1872 sym.type.getEnclosingType().hasTag(CLASS) &&
1873 env1.enclClass.sym.type.isParameterized() &&
1874 sym.type.getEnclosingType().isParameterized())
1875 return new StaticError(sym);
1876 else if (sym.exists()) return sym;
1877 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1878
1879 JCClassDecl encl = env1.baseClause ? (JCClassDecl)env1.tree : env1.enclClass;
1880 if ((encl.sym.flags() & STATIC) != 0)
1881 staticOnly = true;
1882 }
1883
1884 if (!env.tree.hasTag(IMPORT)) {
1885 sym = findGlobalType(env, env.toplevel.namedImportScope, name);
1886 if (sym.exists()) return sym;
1887 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1888
1889 sym = findGlobalType(env, env.toplevel.packge.members(), name);
1890 if (sym.exists()) return sym;
1891 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1892
1893 sym = findGlobalType(env, env.toplevel.starImportScope, name);
1894 if (sym.exists()) return sym;
1895 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1896 }
1897
1898 return bestSoFar;
1899 }
1900
1901 /** Find an unqualified identifier which matches a specified kind set.
1902 * @param env The current environment.
|
1835 Symbol bestSoFar = typeNotFound;
1836 for (Scope.Entry e = scope.lookup(name); e.scope != null; e = e.next()) {
1837 Symbol sym = loadClass(env, e.sym.flatName());
1838 if (bestSoFar.kind == TYP && sym.kind == TYP &&
1839 bestSoFar != sym)
1840 return new AmbiguityError(bestSoFar, sym);
1841 else if (sym.kind < bestSoFar.kind)
1842 bestSoFar = sym;
1843 }
1844 return bestSoFar;
1845 }
1846
1847 /** Find an unqualified type symbol.
1848 * @param env The current environment.
1849 * @param name The type's name.
1850 */
1851 Symbol findType(Env<AttrContext> env, Name name) {
1852 Symbol bestSoFar = typeNotFound;
1853 Symbol sym;
1854 boolean staticOnly = false;
1855 Symbol staticError = null;
1856 for (Env<AttrContext> env1 = env; env1.outer != null; env1 = env1.outer) {
1857 if (isStatic(env1)) staticOnly = true;
1858 for (Scope.Entry e = env1.info.scope.lookup(name);
1859 e.scope != null;
1860 e = e.next()) {
1861 if (e.sym.kind == TYP) {
1862 if (staticOnly &&
1863 e.sym.type.hasTag(TYPEVAR) &&
1864 e.sym.owner.kind == TYP) staticError = e.sym;
1865 else
1866 return e.sym;
1867 }
1868 }
1869
1870 sym = findMemberType(env1, env1.enclClass.sym.type, name,
1871 env1.enclClass.sym);
1872 if (staticOnly && sym.kind == TYP &&
1873 sym.type.hasTag(CLASS) &&
1874 sym.type.getEnclosingType().hasTag(CLASS) &&
1875 env1.enclClass.sym.type.isParameterized() &&
1876 sym.type.getEnclosingType().isParameterized())
1877 return new StaticError(sym);
1878 else if (sym.exists()) return sym;
1879 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1880
1881 JCClassDecl encl = env1.baseClause ? (JCClassDecl)env1.tree : env1.enclClass;
1882 if ((encl.sym.flags() & STATIC) != 0)
1883 staticOnly = true;
1884 }
1885 if (staticError != null)
1886 return new StaticError(staticError);
1887
1888 if (!env.tree.hasTag(IMPORT)) {
1889 sym = findGlobalType(env, env.toplevel.namedImportScope, name);
1890 if (sym.exists()) return sym;
1891 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1892
1893 sym = findGlobalType(env, env.toplevel.packge.members(), name);
1894 if (sym.exists()) return sym;
1895 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1896
1897 sym = findGlobalType(env, env.toplevel.starImportScope, name);
1898 if (sym.exists()) return sym;
1899 else if (sym.kind < bestSoFar.kind) bestSoFar = sym;
1900 }
1901
1902 return bestSoFar;
1903 }
1904
1905 /** Find an unqualified identifier which matches a specified kind set.
1906 * @param env The current environment.
|