@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: %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(); }
/** * 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); }
/** * 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 |= bytecodeCompleter.filterBytecodeFlags(flags); Preconditions.checkState(innerClass.owner == classSymbol, "Innerclass: " + innerClass.owner.getName() + " and classSymbol: " + classSymbol.getName() + " are not the same."); classSymbol.members.enter(innerClass); }
/** * 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(bytecodeName, flags); innerClass.flags |= bytecodeCompleter.filterBytecodeFlags(flags); Preconditions.checkState(innerClass.owner == classSymbol, "Innerclass: " + innerClass.owner.getName() + " and classSymbol: " + classSymbol.getName() + " are not the same."); classSymbol.members.enter(innerClass); }
/** * 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); }