mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[AST] Separate the DeclContexts for different pattern binding entries in a pattern binding decl.
This commit is contained in:
@@ -80,16 +80,20 @@ public:
|
||||
explicit PatternBindingInitializer(DeclContext *parent)
|
||||
: Initializer(InitializerKind::PatternBinding, parent),
|
||||
Binding(nullptr) {
|
||||
SpareBits = 0;
|
||||
}
|
||||
|
||||
|
||||
void setBinding(PatternBindingDecl *binding) {
|
||||
void setBinding(PatternBindingDecl *binding, unsigned bindingIndex) {
|
||||
setParent(binding->getDeclContext());
|
||||
Binding = binding;
|
||||
SpareBits = bindingIndex;
|
||||
}
|
||||
|
||||
PatternBindingDecl *getBinding() const { return Binding; }
|
||||
|
||||
unsigned getBindingIndex() const { return SpareBits; }
|
||||
|
||||
static bool classof(const DeclContext *DC) {
|
||||
if (auto init = dyn_cast<Initializer>(DC))
|
||||
return classof(init);
|
||||
@@ -108,15 +112,21 @@ class SerializedPatternBindingInitializer : public SerializedLocalDeclContext {
|
||||
PatternBindingDecl *Binding;
|
||||
|
||||
public:
|
||||
SerializedPatternBindingInitializer(PatternBindingDecl *Binding)
|
||||
SerializedPatternBindingInitializer(PatternBindingDecl *Binding,
|
||||
unsigned bindingIndex)
|
||||
: SerializedLocalDeclContext(LocalDeclContextKind::PatternBindingInitializer,
|
||||
Binding->getDeclContext()),
|
||||
Binding(Binding) {}
|
||||
Binding(Binding) {
|
||||
SpareBits = bindingIndex;
|
||||
}
|
||||
|
||||
PatternBindingDecl *getBinding() const {
|
||||
return Binding;
|
||||
}
|
||||
|
||||
unsigned getBindingIndex() const { return SpareBits; }
|
||||
|
||||
|
||||
static bool classof(const DeclContext *DC) {
|
||||
if (auto LDC = dyn_cast<SerializedLocalDeclContext>(DC))
|
||||
return LDC->getLocalDeclContextKind() ==
|
||||
|
||||
Reference in New Issue
Block a user