@@ -141,13 +141,33 @@ BridgedAccessorDecl BridgedAccessorDecl_createParsed(
141141 cThrownType.unbridged (), cDeclContext.unbridged ());
142142}
143143
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+
144158BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed (
145159 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+
147164 ASTContext &context = cContext.unbridged ();
148165 DeclContext *declContext = cDeclContext.unbridged ();
149166
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 ();
151171
152172 SmallVector<PatternBindingEntry, 4 > entries;
153173 for (auto &entry : cBindingEntries.unbridged <BridgedPatternBindingEntry>()) {
@@ -156,7 +176,7 @@ BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed(
156176 // Configure all vars.
157177 pattern->forEachVariable ([&](VarDecl *VD) {
158178 VD->attachParsedAttrs (cAttrs.unbridged ());
159- VD->setStatic (isStatic );
179+ VD->setStatic (staticLoc. isValid () );
160180 VD->setIntroducer (introducer);
161181 VD->setTopLevelGlobal (isa<TopLevelCodeDecl>(declContext));
162182 });
@@ -165,12 +185,8 @@ BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed(
165185 entry.init .unbridged (), entry.initContext .unbridged ());
166186 }
167187
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);
174190}
175191
176192BridgedParamDecl BridgedParamDecl_createParsed (
0 commit comments