@Override public SymbolMetadataResolve metadata() { complete(); return symbolMetadata; }
@Override public SymbolMetadataResolve metadata() { complete(); return symbolMetadata; }
@Override public SymbolMetadataResolve metadata() { complete(); return symbolMetadata; }
protected boolean isFlag(int flag) { complete(); return (flags & flag) != 0; }
@Override public SymbolMetadataResolve metadata() { complete(); return symbolMetadata; }
@Override public boolean isPackageVisibility() { complete(); return (flags & (Flags.PROTECTED | Flags.PRIVATE | Flags.PUBLIC)) == 0; }
@Override public boolean isPackageVisibility() { complete(); return (flags & (Flags.PROTECTED | Flags.PRIVATE | Flags.PUBLIC)) == 0; }
protected boolean isFlag(int flag) { complete(); return (flags & flag) != 0; }
public void completeSymbols() { for (JavaSymbol symbol : uncompleted) { symbol.complete(); } uncompleted.clear(); }
public void completeSymbols() { for (JavaSymbol symbol : uncompleted) { symbol.complete(); } uncompleted.clear(); }
public void completeSymbols() { for (JavaSymbol symbol : uncompleted) { symbol.complete(); } uncompleted.clear(); }
public void completeSymbols() { for (JavaSymbol symbol : uncompleted) { symbol.complete(); } uncompleted.clear(); }
@Override public boolean isPackageVisibility() { complete(); return Flags.isNotFlagged(flags, Flags.PROTECTED | Flags.PRIVATE | Flags.PUBLIC); }
protected boolean isFlag(int flag) { complete(); return Flags.isFlagged(flags, flag); }
@Override public boolean isPackageVisibility() { complete(); return Flags.isNotFlagged(flags, Flags.PROTECTED | Flags.PRIVATE | Flags.PUBLIC); }
protected boolean isFlag(int flag) { complete(); return Flags.isFlagged(flags, flag); }
private JavaType substituteInTypeVar(TypeVariableJavaType typevar, TypeSubstitution substitution) { // completing owner of type var to ensure type var's bounds have been computed typevar.symbol.owner().complete(); if(typevarExplored.contains(typevar.symbol) || typevar.bounds == null) { return typevar; } typevarExplored.push((JavaSymbol.TypeVariableJavaSymbol) typevar.symbol); List<JavaType> substitutedBounds = typevar.bounds.stream().map(t -> applySubstitution(t, substitution)).collect(Collectors.toList()); typevarExplored.pop(); if(substitutedBounds.equals(typevar.bounds)) { return typevar; } TypeVariableJavaType typeVariableJavaType = new TypeVariableJavaType((JavaSymbol.TypeVariableJavaSymbol) typevar.symbol); typeVariableJavaType.bounds = substitutedBounds; return typeVariableJavaType; }
private JavaType substituteInTypeVar(TypeVariableJavaType typevar, TypeSubstitution substitution) { // completing owner of type var to ensure type var's bounds have been computed typevar.symbol.owner().complete(); if(typevarExplored.contains(typevar.symbol) || typevar.bounds == null) { return typevar; } typevarExplored.push((JavaSymbol.TypeVariableJavaSymbol) typevar.symbol); List<JavaType> substitutedBounds = typevar.bounds.stream().map(t -> applySubstitution(t, substitution)).collect(Collectors.toList()); typevarExplored.pop(); if(substitutedBounds.equals(typevar.bounds)) { return typevar; } TypeVariableJavaType typeVariableJavaType = new TypeVariableJavaType((JavaSymbol.TypeVariableJavaSymbol) typevar.symbol); typeVariableJavaType.bounds = substitutedBounds; return typeVariableJavaType; }
@Override public void complete(JavaSymbol symbol) { LOG.debug("Completing symbol : " + symbol.name); //complete outer class to set flags for inner class properly. if (symbol.owner.isKind(JavaSymbol.TYP)) { symbol.owner.complete(); } String bytecodeName = formFullName(symbol); JavaSymbol.TypeJavaSymbol classSymbol = getClassSymbol(bytecodeName); Preconditions.checkState(classSymbol == symbol); InputStream inputStream = null; ClassReader classReader = null; try { inputStream = inputStreamFor(bytecodeName); if(inputStream != null) { classReader = new ClassReader(inputStream); } } catch (IOException e) { throw Throwables.propagate(e); } finally { Closeables.closeQuietly(inputStream); } if (classReader != null) { classReader.accept( new BytecodeVisitor(this, symbols, (JavaSymbol.TypeJavaSymbol) symbol, parametrizedTypeCache), ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); } }
@Override public void complete(JavaSymbol symbol) { LOG.debug("Completing symbol : " + symbol.name); //complete outer class to set flags for inner class properly. if (symbol.owner.isKind(JavaSymbol.TYP)) { symbol.owner.complete(); } String bytecodeName = formFullName(symbol); JavaSymbol.TypeJavaSymbol classSymbol = getClassSymbol(bytecodeName); Preconditions.checkState(classSymbol == symbol); InputStream inputStream = null; ClassReader classReader = null; try { inputStream = inputStreamFor(bytecodeName); if(inputStream != null) { classReader = new ClassReader(inputStream); } } catch (IOException e) { throw Throwables.propagate(e); } finally { Closeables.closeQuietly(inputStream); } if (classReader != null) { classReader.accept( new BytecodeVisitor(this, symbols, (JavaSymbol.TypeJavaSymbol) symbol, parametrizedTypeCache), ClassReader.SKIP_CODE | ClassReader.SKIP_FRAMES | ClassReader.SKIP_DEBUG); } }