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