@@ -554,20 +554,8 @@ getActualVarDeclIntroducer(serialization::VarDeclIntroducer raw) {
554554}
555555
556556Expected<Pattern *> ModuleFile::readPattern (DeclContext *owningDC) {
557- // Currently, the only case in which this function can fail (return an error)
558- // is when reading a pattern for a single variable declaration.
559-
560557 using namespace decls_block ;
561558
562- auto readPatternUnchecked = [this ](DeclContext *owningDC) -> Pattern * {
563- Expected<Pattern *> deserialized = readPattern (owningDC);
564- if (!deserialized) {
565- fatal (deserialized.takeError ());
566- }
567- assert (deserialized.get ());
568- return deserialized.get ();
569- };
570-
571559 SmallVector<uint64_t , 8 > scratch;
572560
573561 BCOffsetRAII restoreOffset (DeclTypeCursor);
@@ -588,7 +576,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
588576 fatalIfUnexpected (DeclTypeCursor.readRecord (next.ID , scratch));
589577 switch (kind) {
590578 case decls_block::PAREN_PATTERN: {
591- Pattern *subPattern = readPatternUnchecked (owningDC);
579+ Pattern *subPattern;
580+ UNWRAP (readPattern (owningDC), subPattern);
592581
593582 auto result = ParenPattern::createImplicit (getContext (), subPattern);
594583
@@ -621,12 +610,15 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
621610 TuplePatternEltLayout::readRecord (scratch, labelID);
622611 Identifier label = getIdentifier (labelID);
623612
624- Pattern *subPattern = readPatternUnchecked (owningDC);
613+ Pattern *subPattern;
614+ UNWRAP (readPattern (owningDC), subPattern);
625615 elements.push_back (TuplePatternElt (label, SourceLoc (), subPattern));
626616 }
627617
628618 auto result = TuplePattern::createImplicit (getContext (), elements);
629- recordPatternType (result, getType (tupleTypeID));
619+ Type tupleType;
620+ UNWRAP (getTypeChecked (tupleTypeID), tupleType);
621+ recordPatternType (result, tupleType);
630622 restoreOffset.reset ();
631623 return result;
632624 }
@@ -685,7 +677,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
685677 unsigned rawIntroducer;
686678 BindingPatternLayout::readRecord (scratch, rawIntroducer);
687679
688- Pattern *subPattern = readPatternUnchecked (owningDC);
680+ Pattern *subPattern;
681+ UNWRAP (readPattern (owningDC), subPattern);
689682
690683 auto introducer = getActualVarDeclIntroducer (
691684 (serialization::VarDeclIntroducer) rawIntroducer);
0 commit comments