class freemarker.core.Macro$Context implements freemarker.core.LocalContext
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: freemarker.core.Macro$Context
super_class: java.lang.Object
{
final freemarker.core.Environment$Namespace localVars;
descriptor: Lfreemarker/core/Environment$Namespace;
flags: (0x0010) ACC_FINAL
final freemarker.core.TemplateObject callPlace;
descriptor: Lfreemarker/core/TemplateObject;
flags: (0x0010) ACC_FINAL
final freemarker.core.Environment$Namespace nestedContentNamespace;
descriptor: Lfreemarker/core/Environment$Namespace;
flags: (0x0010) ACC_FINAL
final java.util.List nestedContentParameterNames;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
final freemarker.core.LocalContextStack prevLocalContextStack;
descriptor: Lfreemarker/core/LocalContextStack;
flags: (0x0010) ACC_FINAL
final freemarker.core.Macro$Context prevMacroContext;
descriptor: Lfreemarker/core/Macro$Context;
flags: (0x0010) ACC_FINAL
final freemarker.core.Macro this$0;
descriptor: Lfreemarker/core/Macro;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(freemarker.core.Macro, freemarker.core.Environment, freemarker.core.TemplateObject, java.util.List);
descriptor: (Lfreemarker/core/Macro;Lfreemarker/core/Environment;Lfreemarker/core/TemplateObject;Ljava/util/List;)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=5
start local 0 start local 2 start local 3 start local 4 0: aload 0
aload 1
putfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
1: aload 0
invokespecial java.lang.Object.<init>:()V
2: aload 0
new freemarker.core.Environment$Namespace
dup
aload 2
dup
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
pop
invokespecial freemarker.core.Environment$Namespace.<init>:(Lfreemarker/core/Environment;)V
putfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
3: aload 0
aload 3
putfield freemarker.core.Macro$Context.callPlace:Lfreemarker/core/TemplateObject;
4: aload 0
aload 2
invokevirtual freemarker.core.Environment.getCurrentNamespace:()Lfreemarker/core/Environment$Namespace;
putfield freemarker.core.Macro$Context.nestedContentNamespace:Lfreemarker/core/Environment$Namespace;
5: aload 0
aload 4
putfield freemarker.core.Macro$Context.nestedContentParameterNames:Ljava/util/List;
6: aload 0
aload 2
invokevirtual freemarker.core.Environment.getLocalContextStack:()Lfreemarker/core/LocalContextStack;
putfield freemarker.core.Macro$Context.prevLocalContextStack:Lfreemarker/core/LocalContextStack;
7: aload 0
aload 2
invokevirtual freemarker.core.Environment.getCurrentMacroContext:()Lfreemarker/core/Macro$Context;
putfield freemarker.core.Macro$Context.prevMacroContext:Lfreemarker/core/Macro$Context;
8: return
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lfreemarker/core/Macro$Context;
0 9 2 env Lfreemarker/core/Environment;
0 9 3 callPlace Lfreemarker/core/TemplateObject;
0 9 4 nestedContentParameterNames Ljava/util/List;
MethodParameters:
Name Flags
this$0 final
env
callPlace
nestedContentParameterNames
freemarker.core.Macro getMacro();
descriptor: ()Lfreemarker/core/Macro;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/Macro$Context;
void sanityCheck(freemarker.core.Environment);
descriptor: (Lfreemarker/core/Environment;)V
flags: (0x0000)
Code:
stack=11, locals=10, args_size=2
start local 0 start local 1 0: StackMap locals:
StackMap stack:
aconst_null
astore 4
start local 4 1: aconst_null
astore 5
start local 5 2: iconst_0
dup
istore 3
start local 3 3: istore 2
start local 2 4: iconst_0
istore 6
start local 6 5: goto 48
6: StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int
StackMap stack:
aload 0
getfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
getfield freemarker.core.Macro.paramNames:[Ljava/lang/String;
iload 6
aaload
astore 7
start local 7 7: aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
aload 7
invokevirtual freemarker.core.Environment$Namespace.get:(Ljava/lang/String;)Lfreemarker/template/TemplateModel;
ifnonnull 47
8: aload 0
getfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
getfield freemarker.core.Macro.paramDefaults:Ljava/util/Map;
aload 7
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast freemarker.core.Expression
astore 8
start local 8 9: aload 8
ifnull 24
10: aload 8
aload 1
invokevirtual freemarker.core.Expression.eval:(Lfreemarker/core/Environment;)Lfreemarker/template/TemplateModel;
astore 9
start local 9 11: aload 9
ifnonnull 16
12: iload 3
ifne 47
13: aload 8
astore 4
14: iconst_1
istore 3
15: goto 47
16: StackMap locals: java.lang.String freemarker.core.Expression freemarker.template.TemplateModel
StackMap stack:
aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
aload 7
aload 9
invokevirtual freemarker.core.Environment$Namespace.put:(Ljava/lang/String;Ljava/lang/Object;)V
17: iconst_1
istore 2
end local 9 18: goto 47
StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression
StackMap stack: freemarker.core.InvalidReferenceException
19: astore 9
start local 9 20: iload 3
ifne 47
21: iconst_1
istore 3
22: aload 9
astore 5
end local 9 23: goto 47
StackMap locals:
StackMap stack:
24: aload 1
invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
ifne 47
25: aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
aload 7
invokevirtual freemarker.core.Environment$Namespace.containsKey:(Ljava/lang/String;)Z
istore 9
start local 9 26: new freemarker.core._MiscTemplateException
dup
aload 1
27: new freemarker.core._ErrorDescriptionBuilder
dup
bipush 10
anewarray java.lang.Object
dup
iconst_0
28: ldc "When calling "
aastore
dup
iconst_1
aload 0
getfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
invokevirtual freemarker.core.Macro.isFunction:()Z
ifeq 29
ldc "function"
goto 30
StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression int
StackMap stack: new 26 new 26 freemarker.core.Environment new 27 new 27 java.lang.Object[] java.lang.Object[] int
29: ldc "macro"
StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression int
StackMap stack: new 26 new 26 freemarker.core.Environment new 27 new 27 java.lang.Object[] java.lang.Object[] int java.lang.String
30: aastore
dup
iconst_2
ldc " "
aastore
dup
iconst_3
31: new freemarker.core._DelayedJQuote
dup
aload 0
getfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
getfield freemarker.core.Macro.name:Ljava/lang/String;
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_4
32: ldc ", required parameter "
aastore
dup
iconst_5
new freemarker.core._DelayedJQuote
dup
aload 7
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
bipush 6
33: ldc " (parameter #"
aastore
dup
bipush 7
iload 6
iconst_1
iadd
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 8
ldc ") was "
aastore
dup
bipush 9
34: iload 9
ifeq 36
35: ldc "specified, but had null/missing value."
goto 37
36: StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression int
StackMap stack: new 26 new 26 freemarker.core.Environment new 27 new 27 java.lang.Object[] java.lang.Object[] int
ldc "not specified."
37: StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression int
StackMap stack: new 26 new 26 freemarker.core.Environment new 27 new 27 java.lang.Object[] java.lang.Object[] int java.lang.String
aastore
invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:([Ljava/lang/Object;)V
38: iload 9
ifeq 42
39: iconst_1
anewarray java.lang.Object
dup
iconst_0
40: ldc "If the parameter value expression on the caller side is known to be legally null/missing, you may want to specify a default value for it with the \"!\" operator, like paramValue!defaultValue."
aastore
41: goto 45
42: StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression int
StackMap stack: new 26 new 26 freemarker.core.Environment freemarker.core._ErrorDescriptionBuilder
iconst_3
anewarray java.lang.Object
dup
iconst_0
43: ldc "If the omission was deliberate, you may consider making the parameter optional in the macro by specifying a default value for it, like "
aastore
dup
iconst_1
44: ldc "<#macro macroName paramName=defaultExpr>"
aastore
dup
iconst_2
ldc ")"
aastore
45: StackMap locals: freemarker.core.Macro$Context freemarker.core.Environment int int freemarker.core.Expression freemarker.core.InvalidReferenceException int java.lang.String freemarker.core.Expression int
StackMap stack: new 26 new 26 freemarker.core.Environment freemarker.core._ErrorDescriptionBuilder java.lang.Object[]
invokevirtual freemarker.core._ErrorDescriptionBuilder.tip:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
46: invokespecial freemarker.core._MiscTemplateException.<init>:(Lfreemarker/core/Environment;Lfreemarker/core/_ErrorDescriptionBuilder;)V
athrow
end local 9 end local 8 end local 7 47: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
48: iload 6
aload 0
getfield freemarker.core.Macro$Context.this$0:Lfreemarker/core/Macro;
getfield freemarker.core.Macro.paramNames:[Ljava/lang/String;
arraylength
if_icmplt 6
end local 6 49: iload 2
ifeq 50
iload 3
ifne 0
50: StackMap locals:
StackMap stack:
iload 3
ifeq 55
51: aload 5
ifnull 53
52: aload 5
athrow
53: StackMap locals:
StackMap stack:
aload 1
invokevirtual freemarker.core.Environment.isClassicCompatible:()Z
ifne 55
54: aload 4
aload 1
invokestatic freemarker.core.InvalidReferenceException.getInstance:(Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
athrow
55: StackMap locals:
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Lfreemarker/core/Macro$Context;
0 56 1 env Lfreemarker/core/Environment;
4 56 2 resolvedAnArg Z
3 56 3 hasUnresolvedArg Z
1 56 4 firstUnresolvedExpression Lfreemarker/core/Expression;
2 56 5 firstReferenceException Lfreemarker/core/InvalidReferenceException;
5 49 6 i I
7 47 7 argName Ljava/lang/String;
9 47 8 valueExp Lfreemarker/core/Expression;
11 18 9 tm Lfreemarker/template/TemplateModel;
20 23 9 e Lfreemarker/core/InvalidReferenceException;
26 47 9 argWasSpecified Z
Exception table:
from to target type
10 18 19 Class freemarker.core.InvalidReferenceException
Exceptions:
throws freemarker.template.TemplateException
MethodParameters:
Name Flags
env
public freemarker.template.TemplateModel getLocalVariable(java.lang.String);
descriptor: (Ljava/lang/String;)Lfreemarker/template/TemplateModel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
aload 1
invokevirtual freemarker.core.Environment$Namespace.get:(Ljava/lang/String;)Lfreemarker/template/TemplateModel;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/Macro$Context;
0 1 1 name Ljava/lang/String;
Exceptions:
throws freemarker.template.TemplateModelException
MethodParameters:
Name Flags
name
freemarker.core.Environment$Namespace getLocals();
descriptor: ()Lfreemarker/core/Environment$Namespace;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lfreemarker/core/Macro$Context;
void setLocalVar(java.lang.String, freemarker.template.TemplateModel);
descriptor: (Ljava/lang/String;Lfreemarker/template/TemplateModel;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
aload 1
aload 2
invokevirtual freemarker.core.Environment$Namespace.put:(Ljava/lang/String;Ljava/lang/Object;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lfreemarker/core/Macro$Context;
0 2 1 name Ljava/lang/String;
0 2 2 var Lfreemarker/template/TemplateModel;
MethodParameters:
Name Flags
name
var
public java.util.Collection getLocalVariableNames();
descriptor: ()Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
start local 1 1: aload 0
getfield freemarker.core.Macro$Context.localVars:Lfreemarker/core/Environment$Namespace;
invokevirtual freemarker.core.Environment$Namespace.keys:()Lfreemarker/template/TemplateCollectionModel;
invokeinterface freemarker.template.TemplateCollectionModel.iterator:()Lfreemarker/template/TemplateModelIterator;
astore 2
start local 2 2: goto 4
3: StackMap locals: java.util.HashSet freemarker.template.TemplateModelIterator
StackMap stack:
aload 1
aload 2
invokeinterface freemarker.template.TemplateModelIterator.next:()Lfreemarker/template/TemplateModel;
checkcast freemarker.template.TemplateScalarModel
invokeinterface freemarker.template.TemplateScalarModel.getAsString:()Ljava/lang/String;
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
4: StackMap locals:
StackMap stack:
aload 2
invokeinterface freemarker.template.TemplateModelIterator.hasNext:()Z
ifne 3
end local 2 5: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lfreemarker/core/Macro$Context;
1 6 1 result Ljava/util/HashSet;
2 5 2 it Lfreemarker/template/TemplateModelIterator;
Exceptions:
throws freemarker.template.TemplateModelException
}
SourceFile: "Macro.java"
NestHost: freemarker.core.Macro
InnerClasses:
public Namespace = freemarker.core.Environment$Namespace of freemarker.core.Environment
Context = freemarker.core.Macro$Context of freemarker.core.Macro