Package org.codehaus.groovy.ast
Class MethodNode
- java.lang.Object
-
- org.codehaus.groovy.ast.ASTNode
-
- org.codehaus.groovy.ast.AnnotatedNode
-
- org.codehaus.groovy.ast.MethodNode
-
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>
,NodeMetaDataHandler
,org.objectweb.asm.Opcodes
- Direct Known Subclasses:
ConstructorNode
,ExtensionMethodNode
public class MethodNode extends AnnotatedNode implements org.objectweb.asm.Opcodes
Represents a method declaration.
-
-
Field Summary
-
Fields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT
-
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, 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, V9
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
MethodNode()
MethodNode(String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Statement
getCode()
ClassNode[]
getExceptions()
Statement
getFirstStatement()
GenericsType[]
getGenericsTypes()
int
getModifiers()
String
getName()
Parameter[]
getParameters()
ClassNode
getReturnType()
String
getText()
Provides a nicely formatted string of the method definition.String
getTypeDescriptor()
The type descriptor for a method node is a string containing the name of the method, its return type, and its parameter types in a canonical form.VariableScope
getVariableScope()
boolean
hasAnnotationDefault()
boolean
hasDefaultValue()
boolean
isAbstract()
boolean
isDefault()
boolean
isDynamicReturnType()
boolean
isFinal()
boolean
isPackageScope()
boolean
isPrivate()
boolean
isProtected()
boolean
isPublic()
boolean
isScriptBody()
boolean
isStatic()
boolean
isStaticConstructor()
boolean
isSyntheticPublic()
Indicates that this method has been "promoted" to public by Groovy when in fact there was no public modifier explicitly in the source code.boolean
isVoidMethod()
void
setAnnotationDefault(boolean hasDefaultValue)
void
setCode(Statement code)
void
setGenericsTypes(GenericsType[] genericsTypes)
void
setIsScriptBody()
Sets the flag for this method to indicate it is a script body implementation.void
setModifiers(int modifiers)
void
setParameters(Parameter[] parameters)
void
setReturnType(ClassNode returnType)
void
setSyntheticPublic(boolean syntheticPublic)
void
setVariableScope(VariableScope variableScope)
String
toString()
-
Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic
-
Methods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePosition, visit
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
-
-
-
Method Detail
-
getTypeDescriptor
public String getTypeDescriptor()
The type descriptor for a method node is a string containing the name of the method, its return type, and its parameter types in a canonical form. For simplicity, we use the format of a Java declaration without parameter names or generics.
-
getCode
public Statement getCode()
-
setCode
public void setCode(Statement code)
-
getModifiers
public int getModifiers()
-
setModifiers
public void setModifiers(int modifiers)
-
getName
public String getName()
-
getParameters
public Parameter[] getParameters()
-
setParameters
public void setParameters(Parameter[] parameters)
-
hasDefaultValue
public boolean hasDefaultValue()
- Returns:
true
if any parameter has a default value
-
getReturnType
public ClassNode getReturnType()
-
setReturnType
public void setReturnType(ClassNode returnType)
-
isDynamicReturnType
public boolean isDynamicReturnType()
-
isVoidMethod
public boolean isVoidMethod()
-
getVariableScope
public VariableScope getVariableScope()
-
setVariableScope
public void setVariableScope(VariableScope variableScope)
-
isAbstract
public boolean isAbstract()
-
isDefault
public boolean isDefault()
-
isFinal
public boolean isFinal()
-
isStatic
public boolean isStatic()
-
isPublic
public boolean isPublic()
-
isPrivate
public boolean isPrivate()
-
isProtected
public boolean isProtected()
-
isPackageScope
public boolean isPackageScope()
-
getExceptions
public ClassNode[] getExceptions()
-
getFirstStatement
public Statement getFirstStatement()
-
getGenericsTypes
public GenericsType[] getGenericsTypes()
-
setGenericsTypes
public void setGenericsTypes(GenericsType[] genericsTypes)
-
hasAnnotationDefault
public boolean hasAnnotationDefault()
- Returns:
true
if annotation method has a default value
-
setAnnotationDefault
public void setAnnotationDefault(boolean hasDefaultValue)
-
isScriptBody
public boolean isScriptBody()
- Returns:
true
if this method is the run method from a script
-
setIsScriptBody
public void setIsScriptBody()
Sets the flag for this method to indicate it is a script body implementation.- See Also:
ModuleNode.createStatementsClass()
-
isStaticConstructor
public boolean isStaticConstructor()
-
isSyntheticPublic
public boolean isSyntheticPublic()
Indicates that this method has been "promoted" to public by Groovy when in fact there was no public modifier explicitly in the source code. I.e. it remembers that it has applied Groovy's "public methods by default" rule. This property is typically only of interest to AST transform writers.- Returns:
true
if this class is public but had no explicit public modifier
-
setSyntheticPublic
public void setSyntheticPublic(boolean syntheticPublic)
-
getText
public String getText()
Provides a nicely formatted string of the method definition. For simplicity, generic types on some of the elements are not displayed.
-
-