Better disambiguation between subscript-expression and compound-statement
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
Reproduce the PHP snippet and inspect the parser rules or entry points handling subscript-expression, if statements, and compound statements. Confirm the corrected parse keeps the missing-parenthesis error associated with the if statement and preserves c() as a method of class A.
Written by the indexing model from the issue text.
Description
This error tolerance case needs some special handling.
class A {
function b() {
if ($expression {
$a = 3;
$b = "hello";
}
echo "hi";
}
public function c() {
}
}
In this case, the if statement is missing a close paren. However, rather than getting parsed as an if-statement missing a close paren, it gets parsed as a subscript-expression (which is defined as follows, according to the PHP language spec.
subscript-expression:
dereferencable-expression [ expressionopt ]
dereferencable-expression { expression } <b>[Deprecated form]</b>
This results in the first close brace getting treated as a close brace for the method, rather than the if statement. Then the next close brace gets eaten by the Class node (which terminates the class), so c() ends up being a function, rather than a method.
- Dominant language
- PHP
- Stars
- 894
- Forks
- 85
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 3
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/tolerant-php-parser
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
microsoft/tolerant-php-parser#423 ·
-
New release request Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
microsoft/tolerant-php-parser#420 · 1 reaction ·
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
microsoft/tolerant-php-parser#417 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 50/100
microsoft/tolerant-php-parser#413 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
microsoft/tolerant-php-parser#407 · 2 comments ·
All issues in microsoft/tolerant-php-parser
Similar issues
-
priority: p3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
googleapis/librarian#7636 ·
-
0. Needs triage bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nextcloud/fulltextsearch#1011 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
phpstan/phpstan-doctrine#794 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Automattic/static-site-importer#1767 ·