Groovy Documentation

## org.codehaus.groovy.ast.expr
[Java] Class VariableExpression

    java.lang.Object
      org.codehaus.groovy.ast.ASTNode
          org.codehaus.groovy.ast.AnnotatedNode
              org.codehaus.groovy.ast.expr.Expression
                  org.codehaus.groovy.ast.expr.VariableExpression

All Implemented Interfaces:
  Variable

    public class VariableExpression
    extends Expression

Represents a local variable name, the simplest form of expression. e.g. "foo".

Authors:
  James Strachan

Version:
  \$Revision\$

Field Summary
`static VariableExpression` | `SUPER_EXPRESSION`
`static VariableExpression` | `THIS_EXPRESSION`

Constructor Summary
`VariableExpression(java.lang.String variable, ClassNode type)`
`VariableExpression(java.lang.String variable)`
`VariableExpression(Variable variable)`

Method Summary
`Variable` | `getAccessedVariable()`
`Expression` | `getInitialExpression()`
`int` | `getModifiers()`
`java.lang.String` | `getName()`
`ClassNode` | `getOriginType()` Returns the type which was used when this variable expression was created.
`java.lang.String` | `getText()`
`ClassNode` | `getType()`
`boolean` | `hasInitialExpression()`

`boolean`

`isClosureSharedVariable()`

Tells if this variable or the accessed variable is used in a closure context, like in the following example :

    def str = 'Hello'
     def cl = { println str }

The "str" variable is closure shared.

`boolean` | `isDynamicTyped()`
`boolean` | `isInStaticContext()`
`boolean` | `isSuperExpression()`
`boolean` | `isThisExpression()`
`boolean` | `isUseReferenceDirectly()` For internal use only.
`void` | `setAccessedVariable(Variable origin)`

`void`

`setClosureSharedVariable(boolean inClosure)`

Use this method to tell if a variable is used in a closure, like in the following example:

    def str = 'Hello'
     def cl = { println str }

The "str" variable is closure shared.

`void` | `setInStaticContext(boolean inStaticContext)`
`void` | `setModifiers(int modifiers)`
`void` | `setType(ClassNode cn)` Set the type of this variable.
`void` | `setUseReferenceDirectly(boolean useRef)` For internal use only.
`java.lang.String` | `toString()`
`Expression` | `transformExpression(ExpressionTransformer transformer)`
`void` | `visit(GroovyCodeVisitor visitor)`

Methods inherited from class Expression
getType, setType, transformExpression, transformExpressions, transformExpressions

Methods inherited from class AnnotatedNode
addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic

Methods inherited from class ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, getText, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition, visit

Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

Field Detail

### SUPER_EXPRESSION

    public static final VariableExpression SUPER_EXPRESSION

### THIS_EXPRESSION

    public static final VariableExpression THIS_EXPRESSION

Constructor Detail

### VariableExpression

    public VariableExpression(java.lang.String variable, ClassNode type)

### VariableExpression

    public VariableExpression(java.lang.String variable)

### VariableExpression

    public VariableExpression(Variable variable)

Method Detail

### getAccessedVariable

    public Variable getAccessedVariable()

### getInitialExpression

    public Expression getInitialExpression()

### getModifiers

    public int getModifiers()

### getName

    public java.lang.String getName()

### getOriginType

    public ClassNode getOriginType()

  Returns the type which was used when this variable expression was created. For example, getType() may return a boxed type while this method would return the primitive type.
  Returns:
    the type which was used to define this variable expression

### getText

    public java.lang.String getText()

### getType

    public ClassNode getType()

### hasInitialExpression

    public boolean hasInitialExpression()

### isClosureSharedVariable

    public boolean isClosureSharedVariable()

  Tells if this variable or the accessed variable is used in a closure context, like in the following example :

      def str = 'Hello'
       def cl = { println str }

  The "str" variable is closure shared.
  Returns:
    true if this variable is used in a closure

### isDynamicTyped

    public boolean isDynamicTyped()

### isInStaticContext

    public boolean isInStaticContext()

### isSuperExpression

    public boolean isSuperExpression()

### isThisExpression

    public boolean isThisExpression()

### isUseReferenceDirectly

    public boolean isUseReferenceDirectly()

  For internal use only. This flag is used by compiler internals and should probably be converted to a node metadata in future.

### setAccessedVariable

    public void setAccessedVariable(Variable origin)

### setClosureSharedVariable

    public void setClosureSharedVariable(boolean inClosure)

  Use this method to tell if a variable is used in a closure, like in the following example:

      def str = 'Hello'
       def cl = { println str }

  The "str" variable is closure shared. The variable expression inside the closure references an accessed variable "str" which must have the closure shared flag set.
  Parameters:
    `inClosure` - tells if this variable is later referenced in a closure

### setInStaticContext

    public void setInStaticContext(boolean inStaticContext)

### setModifiers

    public void setModifiers(int modifiers)

### setType

    public void setType(ClassNode cn)

  Set the type of this variable. If you call this method from an AST transformation and that the accessed variable is (shared, this operation is unsafe and may lead to a verify error at compile time. Instead, set the type of the accessed variable
  Parameters:
    `cn` - the type to be set on this variable

### setUseReferenceDirectly

    public void setUseReferenceDirectly(boolean useRef)

  For internal use only. This flag is used by compiler internals and should probably be converted to a node metadata in future.
  Parameters:
    useRef

### toString

    public java.lang.String toString()

### transformExpression

    public Expression transformExpression(ExpressionTransformer transformer)

### visit

    public void visit(GroovyCodeVisitor visitor)

Groovy Documentation