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 ||
|
||||
(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)) {
|
||||
mapSimpleNames.put(nshort, npackage);
|
||||
|
||||
@@ -61,4 +61,5 @@ public class SingleClassesTest extends SingleClassesTestBase {
|
||||
@Test public void testInnerLocalPkg() { doTest("pkg/TestInnerLocalPkg"); }
|
||||
@Test public void testInnerSignature() { doTest("pkg/TestInnerSignature"); }
|
||||
@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