public String formFullName(JavaSymbol symbol) { return formFullName(symbol.name, symbol.owner); }
public String formFullName(JavaSymbol symbol) { return formFullName(symbol.name, symbol.owner); }
public JavaSymbol.TypeJavaSymbol registerClass(JavaSymbol.TypeJavaSymbol classSymbol) { String flatName = formFullName(classSymbol); Preconditions.checkState(!classes.containsKey(flatName), "Registering class 2 times : %s", flatName); classes.put(flatName, classSymbol); return classSymbol; }
public JavaSymbol.TypeJavaSymbol registerClass(JavaSymbol.TypeJavaSymbol classSymbol) { String flatName = formFullName(classSymbol); Preconditions.checkState(!classes.containsKey(flatName), "Registering class 2 times : " + flatName); classes.put(flatName, classSymbol); return classSymbol; }
public JavaSymbol.TypeJavaSymbol registerClass(JavaSymbol.TypeJavaSymbol classSymbol) { String flatName = formFullName(classSymbol); Preconditions.checkState(!classes.containsKey(flatName), "Registering class 2 times : " + flatName); classes.put(flatName, classSymbol); return classSymbol; }
public JavaSymbol.TypeJavaSymbol registerClass(JavaSymbol.TypeJavaSymbol classSymbol) { String flatName = formFullName(classSymbol); Preconditions.checkState(!classes.containsKey(flatName), "Registering class 2 times : %s", flatName); classes.put(flatName, classSymbol); return classSymbol; }
@Override public List<JavaSymbol> lookup(String name) { List<JavaSymbol> symbolsList = Lists.newArrayList(); for (JavaSymbol site : symbols.values()) { JavaSymbol symbol = bytecodeCompleter.loadClass(bytecodeCompleter.formFullName(name, site)); if (symbol.kind < JavaSymbol.ERRONEOUS) { symbolsList.add(symbol); } } return symbolsList; } }
@Override public List<JavaSymbol> lookup(String name) { List<JavaSymbol> symbolsList = Lists.newArrayList(); for (JavaSymbol site : symbols.values()) { JavaSymbol symbol = bytecodeCompleter.loadClass(bytecodeCompleter.formFullName(name, site)); if (symbol.kind < JavaSymbol.ERRONEOUS) { symbolsList.add(symbol); } } return symbolsList; } }
@Override public List<JavaSymbol> lookup(String name) { List<JavaSymbol> symbolsList = Lists.newArrayList(); for (JavaSymbol site : symbols.values()) { JavaSymbol symbol = bytecodeCompleter.loadClass(bytecodeCompleter.formFullName(name, site)); if (symbol.kind < JavaSymbol.ERRONEOUS) { symbolsList.add(symbol); } } return symbolsList; } }
@Override public List<JavaSymbol> lookup(String name) { List<JavaSymbol> symbolsList = Lists.newArrayList(); for (JavaSymbol site : symbols.values()) { JavaSymbol symbol = bytecodeCompleter.loadClass(bytecodeCompleter.formFullName(name, site)); if (symbol.kind < JavaSymbol.ERRONEOUS) { symbolsList.add(symbol); } } return symbolsList; } }
private String formFullName(JavaSymbol symbol) { if(symbol.isTypeSymbol()) { return ((JavaSymbol.TypeJavaSymbol) symbol).getFullyQualifiedName(); } return formFullName(symbol.name, symbol.owner); }
private String formFullName(JavaSymbol symbol) { if(symbol.isTypeSymbol()) { return ((JavaSymbol.TypeJavaSymbol) symbol).getFullyQualifiedName(); } return formFullName(symbol.name, symbol.owner); }
/** * @param kind subset of {@link JavaSymbol#TYP}, {@link JavaSymbol#PCK} */ public JavaSymbol findIdentInPackage(JavaSymbol site, String name, int kind) { String fullname = bytecodeCompleter.formFullName(name, site); JavaSymbol bestSoFar = symbolNotFound; //Try to find a type matching the name. if ((kind & JavaSymbol.TYP) != 0) { JavaSymbol sym = bytecodeCompleter.loadClass(fullname); if (sym.kind < bestSoFar.kind) { bestSoFar = sym; } } //We did not find the class so identifier must be a package. if ((kind & JavaSymbol.PCK) != 0 && bestSoFar.kind >= symbolNotFound.kind) { bestSoFar = bytecodeCompleter.enterPackage(fullname); } return bestSoFar; }
/** * @param kind subset of {@link JavaSymbol#TYP}, {@link JavaSymbol#PCK} */ public JavaSymbol findIdentInPackage(JavaSymbol site, String name, int kind) { String fullname = bytecodeCompleter.formFullName(name, site); JavaSymbol bestSoFar = symbolNotFound; //Try to find a type matching the name. if ((kind & JavaSymbol.TYP) != 0) { JavaSymbol sym = bytecodeCompleter.loadClass(fullname); if (sym.kind < bestSoFar.kind) { bestSoFar = sym; } } //We did not find the class so identifier must be a package. if ((kind & JavaSymbol.PCK) != 0 && bestSoFar.kind >= symbolNotFound.kind) { bestSoFar = bytecodeCompleter.enterPackage(fullname); } return bestSoFar; }
/** * @param kind subset of {@link JavaSymbol#TYP}, {@link JavaSymbol#PCK} */ public JavaSymbol findIdentInPackage(JavaSymbol site, String name, int kind) { String fullname = bytecodeCompleter.formFullName(name, site); JavaSymbol bestSoFar = symbolNotFound; //Try to find a type matching the name. if ((kind & JavaSymbol.TYP) != 0) { JavaSymbol sym = bytecodeCompleter.loadClass(fullname); if (sym.kind < bestSoFar.kind) { bestSoFar = sym; } } //We did not find the class so identifier must be a package. if ((kind & JavaSymbol.PCK) != 0 && bestSoFar.kind >= symbolNotFound.kind) { bestSoFar = bytecodeCompleter.enterPackage(fullname); } return bestSoFar; }
/** * @param kind subset of {@link JavaSymbol#TYP}, {@link JavaSymbol#PCK} */ public JavaSymbol findIdentInPackage(JavaSymbol site, String name, int kind) { String fullname = bytecodeCompleter.formFullName(name, site); JavaSymbol bestSoFar = symbolNotFound; //Try to find a type matching the name. if ((kind & JavaSymbol.TYP) != 0) { JavaSymbol sym = bytecodeCompleter.loadClass(fullname); if (sym.kind < bestSoFar.kind) { bestSoFar = sym; } } //We did not find the class so identifier must be a package. if ((kind & JavaSymbol.PCK) != 0 && bestSoFar.kind >= symbolNotFound.kind) { bestSoFar = bytecodeCompleter.enterPackage(fullname); } return bestSoFar; }
@Override public List<JavaSymbol> lookup(String name) { List<JavaSymbol> symbolsList = Lists.newArrayList(); for (JavaSymbol site : symbols.values()) { // site is a package, try to load referenced type. if ((site.kind & JavaSymbol.PCK) != 0) { JavaSymbol symbol = bytecodeCompleter.loadClass(bytecodeCompleter.formFullName(name, site)); if (symbol.kind < JavaSymbol.ERRONEOUS) { symbolsList.add(symbol); } } // site is a type, try to find a matching type or field if ((site.kind & JavaSymbol.TYP) != 0 && site.kind < JavaSymbol.ERRONEOUS) { List<JavaSymbol> resolved = ((JavaSymbol.TypeJavaSymbol) site).members().lookup(name); resolved.stream() // TODO check accessibility // TODO factorize with static named import ? .filter(symbol -> symbol.kind < JavaSymbol.ERRONEOUS && Flags.isFlagged(symbol.flags, Flags.STATIC)) .forEach(symbolsList::add); } } return symbolsList; } }
@Override public List<JavaSymbol> lookup(String name) { List<JavaSymbol> symbolsList = Lists.newArrayList(); for (JavaSymbol site : symbols.values()) { //site is a package, try to load referenced type. if ((site.kind & JavaSymbol.PCK) != 0) { JavaSymbol symbol = bytecodeCompleter.loadClass(bytecodeCompleter.formFullName(name, site)); if (symbol.kind < JavaSymbol.ERRONEOUS) { symbolsList.add(symbol); } } //site is a type, try to find a matching type or field if ((site.kind & JavaSymbol.TYP) != 0) { List<JavaSymbol> resolved = ((JavaSymbol.TypeJavaSymbol) site).members().lookup(name); for (JavaSymbol symbol : resolved) { //TODO check accessibility //TODO factorize with static named import ? if (symbol.kind < JavaSymbol.ERRONEOUS && (symbol.flags & Flags.STATIC) != 0) { symbolsList.add(symbol); } } } } return symbolsList; } }
@Override public void complete(JavaSymbol symbol) { String bytecodeName = formFullName(symbol); if(symbol.isPackageSymbol()) { bytecodeName = bytecodeName + ".package-info"; } JavaSymbol.TypeJavaSymbol classSymbol = getClassSymbol(bytecodeName); if(symbol.isPackageSymbol()) { ((JavaSymbol.PackageJavaSymbol) symbol).packageInfo = classSymbol; } Preconditions.checkState(symbol.isPackageSymbol() || classSymbol == symbol); byte[] bytes = classLoader.getBytesForClass(bytecodeName); if (bytes != null) { ClassReader classReader = new ClassReader(bytes); classReader.accept( new BytecodeVisitor(this, symbols, classSymbol, parametrizedTypeCache), ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); } }
@Override public void complete(JavaSymbol symbol) { String bytecodeName = formFullName(symbol); if(symbol.isPackageSymbol()) { bytecodeName = bytecodeName + ".package-info"; } JavaSymbol.TypeJavaSymbol classSymbol = getClassSymbol(bytecodeName); if(symbol.isPackageSymbol()) { ((JavaSymbol.PackageJavaSymbol) symbol).packageInfo = classSymbol; } Preconditions.checkState(symbol.isPackageSymbol() || classSymbol == symbol); byte[] bytes = classLoader.getBytesForClass(bytecodeName); if (bytes != null) { ClassReader classReader = new ClassReader(bytes); classReader.accept( new BytecodeVisitor(this, symbols, classSymbol, parametrizedTypeCache), ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); } }