| package org.checkerframework.javacutil.trees; |
| |
| import com.sun.source.tree.VariableTree; |
| import com.sun.tools.javac.code.Symbol; |
| import com.sun.tools.javac.code.Type; |
| import com.sun.tools.javac.util.Name; |
| |
| /*>>> |
| import org.checkerframework.checker.nullness.qual.Nullable; |
| */ |
| |
| /** |
| * A DetachedVarSymbol represents a variable that is not part of any |
| * AST Tree. DetachedVarSymbols are created when desugaring source |
| * code constructs and they carry important type information, but some |
| * methods such as TreeInfo.declarationFor do not work on them. |
| */ |
| |
| public class DetachedVarSymbol extends Symbol.VarSymbol { |
| |
| protected /*@Nullable*/ VariableTree decl; |
| |
| /** |
| * Construct a detached variable symbol, given its flags, name, |
| * type and owner. |
| */ |
| public DetachedVarSymbol(long flags, Name name, Type type, Symbol owner) { |
| super(flags, name, type, owner); |
| this.decl = null; |
| } |
| |
| /** |
| * Set the declaration tree for the variable. |
| */ |
| public void setDeclaration(VariableTree decl) { |
| this.decl = decl; |
| } |
| |
| /** |
| * Get the declaration tree for the variable. |
| */ |
| public /*@Nullable*/ VariableTree getDeclaration() { |
| return decl; |
| } |
| } |