提交 1bb53329 编写于 作者: S Skylot

fix: use alias as a base for class rename if file system is case sensitive (#474)

上级 e026345a
......@@ -50,19 +50,23 @@ public class RenameVisitor extends AbstractVisitor {
}
private void checkClasses(RootNode root, boolean caseSensitive) {
Set<String> clsNames = new HashSet<>();
for (ClassNode cls : root.getClasses(true)) {
List<ClassNode> classes = root.getClasses(true);
for (ClassNode cls : classes) {
checkClassName(cls);
checkFields(cls);
checkMethods(cls);
if (!caseSensitive) {
ClassInfo classInfo = cls.getClassInfo();
String clsFileName = classInfo.getAlias().getFullPath();
if (!clsNames.add(clsFileName.toLowerCase())) {
}
if (!caseSensitive) {
Set<String> clsFullPaths = new HashSet<>(classes.size());
for (ClassNode cls : classes) {
ClassInfo clsInfo = cls.getClassInfo();
ClassInfo aliasClsInfo = clsInfo.getAlias();
if (!clsFullPaths.add(aliasClsInfo.getFullPath().toLowerCase())) {
String newShortName = deobfuscator.getClsAlias(cls);
String newFullName = classInfo.makeFullClsName(newShortName, true);
classInfo.rename(cls.root(), newFullName);
clsNames.add(classInfo.getAlias().getFullPath().toLowerCase());
String newFullName = aliasClsInfo.makeFullClsName(newShortName, true);
clsInfo.rename(root, newFullName);
clsFullPaths.add(clsInfo.getAlias().getFullPath().toLowerCase());
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册