To handle pseudoprivate members, this adds a new first pass to the module migrator that tracks member declarations and references.
This allows the main pass of the migrator to rename members when it first encounters their declarations, applying patches to every reference tracked by the first pass. This is now used for all renaming of user-defined members. When the main pass encounters member references, the only patches applied are namespaces and for built-in functions whose names change.
Resolves #48. Resolves #75.
To handle pseudoprivate members, this adds a new first pass to the module migrator that tracks member declarations and references.
This allows the main pass of the migrator to rename members when it first encounters their declarations, applying patches to every reference tracked by the first pass. This is now used for all renaming of user-defined members. When the main pass encounters member references, the only patches applied are namespaces and for built-in functions whose names change.