Fix bug 381123: crash while parsing PHP code
Summary:
In bug 381123 KDevelop crashed on certain PHP code. The underlying cause seems to that the classDec does not have an internalContext() set (no clue why, I couldn't figure that out).
This diff fixes the crash, but does not yield the desired behaviour: automatically deriving the type of the foreach variable (i.e. in the example of the test plan: the $row variable should be an int, but is currently calculated as mixed. Placing the foreach after the class definition works, though).
Test Plan:
The following steps used to crash kdevelop, now they don't.
- Open the following file and wait until it's been parsed (reduced from the example of Alexander Zighalin as posted on bug 381123)
<?php /* /* */ foreach(new foo() as $row) {} class foo implements Iterator { public function current(): int { } }
- Close the comment on line 2 by hitting enter and closing it with */
Reviewers: KDevelop, zhigalin
Subscribers: mwolff, zhigalin, apol, kfunk, kdevelop-devel, KDevelop
Tags: KDevelop
Differential Revision: https://phabricator.kde.org/D6837