/// DecompositionDecl of type 'int (&)[3]'.
class BindingDecl : public ValueDecl {
/// The declaration that this binding binds to part of.
- LazyDeclPtr Decomp;
+ ValueDecl *Decomp;
/// The binding represented by this declaration. References to this
/// declaration are effectively equivalent to this expression (except
/// that it is only evaluated once at the point of declaration of the
/// Get the decomposition declaration that this binding represents a
/// decomposition of.
- ValueDecl *getDecomposedDecl() const;
+ ValueDecl *getDecomposedDecl() const { return Decomp; }
/// Get the variable (if any) that holds the value of evaluating the binding.
/// Only present for user-defined bindings for tuple-like types.
return new (C, ID) BindingDecl(nullptr, SourceLocation(), nullptr);
}
-ValueDecl *BindingDecl::getDecomposedDecl() const {
- ExternalASTSource *Source =
- Decomp.isOffset() ? getASTContext().getExternalSource() : nullptr;
- return cast_or_null<ValueDecl>(Decomp.get(Source));
-}
-
VarDecl *BindingDecl::getHoldingVar() const {
Expr *B = getBinding();
if (!B)