mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge remote-tracking branch 'origin/main' into rebranch
This commit is contained in:
@@ -555,20 +555,8 @@ getActualVarDeclIntroducer(serialization::VarDeclIntroducer raw) {
|
||||
}
|
||||
|
||||
Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
|
||||
// Currently, the only case in which this function can fail (return an error)
|
||||
// is when reading a pattern for a single variable declaration.
|
||||
|
||||
using namespace decls_block;
|
||||
|
||||
auto readPatternUnchecked = [this](DeclContext *owningDC) -> Pattern * {
|
||||
Expected<Pattern *> deserialized = readPattern(owningDC);
|
||||
if (!deserialized) {
|
||||
fatal(deserialized.takeError());
|
||||
}
|
||||
assert(deserialized.get());
|
||||
return deserialized.get();
|
||||
};
|
||||
|
||||
SmallVector<uint64_t, 8> scratch;
|
||||
|
||||
BCOffsetRAII restoreOffset(DeclTypeCursor);
|
||||
@@ -589,7 +577,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
|
||||
fatalIfUnexpected(DeclTypeCursor.readRecord(next.ID, scratch));
|
||||
switch (kind) {
|
||||
case decls_block::PAREN_PATTERN: {
|
||||
Pattern *subPattern = readPatternUnchecked(owningDC);
|
||||
Pattern *subPattern;
|
||||
UNWRAP(readPattern(owningDC), subPattern);
|
||||
|
||||
auto result = ParenPattern::createImplicit(getContext(), subPattern);
|
||||
|
||||
@@ -622,12 +611,15 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
|
||||
TuplePatternEltLayout::readRecord(scratch, labelID);
|
||||
Identifier label = getIdentifier(labelID);
|
||||
|
||||
Pattern *subPattern = readPatternUnchecked(owningDC);
|
||||
Pattern *subPattern;
|
||||
UNWRAP(readPattern(owningDC), subPattern);
|
||||
elements.push_back(TuplePatternElt(label, SourceLoc(), subPattern));
|
||||
}
|
||||
|
||||
auto result = TuplePattern::createImplicit(getContext(), elements);
|
||||
recordPatternType(result, getType(tupleTypeID));
|
||||
Type tupleType;
|
||||
UNWRAP(getTypeChecked(tupleTypeID), tupleType);
|
||||
recordPatternType(result, tupleType);
|
||||
restoreOffset.reset();
|
||||
return result;
|
||||
}
|
||||
@@ -686,7 +678,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
|
||||
unsigned rawIntroducer;
|
||||
BindingPatternLayout::readRecord(scratch, rawIntroducer);
|
||||
|
||||
Pattern *subPattern = readPatternUnchecked(owningDC);
|
||||
Pattern *subPattern;
|
||||
UNWRAP(readPattern(owningDC), subPattern);
|
||||
|
||||
auto introducer = getActualVarDeclIntroducer(
|
||||
(serialization::VarDeclIntroducer) rawIntroducer);
|
||||
|
||||
Reference in New Issue
Block a user