@@ -554,20 +554,8 @@ getActualVarDeclIntroducer(serialization::VarDeclIntroducer raw) {
554
554
}
555
555
556
556
Expected<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
-
560
557
using namespace decls_block ;
561
558
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
-
571
559
SmallVector<uint64_t , 8 > scratch;
572
560
573
561
BCOffsetRAII restoreOffset (DeclTypeCursor);
@@ -588,7 +576,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
588
576
fatalIfUnexpected (DeclTypeCursor.readRecord (next.ID , scratch));
589
577
switch (kind) {
590
578
case decls_block::PAREN_PATTERN: {
591
- Pattern *subPattern = readPatternUnchecked (owningDC);
579
+ Pattern *subPattern;
580
+ UNWRAP (readPattern (owningDC), subPattern);
592
581
593
582
auto result = ParenPattern::createImplicit (getContext (), subPattern);
594
583
@@ -621,12 +610,15 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
621
610
TuplePatternEltLayout::readRecord (scratch, labelID);
622
611
Identifier label = getIdentifier (labelID);
623
612
624
- Pattern *subPattern = readPatternUnchecked (owningDC);
613
+ Pattern *subPattern;
614
+ UNWRAP (readPattern (owningDC), subPattern);
625
615
elements.push_back (TuplePatternElt (label, SourceLoc (), subPattern));
626
616
}
627
617
628
618
auto result = TuplePattern::createImplicit (getContext (), elements);
629
- recordPatternType (result, getType (tupleTypeID));
619
+ Type tupleType;
620
+ UNWRAP (getTypeChecked (tupleTypeID), tupleType);
621
+ recordPatternType (result, tupleType);
630
622
restoreOffset.reset ();
631
623
return result;
632
624
}
@@ -685,7 +677,8 @@ Expected<Pattern *> ModuleFile::readPattern(DeclContext *owningDC) {
685
677
unsigned rawIntroducer;
686
678
BindingPatternLayout::readRecord (scratch, rawIntroducer);
687
679
688
- Pattern *subPattern = readPatternUnchecked (owningDC);
680
+ Pattern *subPattern;
681
+ UNWRAP (readPattern (owningDC), subPattern);
689
682
690
683
auto introducer = getActualVarDeclIntroducer (
691
684
(serialization::VarDeclIntroducer) rawIntroducer);
0 commit comments