private static boolean isSynchronized(Symbol methodSymbol) { return Flags.isFlagged( ((JavaSymbol) methodSymbol).flags(), Flags.SYNCHRONIZED); }
@CheckForNull private static List<SymbolMetadata.AnnotationValue> valuesForGlobalAnnotation(JavaSymbol method, String annotation) { return Arrays.asList(method, method.enclosingClass(), method.packge()).stream() .map(symbol -> symbol.metadata().valuesForAnnotation(annotation)) .filter(Objects::nonNull) .findFirst() .orElse(null); }
private static void associateReference(IdentifierTree tree, JavaSymbol symbol) { if (symbol.kind < JavaSymbol.ERRONEOUS) { ((IdentifierTreeImpl) tree).setSymbol(symbol); symbol.addUsage(tree); } }
private static List<JavaType> addImplicitOuterClassParameter(List<JavaType> parameterTypes, JavaSymbol.TypeJavaSymbol constructorIdentifierSymbol) { List<JavaType> result = parameterTypes; JavaSymbol owner = constructorIdentifierSymbol.owner(); if (!owner.isPackageSymbol() && !constructorIdentifierSymbol.isStatic()) { result = ImmutableList.<JavaType>builder().add(owner.enclosingClass().type).addAll(parameterTypes).build(); } return result; }
/** * Is symbol inherited in given class? */ @VisibleForTesting static boolean isInheritedIn(JavaSymbol symbol, JavaSymbol.TypeJavaSymbol clazz) { switch (symbol.flags() & Flags.ACCESS_FLAGS) { case Flags.PUBLIC: return true; case Flags.PRIVATE: return symbol.owner() == clazz; case Flags.PROTECTED: // TODO see Javac return true; case 0: // TODO see Javac JavaSymbol.PackageJavaSymbol thisPackage = symbol.packge(); for (JavaSymbol.TypeJavaSymbol sup = clazz; sup != null && sup != symbol.owner(); sup = superclassSymbol(sup)) { if (sup.packge() != thisPackage) { return false; } } return true; default: throw new IllegalStateException(); } }
if (!owner.isPackageSymbol()) { argTypes.add(owner.enclosingClass().type); VariableTree variableTree = parametersTree.get(i); JavaSymbol param = scopeSymbols.get(i); if (variableTree.simpleName().name().equals(param.getName())) { param.complete(); argTypes.add(param.getType());
public TypeParameterDeclaration(JavaSymbol symbol) { super(ASM_API_VERSION); this.symbol = symbol; if(symbol.isTypeSymbol()) { ((JavaSymbol.TypeJavaSymbol) symbol).typeParameters = new Scope(symbol); }else if (symbol.isMethodSymbol()) { ((JavaSymbol.MethodJavaSymbol) symbol).typeParameters = new Scope(symbol); } }
private static boolean differentAnnotations(List<JavaSymbol> methodParamSymbols, List<JavaSymbol> overrideeParamSymbols) { for (int i = 0; i < methodParamSymbols.size(); i++) { if (differentAnnotations(methodParamSymbols.get(i).metadata(), overrideeParamSymbols.get(i).metadata())) { return true; } } return false; }
@Override public SymbolMetadataResolve metadata() { complete(); return symbolMetadata; }
@Override public boolean isFinal() { return isFlag(Flags.FINAL); }
public JavaType type() { if (type == null) { if(symbol.isKind(JavaSymbol.MTH)) { return ((JavaType.MethodJavaType)symbol.type).resultType; } return symbol.type; } return type; } }
/** * Invoked when current class classified as outer class of some inner class. * Adds inner class as member. */ private void defineInnerClass(String bytecodeName, int flags) { JavaSymbol.TypeJavaSymbol innerClass = getClassSymbol(classSymbol, bytecodeName, flags); innerClass.flags |= Flags.filterAccessBytecodeFlags(flags); Preconditions.checkState(innerClass.owner == classSymbol, "Innerclass: " + innerClass.owner.getName() + " and classSymbol: " + classSymbol.getName() + " are not the same."); classSymbol.members.enter(innerClass); }
/** * Is given class a subclass of given base class, or an inner class of a subclass? */ private static boolean isInnerSubClass(JavaSymbol.TypeJavaSymbol c, JavaSymbol base) { while (c != null && isSubClass(c, base)) { c = c.owner().enclosingClass(); } return c != null; }
for (IdentifierTree identifierTree : sym.usages()) { idents.put(identifierTree, sym); sb.append(" ").append(sym.getName()); int refLine = ((JavaTree) sym.declaration()).getTokenLine(); if (refLine != line) { sb.append(" ref#").append(refLine);
private String formFullName(JavaSymbol symbol) { if(symbol.isTypeSymbol()) { return ((JavaSymbol.TypeJavaSymbol) symbol).getFullyQualifiedName(); } return formFullName(symbol.name, symbol.owner); }
@Override public String signature() { if (signature == null) { signature = ""; if (owner != null) { signature += owner.getType().fullyQualifiedName(); } signature += "#" + name + desc(); } return signature; }
/** * Is symbol inherited in given class? */ @VisibleForTesting boolean isInheritedIn(JavaSymbol symbol, JavaSymbol.TypeJavaSymbol clazz) { switch (symbol.flags() & Flags.ACCESS_FLAGS) { case Flags.PUBLIC: return true; case Flags.PRIVATE: return symbol.owner() == clazz; case Flags.PROTECTED: // TODO see Javac return true; case 0: // TODO see Javac JavaSymbol.PackageJavaSymbol thisPackage = symbol.packge(); for (JavaSymbol.TypeJavaSymbol sup = clazz; sup != null && sup != symbol.owner(); sup = superclassSymbol(sup)) { if (sup.packge() != thisPackage) { return false; } } return true; default: throw new IllegalStateException(); } }
if (!owner.isPackageSymbol()) { argTypes.add(owner.enclosingClass().type); VariableTree variableTree = parametersTree.get(i); JavaSymbol param = scopeSymbols.get(i); if (variableTree.simpleName().name().equals(param.getName())) { param.complete(); argTypes.add(param.getType());