Skip to content

Commit a5cb907

Browse files
rintaroJan Svoboda
authored andcommitted
[SyntaxParse] Fix memory leak for incomplete type identifier
1 parent a333a5a commit a5cb907

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

lib/Parse/ParseType.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -656,8 +656,13 @@ Parser::TypeResult Parser::parseTypeIdentifier() {
656656
// FIXME: offer a fixit: 'self' -> 'Self'
657657
Identifier =
658658
parseIdentifierSyntax(diag::expected_identifier_in_dotted_type);
659-
if (!Identifier)
659+
if (!Identifier) {
660660
Status.setIsParseError();
661+
if (Base)
662+
Junk.push_back(*Base);
663+
if (Period)
664+
Junk.push_back(*Period);
665+
}
661666
}
662667

663668
if (Identifier) {
@@ -735,11 +740,8 @@ Parser::TypeResult Parser::parseTypeIdentifier() {
735740
return makeParsedCodeCompletion<ParsedTypeSyntax>(Junk);
736741
}
737742

738-
if (Status.isError()) {
739-
if (Base)
740-
Junk.push_back(*Base);
743+
if (Status.isError())
741744
return makeParsedError<ParsedTypeSyntax>(Junk);
742-
}
743745

744746
return makeParsedSuccess(*Base);
745747
}

0 commit comments

Comments
 (0)