Fix NullReferenceException in VB SyntaxFactory.ParseArgumentList when parentheses are missing #80803
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix NullReferenceException when calling SyntaxFactory.ParseArgumentList without parentheses
Issue
When calling
SyntaxFactory.ParseArgumentList("42")
without parentheses, the method fails with either a Debug.Assert failure or NullReferenceException. The method works correctly when parentheses are included:SyntaxFactory.ParseArgumentList("(42)")
.Root Cause
The
ParseParenthesizedArguments
method inParseExpression.vb
assumes the current token is an OpenParenToken. When it's not, theTryGetTokenAndEatNewLine
call withcreateIfMissing:=False
leavesopenParen
asNothing
(null), which later causes issues.Solution
Modified
ParseParenthesizedArguments
to gracefully handle missing opening parentheses by:Changes Made
ParseExpression.vb (9 lines changed):
SyntaxFactoryTests.vb (25 lines added):
TestParseArgumentListWithoutParentheses
Test Results
TestParseArgumentListWithoutParentheses
passesSecurity Summary
No security vulnerabilities introduced. CodeQL analysis did not identify any issues.
Fixes #58668
Original prompt
Fixes #58668
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.