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; }
private Resolution findConstructor(Env env, JavaType site, List<JavaType> argTypes, List<JavaType> typeParams) { List<JavaType> newArgTypes = argTypes; JavaSymbol owner = site.symbol.owner(); if (!owner.isPackageSymbol() && !site.symbol.isStatic()) { // JLS8 - 8.8.1 & 8.8.9 : constructors of inner class have an implicit first arg of its directly enclosing class type newArgTypes = ImmutableList.<JavaType>builder().add(owner.enclosingClass().type).addAll(argTypes).build(); } return findMethodByStrictThenLooseInvocation(env, site, site, CONSTRUCTOR_NAME, newArgTypes, typeParams); }
@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); } }
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; }
@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); } }
private Resolution findConstructor(Env env, JavaType site, List<JavaType> argTypes, List<JavaType> typeParams) { List<JavaType> newArgTypes = argTypes; JavaSymbol owner = site.symbol.owner(); if (!owner.isPackageSymbol() && !site.symbol.isStatic()) { // JLS8 - 8.8.1 & 8.8.9 : constructors of inner class have an implicit first arg of its directly enclosing class type newArgTypes = ImmutableList.<JavaType>builder().add(owner.enclosingClass().type).addAll(argTypes).build(); } return findMethodByStrictThenLooseInvocation(env, site, site, CONSTRUCTOR_NAME, newArgTypes, typeParams); }
public String getFullyQualifiedName() { if (bytecodeName != null) { return bytecodeName; } if(fullyQualifiedName == null) { String newQualification = ""; if (owner.isPackageSymbol()) { if (!owner.name.isEmpty()) { newQualification = owner.name + "."; } } else if (owner.isTypeSymbol()) { newQualification = owner.type.fullyQualifiedName() + "$"; } else if (owner.isMethodSymbol()) { newQualification = owner.owner.type().fullyQualifiedName() + "$"; } else { throw new IllegalStateException("" + owner); } fullyQualifiedName = newQualification + getInternalName(); } return fullyQualifiedName; }
public String getFullyQualifiedName() { if(fullyQualifiedName == null) { String newQualification = ""; if (owner.isPackageSymbol()) { if (!owner.name.isEmpty()) { newQualification = owner.name + "."; } } else if (owner.isTypeSymbol()) { newQualification = owner.type.fullyQualifiedName() + "$"; } else if (owner.isMethodSymbol()) { newQualification = owner.owner.type().fullyQualifiedName() + "$"; } else { throw new IllegalStateException("" + owner); } fullyQualifiedName = newQualification + getInternalName(); } return fullyQualifiedName; }
public String getFullyQualifiedName() { if (bytecodeName != null) { return bytecodeName; } if(fullyQualifiedName == null) { String newQualification = ""; if (owner.isPackageSymbol()) { if (!owner.name.isEmpty()) { newQualification = owner.name + "."; } } else if (owner.isTypeSymbol()) { newQualification = owner.type.fullyQualifiedName() + "$"; } else if (owner.isMethodSymbol()) { newQualification = owner.owner.type().fullyQualifiedName() + "$"; } else { throw new IllegalStateException("" + owner); } fullyQualifiedName = newQualification + getInternalName(); } return fullyQualifiedName; }
if (!owner.isPackageSymbol()) {
if (!owner.isPackageSymbol()) {
if (!owner.isPackageSymbol()) { argTypes = ImmutableList.of(owner.enclosingClass().type);
if (!owner.isPackageSymbol()) { argTypes = ImmutableList.of(owner.enclosingClass().type);