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"); }
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
|||||||
|
package pkg;
|
||||||
|
|
||||||
|
class TestShadowing {
|
||||||
|
ext.Shadow.B instanceOfB = new ext.Shadow.B();
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package ext;
|
||||||
|
|
||||||
|
// companion class for pkg/TestShadowing.java
|
||||||
|
public class Shadow {
|
||||||
|
public static class B { }
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package pkg;
|
||||||
|
|
||||||
|
// companion class for pkg/TestShadowing.java
|
||||||
|
public class Shadow { }
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package pkg;
|
||||||
|
|
||||||
|
class TestShadowing {
|
||||||
|
ext.Shadow.B instanceOfB = new ext.Shadow.B();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user