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