Package renaming inconsistency for T/CSRG mappings
Su5eD opened this issue · 1 comments
The Issue
Commit 147a04d introduced an update to JarMapping#parseCsrgLine
that would remove the /
suffix from old package names in CSRG mappings in order to comply with the mapped package names on bukkit, which did not have a trailing slash.
SpecialSource/src/main/java/net/md_5/specialsource/JarMapping.java
Lines 458 to 462 in a33eacd
However, this causes an inconsistency in names that breaks renaming packages.
Normally, both old and new SRG package names are expected to have trailing slashes. This should apply to other SRG-based formats as well.
Reproduction
Remaping the class name com/example/foo/Main
with any of the following TSRG lines will result in invalid class names:
com/example/foo/ com/example/bar/
->com/example/bar//Main
, expected:com/example/bar/Main
com/example/foo/ .
->/Main
, expected:Main
Expected behavior
SpecialSource should be able to properly handle package names' trailing slashes for all SRG-based formats.
Proposed solution
Adding the existing trailing slash handler code from parseSrgLine
to parseCsrgLine
as well solves the issue. It's a simple and backwards-compatible solution.
SpecialSource/src/main/java/net/md_5/specialsource/JarMapping.java
Lines 568 to 574 in a33eacd
Please open a PR?