diff options
author | md_5 <git@md-5.net> | 2014-10-24 21:16:23 +1100 |
---|---|---|
committer | md_5 <git@md-5.net> | 2014-10-25 09:30:59 +1100 |
commit | b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc (patch) | |
tree | 4c1ac9026ebda849390d4000fe744cea917c4a17 /src/org/jetbrains/java/decompiler/modules/decompiler/exps | |
parent | e0f22e66296eeaf1e2a9af73af0c7f9ba28521b1 (diff) | |
download | fernflower-b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc.tar fernflower-b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc.tar.gz fernflower-b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc.tar.lz fernflower-b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc.tar.xz fernflower-b98e02e557eb7c30d6425ffd9cfa8b7b71b164dc.zip |
Spigot Changes
Diffstat (limited to 'src/org/jetbrains/java/decompiler/modules/decompiler/exps')
3 files changed, 29 insertions, 7 deletions
diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java index e51615d..5363477 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FieldExprent.java @@ -102,7 +102,7 @@ public class FieldExprent extends Exprent { if (isStatic) { ClassNode node = (ClassNode)DecompilerContext.getProperty(DecompilerContext.CURRENT_CLASS_NODE); - if (node == null || !classname.equals(node.classStruct.qualifiedName)) { + if (true || node == null || !classname.equals(node.classStruct.qualifiedName)) { // Spigot buf.append(DecompilerContext.getImportCollector().getShortName(ExprProcessor.buildJavaClassName(classname))); buf.append("."); } diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java index 92d549e..e9d9064 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java @@ -373,13 +373,26 @@ public class InvocationExprent extends Exprent { return buf.toString(); } + private Set<StructClass> addAllSuper(Set<StructClass> set, String clazz) { + StructClass cstr = DecompilerContext.getStructContext().getClass(clazz); + if (cstr == null) { + return set; + } + set.add(cstr); + for (String inter : cstr.getInterfaceNames()) { + addAllSuper(set, inter); + } + addAllSuper(set, cstr.superClass.getString()); + + return set; + } + private Set<Integer> getAmbiguousParameters() { Set<Integer> ret = new HashSet<Integer>(); - StructClass cstr = DecompilerContext.getStructContext().getClass(classname); - if (cstr != null) { - List<MethodDescriptor> lstMethods = new ArrayList<MethodDescriptor>(); + List<MethodDescriptor> lstMethods = new ArrayList<MethodDescriptor>(); + for (StructClass cstr : addAllSuper(new HashSet<StructClass>(), classname)) { for (StructMethod meth : cstr.getMethods()) { if (name.equals(meth.getName())) { MethodDescriptor md = MethodDescriptor.parseDescriptor(meth.getDescriptor()); diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/VarExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/VarExprent.java index 16e6c64..b8e60e7 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/VarExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/VarExprent.java @@ -27,11 +27,12 @@ import org.jetbrains.java.decompiler.modules.decompiler.vars.VarTypeProcessor; import org.jetbrains.java.decompiler.modules.decompiler.vars.VarVersionPaar; import org.jetbrains.java.decompiler.struct.gen.VarType; import org.jetbrains.java.decompiler.util.InterpreterUtil; +import org.jetbrains.java.decompiler.util.SortUtil; import java.util.ArrayList; import java.util.List; -public class VarExprent extends Exprent { +public class VarExprent extends Exprent implements SortUtil.Indexed { // Spigot public static final int STACK_BASE = 10000; @@ -94,15 +95,16 @@ public class VarExprent extends Exprent { } else { String name = null; + String typeName = ExprProcessor.getCastTypeName(getVartype()); // Spigot if (processor != null) { - name = processor.getVarName(new VarVersionPaar(index, version)); + name = processor.getVarName(new VarVersionPaar(index, version, typeName, false)); // Spigot } if (definition) { if (processor != null && processor.getVarFinal(new VarVersionPaar(index, version)) == VarTypeProcessor.VAR_FINALEXPLICIT) { buffer.append("final "); } - buffer.append(ExprProcessor.getCastTypeName(getVartype())).append(" "); + buffer.append(typeName).append(" "); // Spigot } buffer.append(name == null ? ("var" + index + (version == 0 ? "" : "_" + version)) : name); } @@ -128,6 +130,13 @@ public class VarExprent extends Exprent { this.index = index; } + // Spigot Start + @Override + public int getSortIndex() { + return (definition) ? index : -1; + } + // Spigot End + public VarType getVartype() { VarType vt = null; if (processor != null) { |