Name Mangling fixes and centralization #152
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.
Various changes made to name mangling in order to avoid conflicts with other ZenCode constructs (such as class names or functions).
Moreover, all name mangling has been centralized into a single
JavaMangler
class to ensure that any changes propagate to all relevant places at once if needed.Also, a name mangling scheme that is consistent and (somewhat) human-readable has been attempted; due to counter non-determinism this is still not fully achieved, but this should still provide better information than a single ID.
Additionally, every counter has been split into separate counters to allow for higher flexibility. Granted, I don't think anyone will manage to create more than 2 billion lambdas, but now we can have 2 billion lambdas per class, so potentially infinite lambdas. Note that currently lambda generation is still broken with respect to packages, but fixing this is a non-goal for this PR.
This PR also adds some more tests:
mangling
tests relate to testing that some names are properly mangled to avoid conflicts (they both pass), whereas thecapturing_lambda
tests both fail due to issues with captures.capturing-lambda-2
is particularly hilarious.