@@ -198,12 +198,14 @@ namespace {
198
198
// / assumes that field and global-variable bindings always bind at
199
199
// / least one name, which is probably a reasonable assumption but may
200
200
// / not be adequately enforced.
201
- static VarDecl * findFirstVariable (PatternBindingDecl *binding) {
201
+ static Optional< VarDecl*> findFirstVariable (PatternBindingDecl *binding) {
202
202
for (auto entry : binding->getPatternList ()) {
203
203
auto var = FindFirstVariable ().visit (entry.getPattern ());
204
204
if (var) return var;
205
205
}
206
- llvm_unreachable (" pattern-binding bound no variables?" );
206
+ // Pattern-binding bound without variables exists in erroneous code, e.g.
207
+ // during code completion.
208
+ return None;
207
209
}
208
210
209
211
void Mangler::mangleContext (const DeclContext *ctx) {
@@ -230,8 +232,8 @@ void Mangler::mangleContext(const DeclContext *ctx) {
230
232
}
231
233
case LocalDeclContextKind::PatternBindingInitializer: {
232
234
auto patternInit = cast<SerializedPatternBindingInitializer>(local);
233
- auto var = findFirstVariable (patternInit->getBinding ());
234
- mangleInitializerEntity (var);
235
+ if ( auto var = findFirstVariable (patternInit->getBinding ()))
236
+ mangleInitializerEntity (var. getValue () );
235
237
return ;
236
238
}
237
239
case LocalDeclContextKind::TopLevelCodeDecl:
@@ -318,8 +320,8 @@ void Mangler::mangleContext(const DeclContext *ctx) {
318
320
319
321
case InitializerKind::PatternBinding: {
320
322
auto patternInit = cast<PatternBindingInitializer>(ctx);
321
- auto var = findFirstVariable (patternInit->getBinding ());
322
- mangleInitializerEntity (var);
323
+ if ( auto var = findFirstVariable (patternInit->getBinding ()))
324
+ mangleInitializerEntity (var. getValue () );
323
325
return ;
324
326
}
325
327
}
0 commit comments