class com.sun.tools.javac.comp.Analyzer$DiamondInitializer extends com.sun.tools.javac.comp.Analyzer$StatementAnalyzer<com.sun.tools.javac.tree.JCTree$JCNewClass, com.sun.tools.javac.tree.JCTree$JCNewClass>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.sun.tools.javac.comp.Analyzer$DiamondInitializer
super_class: com.sun.tools.javac.comp.Analyzer$StatementAnalyzer
{
final com.sun.tools.javac.comp.Analyzer this$0;
descriptor: Lcom/sun/tools/javac/comp/Analyzer;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(com.sun.tools.javac.comp.Analyzer);
descriptor: (Lcom/sun/tools/javac/comp/Analyzer;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.sun.tools.javac.comp.Analyzer$DiamondInitializer.this$0:Lcom/sun/tools/javac/comp/Analyzer;
1: aload 0
aload 1
getstatic com.sun.tools.javac.comp.Analyzer$AnalyzerMode.DIAMOND:Lcom/sun/tools/javac/comp/Analyzer$AnalyzerMode;
getstatic com.sun.tools.javac.tree.JCTree$Tag.NEWCLASS:Lcom/sun/tools/javac/tree/JCTree$Tag;
invokespecial com.sun.tools.javac.comp.Analyzer$StatementAnalyzer.<init>:(Lcom/sun/tools/javac/comp/Analyzer;Lcom/sun/tools/javac/comp/Analyzer$AnalyzerMode;Lcom/sun/tools/javac/tree/JCTree$Tag;)V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/tools/javac/comp/Analyzer$DiamondInitializer;
MethodParameters:
Name Flags
this$0 final
boolean match(com.sun.tools.javac.tree.JCTree$JCNewClass);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCNewClass;)Z
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.clazz:Lcom/sun/tools/javac/tree/JCTree$JCExpression;
getstatic com.sun.tools.javac.tree.JCTree$Tag.TYPEAPPLY:Lcom/sun/tools/javac/tree/JCTree$Tag;
invokevirtual com.sun.tools.javac.tree.JCTree$JCExpression.hasTag:(Lcom/sun/tools/javac/tree/JCTree$Tag;)Z
ifeq 4
1: aload 1
invokestatic com.sun.tools.javac.tree.TreeInfo.isDiamond:(Lcom/sun/tools/javac/tree/JCTree;)Z
ifne 4
2: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
ifnull 3
aload 0
getfield com.sun.tools.javac.comp.Analyzer$DiamondInitializer.this$0:Lcom/sun/tools/javac/comp/Analyzer;
getfield com.sun.tools.javac.comp.Analyzer.allowDiamondWithAnonymousClassCreation:Z
ifeq 4
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/tools/javac/comp/Analyzer$DiamondInitializer;
0 5 1 tree Lcom/sun/tools/javac/tree/JCTree$JCNewClass;
MethodParameters:
Name Flags
tree
com.sun.tools.javac.util.List<com.sun.tools.javac.tree.JCTree$JCNewClass> rewrite(com.sun.tools.javac.tree.JCTree$JCNewClass);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCNewClass;)Lcom/sun/tools/javac/util/List;
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.clazz:Lcom/sun/tools/javac/tree/JCTree$JCExpression;
getstatic com.sun.tools.javac.tree.JCTree$Tag.TYPEAPPLY:Lcom/sun/tools/javac/tree/JCTree$Tag;
invokevirtual com.sun.tools.javac.tree.JCTree$JCExpression.hasTag:(Lcom/sun/tools/javac/tree/JCTree$Tag;)Z
ifeq 4
1: aload 0
getfield com.sun.tools.javac.comp.Analyzer$DiamondInitializer.this$0:Lcom/sun/tools/javac/comp/Analyzer;
getfield com.sun.tools.javac.comp.Analyzer.copier:Lcom/sun/tools/javac/comp/Analyzer$AnalyzerCopier;
aload 1
invokevirtual com.sun.tools.javac.comp.Analyzer$AnalyzerCopier.copy:(Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/tree/JCTree;
checkcast com.sun.tools.javac.tree.JCTree$JCNewClass
astore 2
start local 2 2: aload 2
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.clazz:Lcom/sun/tools/javac/tree/JCTree$JCExpression;
checkcast com.sun.tools.javac.tree.JCTree$JCTypeApply
invokestatic com.sun.tools.javac.util.List.nil:()Lcom/sun/tools/javac/util/List;
putfield com.sun.tools.javac.tree.JCTree$JCTypeApply.arguments:Lcom/sun/tools/javac/util/List;
3: aload 2
invokestatic com.sun.tools.javac.util.List.of:(Ljava/lang/Object;)Lcom/sun/tools/javac/util/List;
areturn
end local 2 4: StackMap locals:
StackMap stack:
aload 1
invokestatic com.sun.tools.javac.util.List.of:(Ljava/lang/Object;)Lcom/sun/tools/javac/util/List;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/sun/tools/javac/comp/Analyzer$DiamondInitializer;
0 5 1 oldTree Lcom/sun/tools/javac/tree/JCTree$JCNewClass;
2 4 2 nc Lcom/sun/tools/javac/tree/JCTree$JCNewClass;
Signature: (Lcom/sun/tools/javac/tree/JCTree$JCNewClass;)Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/tree/JCTree$JCNewClass;>;
MethodParameters:
Name Flags
oldTree
void process(com.sun.tools.javac.tree.JCTree$JCNewClass, com.sun.tools.javac.tree.JCTree$JCNewClass, boolean);
descriptor: (Lcom/sun/tools/javac/tree/JCTree$JCNewClass;Lcom/sun/tools/javac/tree/JCTree$JCNewClass;Z)V
flags: (0x0000)
Code:
stack=3, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
ifne 20
1: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
ifnull 11
2: aload 2
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
getfield com.sun.tools.javac.tree.JCTree$JCClassDecl.implementing:Lcom/sun/tools/javac/util/List;
invokevirtual com.sun.tools.javac.util.List.nonEmpty:()Z
ifeq 4
3: aload 2
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
getfield com.sun.tools.javac.tree.JCTree$JCClassDecl.implementing:Lcom/sun/tools/javac/util/List;
iconst_0
invokevirtual com.sun.tools.javac.util.List.get:(I)Ljava/lang/Object;
checkcast com.sun.tools.javac.tree.JCTree$JCExpression
getfield com.sun.tools.javac.tree.JCTree$JCExpression.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
goto 5
4: StackMap locals:
StackMap stack:
aload 2
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
getfield com.sun.tools.javac.tree.JCTree$JCClassDecl.extending:Lcom/sun/tools/javac/tree/JCTree$JCExpression;
getfield com.sun.tools.javac.tree.JCTree$JCExpression.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
5: StackMap locals:
StackMap stack: com.sun.tools.javac.util.List
astore 4
start local 4 6: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
getfield com.sun.tools.javac.tree.JCTree$JCClassDecl.implementing:Lcom/sun/tools/javac/util/List;
invokevirtual com.sun.tools.javac.util.List.nonEmpty:()Z
ifeq 8
7: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
getfield com.sun.tools.javac.tree.JCTree$JCClassDecl.implementing:Lcom/sun/tools/javac/util/List;
iconst_0
invokevirtual com.sun.tools.javac.util.List.get:(I)Ljava/lang/Object;
checkcast com.sun.tools.javac.tree.JCTree$JCExpression
getfield com.sun.tools.javac.tree.JCTree$JCExpression.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
goto 9
8: StackMap locals: com.sun.tools.javac.util.List
StackMap stack:
aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.def:Lcom/sun/tools/javac/tree/JCTree$JCClassDecl;
getfield com.sun.tools.javac.tree.JCTree$JCClassDecl.extending:Lcom/sun/tools/javac/tree/JCTree$JCExpression;
getfield com.sun.tools.javac.tree.JCTree$JCExpression.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
9: StackMap locals:
StackMap stack: com.sun.tools.javac.util.List
astore 5
start local 5 10: goto 13
end local 5 end local 4 11: StackMap locals:
StackMap stack:
aload 2
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
astore 4
start local 4 12: aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.type:Lcom/sun/tools/javac/code/Type;
invokevirtual com.sun.tools.javac.code.Type.getTypeArguments:()Lcom/sun/tools/javac/util/List;
astore 5
start local 5 13: StackMap locals: com.sun.tools.javac.util.List com.sun.tools.javac.util.List
StackMap stack:
aload 4
invokevirtual com.sun.tools.javac.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 18
StackMap locals: com.sun.tools.javac.comp.Analyzer$DiamondInitializer com.sun.tools.javac.tree.JCTree$JCNewClass com.sun.tools.javac.tree.JCTree$JCNewClass int com.sun.tools.javac.util.List com.sun.tools.javac.util.List top java.util.Iterator
StackMap stack:
14: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.sun.tools.javac.code.Type
astore 6
start local 6 15: aload 0
getfield com.sun.tools.javac.comp.Analyzer$DiamondInitializer.this$0:Lcom/sun/tools/javac/comp/Analyzer;
getfield com.sun.tools.javac.comp.Analyzer.types:Lcom/sun/tools/javac/code/Types;
aload 6
aload 5
getfield com.sun.tools.javac.util.List.head:Ljava/lang/Object;
checkcast com.sun.tools.javac.code.Type
invokevirtual com.sun.tools.javac.code.Types.isSameType:(Lcom/sun/tools/javac/code/Type;Lcom/sun/tools/javac/code/Type;)Z
ifne 17
16: return
17: StackMap locals: com.sun.tools.javac.comp.Analyzer$DiamondInitializer com.sun.tools.javac.tree.JCTree$JCNewClass com.sun.tools.javac.tree.JCTree$JCNewClass int com.sun.tools.javac.util.List com.sun.tools.javac.util.List com.sun.tools.javac.code.Type java.util.Iterator
StackMap stack:
aload 5
getfield com.sun.tools.javac.util.List.tail:Lcom/sun/tools/javac/util/List;
astore 5
end local 6 18: StackMap locals: com.sun.tools.javac.comp.Analyzer$DiamondInitializer com.sun.tools.javac.tree.JCTree$JCNewClass com.sun.tools.javac.tree.JCTree$JCNewClass int com.sun.tools.javac.util.List com.sun.tools.javac.util.List top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
19: aload 0
getfield com.sun.tools.javac.comp.Analyzer$DiamondInitializer.this$0:Lcom/sun/tools/javac/comp/Analyzer;
getfield com.sun.tools.javac.comp.Analyzer.log:Lcom/sun/tools/javac/util/Log;
aload 1
getfield com.sun.tools.javac.tree.JCTree$JCNewClass.clazz:Lcom/sun/tools/javac/tree/JCTree$JCExpression;
getstatic com.sun.tools.javac.resources.CompilerProperties$Warnings.DiamondRedundantArgs:Lcom/sun/tools/javac/util/JCDiagnostic$Warning;
invokevirtual com.sun.tools.javac.util.Log.warning:(Lcom/sun/tools/javac/util/JCDiagnostic$DiagnosticPosition;Lcom/sun/tools/javac/util/JCDiagnostic$Warning;)V
end local 5 end local 4 20: StackMap locals: com.sun.tools.javac.comp.Analyzer$DiamondInitializer com.sun.tools.javac.tree.JCTree$JCNewClass com.sun.tools.javac.tree.JCTree$JCNewClass int
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/sun/tools/javac/comp/Analyzer$DiamondInitializer;
0 21 1 oldTree Lcom/sun/tools/javac/tree/JCTree$JCNewClass;
0 21 2 newTree Lcom/sun/tools/javac/tree/JCTree$JCNewClass;
0 21 3 hasErrors Z
6 11 4 inferredArgs Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
12 20 4 inferredArgs Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
10 11 5 explicitArgs Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
13 20 5 explicitArgs Lcom/sun/tools/javac/util/List<Lcom/sun/tools/javac/code/Type;>;
15 18 6 t Lcom/sun/tools/javac/code/Type;
MethodParameters:
Name Flags
oldTree
newTree
hasErrors
void process(com.sun.tools.javac.tree.JCTree, com.sun.tools.javac.tree.JCTree, boolean);
descriptor: (Lcom/sun/tools/javac/tree/JCTree;Lcom/sun/tools/javac/tree/JCTree;Z)V
flags: (0x1040) ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=4, locals=4, args_size=4
0: aload 0
aload 1
checkcast com.sun.tools.javac.tree.JCTree$JCNewClass
aload 2
checkcast com.sun.tools.javac.tree.JCTree$JCNewClass
iload 3
invokevirtual com.sun.tools.javac.comp.Analyzer$DiamondInitializer.process:(Lcom/sun/tools/javac/tree/JCTree$JCNewClass;Lcom/sun/tools/javac/tree/JCTree$JCNewClass;Z)V
return
LocalVariableTable:
Start End Slot Name Signature
boolean match(com.sun.tools.javac.tree.JCTree);
descriptor: (Lcom/sun/tools/javac/tree/JCTree;)Z
flags: (0x1040) ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
checkcast com.sun.tools.javac.tree.JCTree$JCNewClass
invokevirtual com.sun.tools.javac.comp.Analyzer$DiamondInitializer.match:(Lcom/sun/tools/javac/tree/JCTree$JCNewClass;)Z
ireturn
LocalVariableTable:
Start End Slot Name Signature
com.sun.tools.javac.util.List rewrite(com.sun.tools.javac.tree.JCTree);
descriptor: (Lcom/sun/tools/javac/tree/JCTree;)Lcom/sun/tools/javac/util/List;
flags: (0x1040) ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
checkcast com.sun.tools.javac.tree.JCTree$JCNewClass
invokevirtual com.sun.tools.javac.comp.Analyzer$DiamondInitializer.rewrite:(Lcom/sun/tools/javac/tree/JCTree$JCNewClass;)Lcom/sun/tools/javac/util/List;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Lcom/sun/tools/javac/comp/Analyzer$StatementAnalyzer<Lcom/sun/tools/javac/tree/JCTree$JCNewClass;Lcom/sun/tools/javac/tree/JCTree$JCNewClass;>;
SourceFile: "Analyzer.java"
NestHost: com.sun.tools.javac.comp.Analyzer
InnerClasses:
AnalyzerCopier = com.sun.tools.javac.comp.Analyzer$AnalyzerCopier of com.sun.tools.javac.comp.Analyzer
final AnalyzerMode = com.sun.tools.javac.comp.Analyzer$AnalyzerMode of com.sun.tools.javac.comp.Analyzer
DiamondInitializer = com.sun.tools.javac.comp.Analyzer$DiamondInitializer of com.sun.tools.javac.comp.Analyzer
abstract StatementAnalyzer = com.sun.tools.javac.comp.Analyzer$StatementAnalyzer of com.sun.tools.javac.comp.Analyzer
public Warnings = com.sun.tools.javac.resources.CompilerProperties$Warnings of com.sun.tools.javac.resources.CompilerProperties
public JCClassDecl = com.sun.tools.javac.tree.JCTree$JCClassDecl of com.sun.tools.javac.tree.JCTree
public abstract JCExpression = com.sun.tools.javac.tree.JCTree$JCExpression of com.sun.tools.javac.tree.JCTree
public JCNewClass = com.sun.tools.javac.tree.JCTree$JCNewClass of com.sun.tools.javac.tree.JCTree
public JCTypeApply = com.sun.tools.javac.tree.JCTree$JCTypeApply of com.sun.tools.javac.tree.JCTree
public final Tag = com.sun.tools.javac.tree.JCTree$Tag of com.sun.tools.javac.tree.JCTree
public abstract DiagnosticPosition = com.sun.tools.javac.util.JCDiagnostic$DiagnosticPosition of com.sun.tools.javac.util.JCDiagnostic
public final Warning = com.sun.tools.javac.util.JCDiagnostic$Warning of com.sun.tools.javac.util.JCDiagnostic