Commit 202fe5a0 authored by Skylot's avatar Skylot

core: fix links for fields in nested classes

parent 68ccf57b
...@@ -116,7 +116,9 @@ public final class JavaClass implements JavaNode { ...@@ -116,7 +116,9 @@ public final class JavaClass implements JavaNode {
public CodePosition getDefinitionPosition(int line, int offset) { public CodePosition getDefinitionPosition(int line, int offset) {
Map<CodePosition, Object> map = getCodeAnnotations(); Map<CodePosition, Object> map = getCodeAnnotations();
Object obj = map.get(new CodePosition(line, offset)); Object obj = map.get(new CodePosition(line, offset));
if (obj instanceof LineAttrNode) { if (!(obj instanceof LineAttrNode)) {
return null;
}
ClassNode clsNode = null; ClassNode clsNode = null;
if (obj instanceof ClassNode) { if (obj instanceof ClassNode) {
clsNode = (ClassNode) obj; clsNode = (ClassNode) obj;
...@@ -128,17 +130,18 @@ public final class JavaClass implements JavaNode { ...@@ -128,17 +130,18 @@ public final class JavaClass implements JavaNode {
if (clsNode == null) { if (clsNode == null) {
return null; return null;
} }
clsNode = clsNode.getParentClass(); clsNode = clsNode.getTopParentClass();
JavaClass jCls = decompiler.findJavaClass(clsNode); JavaClass jCls = decompiler.findJavaClass(clsNode);
if (jCls == null) { if (jCls == null) {
return null; return null;
} }
jCls.decompile(); jCls.decompile();
int defLine = ((LineAttrNode) obj).getDecompiledLine(); int defLine = ((LineAttrNode) obj).getDecompiledLine();
return new CodePosition(jCls, defLine, 0); if (defLine == 0) {
}
return null; return null;
} }
return new CodePosition(jCls, defLine, 0);
}
public Integer getSourceLine(int decompiledLine) { public Integer getSourceLine(int decompiledLine) {
decompile(); decompile();
......
...@@ -354,6 +354,11 @@ public class ClassNode extends LineAttrNode implements ILoadable { ...@@ -354,6 +354,11 @@ public class ClassNode extends LineAttrNode implements ILoadable {
return parentClass; return parentClass;
} }
public ClassNode getTopParentClass() {
ClassNode parent = getParentClass();
return parent == this ? this : parent.getParentClass();
}
public List<ClassNode> getInnerClasses() { public List<ClassNode> getInnerClasses() {
return innerClasses; return innerClasses;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment