C++: Use Definition.qll's getName #1376
Merged
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.
It turns out we didn't have to move the
getName
implementation into the mirror classes inQualifiedName
. Doing so only made it harder for the optimiser to specialize calls togetName
on various kinds ofDeclaration
.Most of the diff in this PR (the first commit) is a partial revert of #1303, reverting just the parts that cause unnecessary complication. The cost is that there are now references in both directions between
QualifiedName.qll
andDeclaration.qll
.Specialization of
getName
still doesn't work as well as I would like, but this change does show some improvement. For example, currentmaster
has this DIL:while this PR gets us this DIL:
The only difference is the disjunction that matches "move" and "forward".