Skip to content

Commit 4a3a95b

Browse files
committed
[SyntaxParse] Guard parseTypeSyntax() with own SyntaxParsingContext
So popIf() never pops parent functions storage.
1 parent d8b4497 commit 4a3a95b

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

lib/Parse/ParseType.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,15 @@ ParsedSyntaxResult<ParsedTypeSyntax> Parser::parseTypeSyntax() {
249249
ParsedSyntaxResult<ParsedTypeSyntax>
250250
Parser::parseTypeSyntax(Diag<> messageID, bool HandleCodeCompletion,
251251
bool IsSILFuncDecl) {
252+
SyntaxParsingContext ctxt(SyntaxContext);
253+
ctxt.setTransparent();
254+
255+
auto loc = Tok.getLoc();
252256
auto tyR = parseType(messageID, HandleCodeCompletion, IsSILFuncDecl);
253-
auto ty = SyntaxContext->popIf<ParsedTypeSyntax>();
254-
if (ty)
257+
if (auto ty = SyntaxContext->popIf<ParsedTypeSyntax>()) {
258+
Generator.addType(tyR.getPtrOrNull(), loc);
255259
return makeParsedResult(*ty, tyR.getStatus());
260+
}
256261
return tyR.getStatus();
257262
}
258263

0 commit comments

Comments
 (0)