Package org.codehaus.groovy.classgen
Class Verifier
java.lang.Object
org.codehaus.groovy.classgen.Verifier
- All Implemented Interfaces:
- GroovyClassVisitor,- org.objectweb.asm.Opcodes
Verifies the AST node and adds any default AST code before bytecode generation occurs.
 
Checks include:
- Methods with duplicate signatures
- Duplicate interfaces
- Reassigned final variables/parameters
- Uninitialized variables
- Bad code in object initializers or constructors
- Mismatches in modifiers or return types between implementations and interfaces/abstract classes
- Invalid record component names
- Methods needed to implement GroovyObject
- Property accessor methods
- Covariant methods
- Additional methods/constructors as needed for default parameters
- 
Nested Class SummaryNested Classes
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from interface org.objectweb.asm.OpcodesAALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V9
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidaddClosureCode(InnerClassNode node) protected voidaddConstructor(Parameter[] newParams, ConstructorNode ctor, Statement code, ClassNode type) protected voidaddCovariantMethods(ClassNode classNode) protected voidprotected voidCreates a new constructor for each combination of default parameter expressions.protected voidCreates a new method for each combination of default parameter expressions.protected voidaddDefaultParameters(List<? extends MethodNode> methods, Verifier.DefaultArgsAction action) Creates a new helper method for each combination of default parameter expressions.protected voidaddDefaultParameters(Verifier.DefaultArgsAction action, MethodNode method) protected voidaddFieldInitialization(List list, List staticList, FieldNode fieldNode, boolean isEnumClassNode, List initStmtsAfterEnumValuesInit, Set explicitStaticPropsInEnum) protected voidaddGroovyObjectInterfaceAndMethods(ClassNode node, String classInternalName) protected voidaddInitialization(ClassNode node) protected voidaddInitialization(ClassNode node, ConstructorNode constructorNode) protected MethodNodeaddMethod(ClassNode node, boolean shouldBeSynthetic, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Helper method to add a new method to a ClassNode.protected voidaddMethod$$bridge(ClassNode node, boolean shouldBeSynthetic, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Deprecated.protected voidaddPropertyMethod(MethodNode method) protected voidaddReturnIfNeeded(MethodNode node) protected voidaddTimeStamp(ClassNode node) Deprecated.static Stringcapitalize(String name) Capitalizes the start of the given bean property name.protected StatementcreateGetterBlock(PropertyNode propertyNode, FieldNode field) protected StatementcreateSetterBlock(PropertyNode propertyNode, FieldNode field) static longgetTimestamp(Class<?> clazz) static LonggetTimestampFromFieldName(String fieldName) protected voidsetClassNode(ClassNode classNode) static ConstantExpressiontransformToPrimitiveConstantIfPossible(ConstantExpression constantExpression) When constant expressions are created, the value is always wrapped to a non-primitive type.voidvisitClass(ClassNode node) Visit a ClassNode.voidVisit a ConstructorNode.voidvisitField(FieldNode node) Visit a FieldNode.voidvisitGenericType(GenericsType genericsType) voidvisitMethod(MethodNode node) Visit a MethodNode.voidvisitProperty(PropertyNode node) Visit a PropertyNode.
- 
Field Details- 
SWAP_INIT- See Also:
 
- 
STATIC_METACLASS_BOOL- See Also:
 
- 
INITIAL_EXPRESSION- See Also:
 
- 
DEFAULT_PARAMETER_GENERATED- See Also:
 
- 
__TIMESTAMP- See Also:
 
- 
__TIMESTAMP__- See Also:
 
 
- 
- 
Constructor Details- 
Verifierpublic Verifier()
 
- 
- 
Method Details- 
getClassNode
- 
setClassNode
- 
getMethodNode
- 
visitClassDescription copied from interface:GroovyClassVisitorVisit a ClassNode.- Specified by:
- visitClassin interface- GroovyClassVisitor
 
- 
getFinalVariablesCallback
- 
addDefaultConstructor
- 
addGroovyObjectInterfaceAndMethods
- 
addMethodprotected MethodNode addMethod(ClassNode node, boolean shouldBeSynthetic, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Helper method to add a new method to a ClassNode. Depending on the shouldBeSynthetic flag the call will either be made to ClassNode.addSyntheticMethod() or ClassNode.addMethod(). If a non-synthetic method is to be added the ACC_SYNTHETIC modifier is removed if it has been accidentally supplied.
- 
addMethod$$bridge@Deprecated protected void addMethod$$bridge(ClassNode node, boolean shouldBeSynthetic, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Deprecated.
- 
addTimeStampDeprecated.
- 
visitConstructorDescription copied from interface:GroovyClassVisitorVisit a ConstructorNode.- Specified by:
- visitConstructorin interface- GroovyClassVisitor
 
- 
visitMethodDescription copied from interface:GroovyClassVisitorVisit a MethodNode.- Specified by:
- visitMethodin interface- GroovyClassVisitor
 
- 
addReturnIfNeeded
- 
visitFieldDescription copied from interface:GroovyClassVisitorVisit a FieldNode.- Specified by:
- visitFieldin interface- GroovyClassVisitor
 
- 
visitPropertyDescription copied from interface:GroovyClassVisitorVisit a PropertyNode.- Specified by:
- visitPropertyin interface- GroovyClassVisitor
 
- 
addPropertyMethod
- 
addDefaultParameterMethodsCreates a new method for each combination of default parameter expressions.
- 
addDefaultParameterConstructorsCreates a new constructor for each combination of default parameter expressions.
- 
addConstructorprotected void addConstructor(Parameter[] newParams, ConstructorNode ctor, Statement code, ClassNode type) 
- 
addDefaultParametersprotected void addDefaultParameters(List<? extends MethodNode> methods, Verifier.DefaultArgsAction action) Creates a new helper method for each combination of default parameter expressions.
- 
addDefaultParameters
- 
addClosureCode
- 
addInitialization
- 
addInitialization
- 
addFieldInitialization
- 
capitalizeCapitalizes the start of the given bean property name.
- 
createGetterBlock
- 
createSetterBlock
- 
visitGenericType
- 
getTimestampFromFieldName
- 
getTimestamp
- 
addCovariantMethods
- 
transformToPrimitiveConstantIfPossiblepublic static ConstantExpression transformToPrimitiveConstantIfPossible(ConstantExpression constantExpression) When constant expressions are created, the value is always wrapped to a non-primitive type. Some constant expressions are optimized to return primitive types, but not all primitives are handled. This method guarantees to return a similar constant expression but with a primitive type instead of a boxed type. Additionally, single char strings are converted to 'char' types.- Parameters:
- constantExpression- a constant expression
- Returns:
- the same instance of constant expression if the type is already primitive, or a primitive constant if possible.
 
 
-