Decompiler name shadowing resolution
https://github.com/JetBrains/intellij-community/pull/295
This commit is contained in:
committed by
Roman Shevchenko
parent
ee740aa056
commit
766fc1390d
@@ -99,7 +99,8 @@ public class ImportCollector {
|
|||||||
|
|
||||||
if (existsDefaultClass ||
|
if (existsDefaultClass ||
|
||||||
(mapSimpleNames.containsKey(nshort) && !npackage.equals(mapSimpleNames.get(nshort)))) {
|
(mapSimpleNames.containsKey(nshort) && !npackage.equals(mapSimpleNames.get(nshort)))) {
|
||||||
return fullname;
|
// don't return full name because if the class is a inner class, full name refers to the parent full name, not the child full name
|
||||||
|
return retname == null ? fullname : (npackage + "." + retname);
|
||||||
}
|
}
|
||||||
else if (!mapSimpleNames.containsKey(nshort)) {
|
else if (!mapSimpleNames.containsKey(nshort)) {
|
||||||
mapSimpleNames.put(nshort, npackage);
|
mapSimpleNames.put(nshort, npackage);
|
||||||
|
|||||||
@@ -61,4 +61,5 @@ public class SingleClassesTest extends SingleClassesTestBase {
|
|||||||
@Test public void testInnerLocalPkg() { doTest("pkg/TestInnerLocalPkg"); }
|
@Test public void testInnerLocalPkg() { doTest("pkg/TestInnerLocalPkg"); }
|
||||||
@Test public void testInnerSignature() { doTest("pkg/TestInnerSignature"); }
|
@Test public void testInnerSignature() { doTest("pkg/TestInnerSignature"); }
|
||||||
@Test public void testParameterizedTypes() { doTest("pkg/TestParameterizedTypes"); }
|
@Test public void testParameterizedTypes() { doTest("pkg/TestParameterizedTypes"); }
|
||||||
|
@Test public void testShadowing() { doTest("pkg/TestShadowing", "pkg/Shadow", "ext/Shadow"); }
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
testData/classes/ext/Shadow$B.class
Normal file
BIN
testData/classes/ext/Shadow$B.class
Normal file
Binary file not shown.
BIN
testData/classes/ext/Shadow.class
Normal file
BIN
testData/classes/ext/Shadow.class
Normal file
Binary file not shown.
BIN
testData/classes/pkg/Shadow.class
Normal file
BIN
testData/classes/pkg/Shadow.class
Normal file
Binary file not shown.
BIN
testData/classes/pkg/TestShadowing.class
Normal file
BIN
testData/classes/pkg/TestShadowing.class
Normal file
Binary file not shown.
6
testData/results/TestShadowing.dec
Normal file
6
testData/results/TestShadowing.dec
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package pkg;
|
||||||
|
|
||||||
|
class TestShadowing {
|
||||||
|
ext.Shadow.B instanceOfB = new ext.Shadow.B();
|
||||||
|
}
|
||||||
|
|
||||||
6
testData/src/ext/Shadow.java
Normal file
6
testData/src/ext/Shadow.java
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package ext;
|
||||||
|
|
||||||
|
// companion class for pkg/TestShadowing.java
|
||||||
|
public class Shadow {
|
||||||
|
public static class B { }
|
||||||
|
}
|
||||||
4
testData/src/pkg/Shadow.java
Normal file
4
testData/src/pkg/Shadow.java
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
package pkg;
|
||||||
|
|
||||||
|
// companion class for pkg/TestShadowing.java
|
||||||
|
public class Shadow { }
|
||||||
5
testData/src/pkg/TestShadowing.java
Normal file
5
testData/src/pkg/TestShadowing.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package pkg;
|
||||||
|
|
||||||
|
class TestShadowing {
|
||||||
|
ext.Shadow.B instanceOfB = new ext.Shadow.B();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user