@@ -141,13 +141,33 @@ BridgedAccessorDecl BridgedAccessorDecl_createParsed(
141
141
cThrownType.unbridged (), cDeclContext.unbridged ());
142
142
}
143
143
144
+ static VarDecl::Introducer unbridged (BridgedVarDeclIntroducer introducer) {
145
+ switch (introducer) {
146
+ case BridgedVarDeclIntroducerLet:
147
+ return swift::VarDecl::Introducer::Let;
148
+ case BridgedVarDeclIntroducerVar:
149
+ return swift::VarDecl::Introducer::Var;
150
+ case BridgedVarDeclIntroducerInOut:
151
+ return swift::VarDecl::Introducer::InOut;
152
+ case BridgedVarDeclIntroducerBorrowing:
153
+ return swift::VarDecl::Introducer::Borrowing;
154
+ }
155
+ llvm_unreachable (" unhandled enum value" );
156
+ }
157
+
144
158
BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed (
145
159
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
146
- BridgedSourceLoc cBindingKeywordLoc, BridgedArrayRef cBindingEntries, BridgedDeclAttributes cAttrs, bool isStatic, bool isLet) {
160
+ BridgedDeclAttributes cAttrs, BridgedSourceLoc cStaticLoc,
161
+ BridgedStaticSpelling cStaticSpelling, BridgedSourceLoc cIntroducerLoc,
162
+ BridgedVarDeclIntroducer cIntroducer, BridgedArrayRef cBindingEntries) {
163
+
147
164
ASTContext &context = cContext.unbridged ();
148
165
DeclContext *declContext = cDeclContext.unbridged ();
149
166
150
- auto introducer = isLet ? VarDecl::Introducer::Let : VarDecl::Introducer::Var;
167
+ auto introducer = unbridged (cIntroducer);
168
+ auto introducerLoc = cIntroducerLoc.unbridged ();
169
+ auto staticSpelling = unbridged (cStaticSpelling);
170
+ auto staticLoc = cStaticLoc.unbridged ();
151
171
152
172
SmallVector<PatternBindingEntry, 4 > entries;
153
173
for (auto &entry : cBindingEntries.unbridged <BridgedPatternBindingEntry>()) {
@@ -156,7 +176,7 @@ BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed(
156
176
// Configure all vars.
157
177
pattern->forEachVariable ([&](VarDecl *VD) {
158
178
VD->attachParsedAttrs (cAttrs.unbridged ());
159
- VD->setStatic (isStatic );
179
+ VD->setStatic (staticLoc. isValid () );
160
180
VD->setIntroducer (introducer);
161
181
VD->setTopLevelGlobal (isa<TopLevelCodeDecl>(declContext));
162
182
});
@@ -165,12 +185,8 @@ BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed(
165
185
entry.init .unbridged (), entry.initContext .unbridged ());
166
186
}
167
187
168
- return PatternBindingDecl::create (
169
- context,
170
- /* StaticLoc=*/ SourceLoc (),
171
- // FIXME: 'class' spelling kind.
172
- isStatic ? StaticSpellingKind::KeywordStatic : StaticSpellingKind::None,
173
- cBindingKeywordLoc.unbridged (), entries, declContext);
188
+ return PatternBindingDecl::create (context, staticLoc, staticSpelling,
189
+ introducerLoc, entries, declContext);
174
190
}
175
191
176
192
BridgedParamDecl BridgedParamDecl_createParsed (
0 commit comments