Skip to content

Commit 8441758

Browse files
authored
Merge pull request #23376 from akyrtzi/fix-syntax-parser-assertion-2
2 parents 9ca98f4 + 7a2127a commit 8441758

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

lib/Parse/ParseType.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -729,11 +729,12 @@ Parser::parseTypeSimpleOrComposition(Diag<> MessageID,
729729
addType(ty.getPtrOrNull());
730730
} while (Tok.isContextualPunctuator("&"));
731731

732-
if (SyntaxContext->isEnabled() && Status.isSuccess()) {
733-
auto LastNode = ParsedSyntaxRecorder::makeCompositionTypeElement(
734-
SyntaxContext->popIf<ParsedTypeSyntax>().getValue(), None,
735-
*SyntaxContext);
736-
SyntaxContext->addSyntax(LastNode);
732+
if (SyntaxContext->isEnabled()) {
733+
if (auto synType = SyntaxContext->popIf<ParsedTypeSyntax>()) {
734+
auto LastNode = ParsedSyntaxRecorder::makeCompositionTypeElement(
735+
synType.getValue(), None, *SyntaxContext);
736+
SyntaxContext->addSyntax(LastNode);
737+
}
737738
}
738739
SyntaxContext->collectNodesInPlace(SyntaxKind::CompositionTypeElementList);
739740

test/Syntax/Parser/fixed_crashers.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@
22
// RUN: %swift-syntax-parser-test %s -dump-tree | %FileCheck %s
33

44
let x: a[i] & b
5-
// CHECK: |let|
5+
// CHECK: |x|
6+
7+
let x2: a & b[1]
8+
// CHECK: |x2|

0 commit comments

Comments
 (0)