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:
  `org.objectweb.asm.Opcodes`

Direct Known Subclasses:
  `ConstructorNode`, `ExtensionMethodNode`

public class MethodNode extends AnnotatedNode implements org.objectweb.asm.Opcodes
Represents a method declaration

Author:
  James Strachan, Hamlet D'Arcy

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`SCRIPT_BODY_METHOD_KEY`

### 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, V18, V19, V20, V21, V22, V23, V24, V25, V9`

## Constructor Summary

Constructors
Constructor
Description
`MethodNode(String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)`

## Method Summary

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`
`isDynamicReturnType()`
`boolean`
`isFinal()`
`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 b)`
`void`
`setCode(Statement code)`
`void`
`setGenericsTypes(GenericsType[] genericsTypes)`
`void`
`setIsScriptBody()`
Set the metadata flag for this method to indicate that 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, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic`

### Methods inherited from class org.codehaus.groovy.ast.ASTNode

`copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition, visit`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### SCRIPT_BODY_METHOD_KEY

public static final String SCRIPT_BODY_METHOD_KEY

See Also:
  - Constant Field Values

## Constructor Details

### MethodNode

public MethodNode(String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)

## Method Details

### 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, I'm using the format of a Java declaration without parameter names.

Returns:
  the type descriptor

### isVoidMethod

public boolean isVoidMethod()

### 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)

### getReturnType

public ClassNode getReturnType()

### getVariableScope

public VariableScope getVariableScope()

### setVariableScope

public void setVariableScope(VariableScope variableScope)

### isDynamicReturnType

public boolean isDynamicReturnType()

### isAbstract

public boolean isAbstract()

### isStatic

public boolean isStatic()

### isPublic

public boolean isPublic()

### isPrivate

public boolean isPrivate()

### isFinal

public boolean isFinal()

### isProtected

public boolean isProtected()

### hasDefaultValue

public boolean hasDefaultValue()

### isScriptBody

public boolean isScriptBody()

Returns:
  true if this method is the run method from a script

### setIsScriptBody

public void setIsScriptBody()
Set the metadata flag for this method to indicate that it is a script body implementation.

See Also:
  - `createStatementsClass().`

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### setReturnType

public void setReturnType(ClassNode returnType)

### getExceptions

public ClassNode[] getExceptions()

### getFirstStatement

public Statement getFirstStatement()

### getGenericsTypes

public GenericsType[] getGenericsTypes()

### setGenericsTypes

public void setGenericsTypes(GenericsType[] genericsTypes)

### setAnnotationDefault

public void setAnnotationDefault(boolean b)

### hasAnnotationDefault

public boolean hasAnnotationDefault()

### 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.

Overrides:
  `getText` in class `ASTNode`
Returns:
  string form of node with some generic elements suppressed