mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[Serialization] Output precedence higher/lowerThan relations when valid
When allowing errors, do not output higher/lowerThan relations for invalid precedencegroup declarations. Resolves rdar://97362356.
This commit is contained in:
@@ -3388,20 +3388,27 @@ public:
|
||||
|
||||
SmallVector<DeclID, 8> relations;
|
||||
for (auto &rel : group->getHigherThan()) {
|
||||
assert(rel.Group && "Undiagnosed invalid precedence group!");
|
||||
relations.push_back(S.addDeclRef(rel.Group));
|
||||
if (rel.Group) {
|
||||
relations.push_back(S.addDeclRef(rel.Group));
|
||||
} else if (!S.allowCompilerErrors()) {
|
||||
assert(rel.Group && "Undiagnosed invalid precedence group!");
|
||||
}
|
||||
}
|
||||
|
||||
size_t numHigher = relations.size();
|
||||
for (auto &rel : group->getLowerThan()) {
|
||||
assert(rel.Group && "Undiagnosed invalid precedence group!");
|
||||
relations.push_back(S.addDeclRef(rel.Group));
|
||||
if (rel.Group) {
|
||||
relations.push_back(S.addDeclRef(rel.Group));
|
||||
} else if (!S.allowCompilerErrors()) {
|
||||
assert(rel.Group && "Undiagnosed invalid precedence group!");
|
||||
}
|
||||
}
|
||||
|
||||
unsigned abbrCode = S.DeclTypeAbbrCodes[PrecedenceGroupLayout::Code];
|
||||
PrecedenceGroupLayout::emitRecord(S.Out, S.ScratchRecord, abbrCode,
|
||||
nameID, contextID.getOpaqueValue(),
|
||||
associativity, group->isAssignment(),
|
||||
group->getHigherThan().size(),
|
||||
relations);
|
||||
numHigher, relations);
|
||||
}
|
||||
|
||||
void visitInfixOperatorDecl(const InfixOperatorDecl *op) {
|
||||
|
||||
Reference in New Issue
Block a user