@@ -555,20 +555,8 @@ getActualVarDeclIntroducer(serialization::VarDeclIntroducer raw) {
555555}
556556
557557Expected<Pattern *> ModuleFile::readPattern (DeclContext *owningDC) {
558- // Currently, the only case in which this function can fail (return an error)
559- // is when reading a pattern for a single variable declaration.
560-
561558 using namespace decls_block ;
562559
563- auto readPatternUnchecked = [this ](DeclContext *owningDC) -> Pattern * {
564- Expected<Pattern *> deserialized = readPattern (owningDC);
565- if (!deserialized) {
566- fatal (deserialized.takeError ());
567- }
568- assert (deserialized.get ());
569- return deserialized.get ();
570- };
571-
572560 SmallVector<uint64_t , 8 > scratch;
573561
574562 BCOffsetRAII restoreOffset (DeclTypeCursor);
@@ -589,7 +577,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
589577 fatalIfUnexpected (DeclTypeCursor.readRecord (next.ID , scratch));
590578 switch (kind) {
591579 case decls_block::PAREN_PATTERN: {
592- Pattern *subPattern = readPatternUnchecked (owningDC);
580+ Pattern *subPattern;
581+ UNWRAP (readPattern (owningDC), subPattern);
593582
594583 auto result = ParenPattern::createImplicit (getContext (), subPattern);
595584
@@ -622,12 +611,15 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
622611 TuplePatternEltLayout::readRecord (scratch, labelID);
623612 Identifier label = getIdentifier (labelID);
624613
625- Pattern *subPattern = readPatternUnchecked (owningDC);
614+ Pattern *subPattern;
615+ UNWRAP (readPattern (owningDC), subPattern);
626616 elements.push_back (TuplePatternElt (label, SourceLoc (), subPattern));
627617 }
628618
629619 auto result = TuplePattern::createImplicit (getContext (), elements);
630- recordPatternType (result, getType (tupleTypeID));
620+ Type tupleType;
621+ UNWRAP (getTypeChecked (tupleTypeID), tupleType);
622+ recordPatternType (result, tupleType);
631623 restoreOffset.reset ();
632624 return result;
633625 }
@@ -686,7 +678,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
686678 unsigned rawIntroducer;
687679 BindingPatternLayout::readRecord (scratch, rawIntroducer);
688680
689- Pattern *subPattern = readPatternUnchecked (owningDC);
681+ Pattern *subPattern;
682+ UNWRAP (readPattern (owningDC), subPattern);
690683
691684 auto introducer = getActualVarDeclIntroducer (
692685 (serialization::VarDeclIntroducer) rawIntroducer);
0 commit comments