@@ -3388,20 +3388,27 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
3388
3388
3389
3389
SmallVector<DeclID, 8 > relations;
3390
3390
for (auto &rel : group->getHigherThan ()) {
3391
- assert (rel.Group && " Undiagnosed invalid precedence group!" );
3392
- relations.push_back (S.addDeclRef (rel.Group ));
3391
+ if (rel.Group ) {
3392
+ relations.push_back (S.addDeclRef (rel.Group ));
3393
+ } else if (!S.allowCompilerErrors ()) {
3394
+ assert (rel.Group && " Undiagnosed invalid precedence group!" );
3395
+ }
3393
3396
}
3397
+
3398
+ size_t numHigher = relations.size ();
3394
3399
for (auto &rel : group->getLowerThan ()) {
3395
- assert (rel.Group && " Undiagnosed invalid precedence group!" );
3396
- relations.push_back (S.addDeclRef (rel.Group ));
3400
+ if (rel.Group ) {
3401
+ relations.push_back (S.addDeclRef (rel.Group ));
3402
+ } else if (!S.allowCompilerErrors ()) {
3403
+ assert (rel.Group && " Undiagnosed invalid precedence group!" );
3404
+ }
3397
3405
}
3398
3406
3399
3407
unsigned abbrCode = S.DeclTypeAbbrCodes [PrecedenceGroupLayout::Code];
3400
3408
PrecedenceGroupLayout::emitRecord (S.Out , S.ScratchRecord , abbrCode,
3401
3409
nameID, contextID.getOpaqueValue (),
3402
3410
associativity, group->isAssignment (),
3403
- group->getHigherThan ().size (),
3404
- relations);
3411
+ numHigher, relations);
3405
3412
}
3406
3413
3407
3414
void visitInfixOperatorDecl (const InfixOperatorDecl *op) {
0 commit comments