@Override public void visitTypeVariable(String name) { List<JavaSymbol> lookup = Lists.newArrayList(); JavaSymbol currentSymbol = classSymbol; if(methodSymbol != null) { currentSymbol = methodSymbol; } while ((currentSymbol.isKind(JavaSymbol.TYP) || currentSymbol.isKind(JavaSymbol.MTH)) && lookup.isEmpty()) { if(currentSymbol.isKind(JavaSymbol.MTH)) { lookup = ((JavaSymbol.MethodJavaSymbol)currentSymbol).typeParameters().lookup(name); } else if (currentSymbol.isKind(JavaSymbol.TYP)) { lookup = ((JavaSymbol.TypeJavaSymbol)currentSymbol).typeParameters().lookup(name); } currentSymbol = currentSymbol.owner(); } Preconditions.checkState(!lookup.isEmpty(), "Could not resolve type parameter: %s in class %s", name, classSymbol.getName()); Preconditions.checkState(lookup.size() == 1, "More than one type parameter with the same name"); typeRead = lookup.get(0).type; visitEnd(); }
@Override public void visitTypeVariable(String name) { List<JavaSymbol> lookup = Lists.newArrayList(); JavaSymbol currentSymbol = classSymbol; if(methodSymbol != null) { currentSymbol = methodSymbol; } while ((currentSymbol.isKind(JavaSymbol.TYP) || currentSymbol.isKind(JavaSymbol.MTH)) && lookup.isEmpty()) { if(currentSymbol.isKind(JavaSymbol.MTH)) { lookup = ((JavaSymbol.MethodJavaSymbol)currentSymbol).typeParameters().lookup(name); } else if (currentSymbol.isKind(JavaSymbol.TYP)) { lookup = ((JavaSymbol.TypeJavaSymbol)currentSymbol).typeParameters().lookup(name); } currentSymbol = currentSymbol.owner(); } Preconditions.checkState(!lookup.isEmpty(), "Could not resolve type parameter: "+name+" in class "+classSymbol.getName()); Preconditions.checkState(lookup.size() == 1, "More than one type parameter with the same name"); typeRead = lookup.get(0).type; visitEnd(); }
@Override public void visitTypeVariable(String name) { List<JavaSymbol> lookup = Lists.newArrayList(); JavaSymbol currentSymbol = classSymbol; if(methodSymbol != null) { currentSymbol = methodSymbol; } while ((currentSymbol.isKind(JavaSymbol.TYP) || currentSymbol.isKind(JavaSymbol.MTH)) && lookup.isEmpty()) { if(currentSymbol.isKind(JavaSymbol.MTH)) { lookup = ((JavaSymbol.MethodJavaSymbol)currentSymbol).typeParameters().lookup(name); } else if (currentSymbol.isKind(JavaSymbol.TYP)) { lookup = ((JavaSymbol.TypeJavaSymbol)currentSymbol).typeParameters().lookup(name); } currentSymbol = currentSymbol.owner(); } Preconditions.checkState(!lookup.isEmpty(), "Could not resolve type parameter: "+name+" in class "+classSymbol.getName()); Preconditions.checkState(lookup.size() == 1, "More than one type parameter with the same name"); typeRead = lookup.get(0).type; visitEnd(); }
@Override public void visitTypeVariable(String name) { List<JavaSymbol> lookup = Lists.newArrayList(); JavaSymbol currentSymbol = classSymbol; if(methodSymbol != null) { currentSymbol = methodSymbol; } while ((currentSymbol.isKind(JavaSymbol.TYP) || currentSymbol.isKind(JavaSymbol.MTH)) && lookup.isEmpty()) { if(currentSymbol.isKind(JavaSymbol.MTH)) { lookup = ((JavaSymbol.MethodJavaSymbol)currentSymbol).typeParameters().lookup(name); } else if (currentSymbol.isKind(JavaSymbol.TYP)) { lookup = ((JavaSymbol.TypeJavaSymbol)currentSymbol).typeParameters().lookup(name); } currentSymbol = currentSymbol.owner(); } Preconditions.checkState(!lookup.isEmpty(), "Could not resolve type parameter: %s in class %s", name, classSymbol.getName()); Preconditions.checkState(lookup.size() == 1, "More than one type parameter with the same name"); typeRead = lookup.get(0).type; visitEnd(); }
@Override public FieldVisitor visitField(int flags, String name, String desc, @Nullable String signature, @Nullable Object value) { Preconditions.checkNotNull(name); Preconditions.checkNotNull(desc); if (isNotSynthetic(flags)) { //Flags from asm lib are defined in Opcodes class and map to flags defined in Flags class int filteredFlags = Flags.filterAccessBytecodeFlags(flags); JavaType type = convertAsmType(Type.getType(desc)); JavaSymbol.VariableJavaSymbol symbol = new JavaSymbol.VariableJavaSymbol(filteredFlags, name, type, classSymbol, value); classSymbol.members.enter(symbol); if (signature != null) { ReadType typeReader = new ReadType(); new SignatureReader(signature).accept(typeReader); symbol.type = typeReader.typeRead; } // checks for annotations on the field return new BytecodeFieldVisitor(symbol, this); } return null; }
@Override public void visitEnd() { super.visitEnd(); JavaType typeArgument; switch (wildcard) { case EXTENDS: typeArgument = parametrizedTypeCache.getWildcardType(this.typeRead, JavaType.WildCardType.BoundType.EXTENDS); break; case SUPER: typeArgument = parametrizedTypeCache.getWildcardType(this.typeRead, JavaType.WildCardType.BoundType.SUPER); break; case INSTANCEOF: default: typeArgument = this.typeRead; break; } ReadType.this.typeArguments.add(typeArgument); } };
@Override public FieldVisitor visitField(int flags, String name, String desc, @Nullable String signature, @Nullable Object value) { Preconditions.checkNotNull(name); Preconditions.checkNotNull(desc); if (!BytecodeCompleter.isSynthetic(flags)) { //Flags from asm lib are defined in Opcodes class and map to flags defined in Flags class final JavaSymbol.VariableJavaSymbol symbol = new JavaSymbol.VariableJavaSymbol(bytecodeCompleter.filterBytecodeFlags(flags), name, convertAsmType(org.objectweb.asm.Type.getType(desc)), classSymbol); classSymbol.members.enter(symbol); if (signature != null) { ReadType typeReader = new ReadType(); new SignatureReader(signature).accept(typeReader); symbol.type = typeReader.typeRead; } // checks for annotations on the field return new BytecodeFieldVisitor(symbol, this); } return null; }
@Override public void visitEnd() { super.visitEnd(); JavaType typeArgument; switch (wildcard) { case EXTENDS: typeArgument = parametrizedTypeCache.getWildcardType(this.typeRead, WildCardType.BoundType.EXTENDS); break; case SUPER: typeArgument = parametrizedTypeCache.getWildcardType(this.typeRead, WildCardType.BoundType.SUPER); break; case INSTANCEOF: default: typeArgument = this.typeRead; break; } ReadType.this.typeArguments.add(typeArgument); } };
@Override public FieldVisitor visitField(int flags, String name, String desc, @Nullable String signature, @Nullable Object value) { Preconditions.checkNotNull(name); Preconditions.checkNotNull(desc); if (!BytecodeCompleter.isSynthetic(flags)) { //Flags from asm lib are defined in Opcodes class and map to flags defined in Flags class final JavaSymbol.VariableJavaSymbol symbol = new JavaSymbol.VariableJavaSymbol(bytecodeCompleter.filterBytecodeFlags(flags), name, convertAsmType(org.objectweb.asm.Type.getType(desc)), classSymbol); classSymbol.members.enter(symbol); if (signature != null) { ReadType typeReader = new ReadType(); new SignatureReader(signature).accept(typeReader); symbol.type = typeReader.typeRead; } // checks for annotations on the field return new BytecodeFieldVisitor(symbol, this); } return null; }
@Override public FieldVisitor visitField(int flags, String name, String desc, @Nullable String signature, @Nullable Object value) { Preconditions.checkNotNull(name); Preconditions.checkNotNull(desc); if (isNotSynthetic(flags)) { //Flags from asm lib are defined in Opcodes class and map to flags defined in Flags class int filteredFlags = Flags.filterAccessBytecodeFlags(flags); JavaType type = convertAsmType(Type.getType(desc)); JavaSymbol.VariableJavaSymbol symbol = new JavaSymbol.VariableJavaSymbol(filteredFlags, name, type, classSymbol, value); classSymbol.members.enter(symbol); if (signature != null) { ReadType typeReader = new ReadType(); new SignatureReader(signature).accept(typeReader); symbol.type = typeReader.typeRead; } // checks for annotations on the field return new BytecodeFieldVisitor(symbol, this); } return null; }
@Override public void visitEnd() { super.visitEnd(); JavaType typeArgument; switch (wildcard) { case EXTENDS: typeArgument = parametrizedTypeCache.getWildcardType(this.typeRead, WildCardType.BoundType.EXTENDS); break; case SUPER: typeArgument = parametrizedTypeCache.getWildcardType(this.typeRead, WildCardType.BoundType.SUPER); break; case INSTANCEOF: default: typeArgument = this.typeRead; break; } ReadType.this.typeArguments.add(typeArgument); } };
@Override public void visitEnd() { super.visitEnd(); ((JavaType.MethodJavaType)methodSymbol.type).resultType = typeRead; methodSymbol.returnType = typeRead.symbol; } };
@Override public void visitEnd() { super.visitEnd(); ((JavaType.MethodJavaType)methodSymbol.type).argTypes.add(typeRead); } };
@Override public void visitEnd() { super.visitEnd(); bounds.add(typeRead); } };
@Override public void visitEnd() { super.visitEnd(); if (bounds != null) { bounds.add(typeRead); } } };
@Override public void visitEnd() { super.visitEnd(); ReadType.this.typeArguments.add(this.typeRead); } };
@Override public void visitEnd() { super.visitEnd(); ((JavaType.MethodJavaType)methodSymbol.type).thrown.add(typeRead); } };
@Override public void visitEnd() { super.visitEnd(); ((JavaType.ClassJavaType) classSymbol.type).supertype = typeRead; } };