@@ -356,7 +356,8 @@ namespace {
356
356
// Assign the next discriminator.
357
357
Identifier name = valueDecl->getBaseIdentifier ();
358
358
auto &discriminator = DeclDiscriminators[name];
359
- discriminator = std::max (discriminator, std::max (InitialDiscriminator, valueDecl->getLocalDiscriminator () + 1 ));
359
+ discriminator = std::max (discriminator,
360
+ std::max (InitialDiscriminator, valueDecl->getLocalDiscriminator () + 1 ));
360
361
}
361
362
}
362
363
@@ -411,7 +412,13 @@ unsigned LocalDiscriminatorsRequest::evaluate(
411
412
ParameterList *params = nullptr ;
412
413
ParamDecl *selfParam = nullptr ;
413
414
if (auto func = dyn_cast<AbstractFunctionDecl>(dc)) {
414
- node = func->getBody ();
415
+ if (!func->isBodySkipped ()) {
416
+ assert (func->getBodyKind () != AbstractFunctionDecl::BodyKind::Unparsed &&
417
+ func->getBodyKind () != AbstractFunctionDecl::BodyKind::Parsed &&
418
+ " Computing local discriminators too early" );
419
+ node = func->getBody ();
420
+ }
421
+
415
422
selfParam = func->getImplicitSelfDecl ();
416
423
params = func->getParameters ();
417
424
@@ -428,6 +435,7 @@ unsigned LocalDiscriminatorsRequest::evaluate(
428
435
}
429
436
}
430
437
} else if (auto closure = dyn_cast<ClosureExpr>(dc)) {
438
+ assert (closure->getType ());
431
439
node = closure->getBody ();
432
440
params = closure->getParameters ();
433
441
} else if (auto topLevel = dyn_cast<TopLevelCodeDecl>(dc)) {
0 commit comments