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; } }