Completion for java inner class names
This commit is contained in:
+11
-7
@@ -21,11 +21,7 @@ import com.intellij.psi.PsiClass;
|
|||||||
import com.intellij.psi.PsiModifier;
|
import com.intellij.psi.PsiModifier;
|
||||||
import com.intellij.psi.PsiPackage;
|
import com.intellij.psi.PsiPackage;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl;
|
||||||
@@ -82,8 +78,16 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
|
|
||||||
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveFieldGroup(resolverScopeData));
|
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveFieldGroup(resolverScopeData));
|
||||||
|
|
||||||
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
// TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes
|
||||||
resolverScopeData.classOrNamespaceDescriptor, resolverScopeData.psiClass, resolverScopeData.staticMembers));
|
if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) {
|
||||||
|
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
||||||
|
resolverScopeData.classOrNamespaceDescriptor, resolverScopeData.psiClass, false));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
||||||
|
resolverScopeData.classOrNamespaceDescriptor, resolverScopeData.psiClass,
|
||||||
|
resolverScopeData.staticMembers));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resolverScopeData.psiPackage != null) {
|
if (resolverScopeData.psiPackage != null) {
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
public final class R {
|
||||||
|
public static final class layout {
|
||||||
|
public static final int main=0x7f020000;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
fun main(args: Array<String>) {
|
||||||
|
println(R.<caret>)
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXIST: layout
|
||||||
@@ -27,11 +27,12 @@ public abstract class JetCompletionMultiTestBase extends CompletionTestCase {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param completionLevel {@see CompletionParameters.getInvocationCount()} javadoc
|
* @param completionLevel {@see CompletionParameters.getInvocationCount()} javadoc
|
||||||
|
* @param fileNameList
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
protected void doFileTest(int completionLevel) {
|
protected void doFileTest(int completionLevel, String[] fileNameList) {
|
||||||
try {
|
try {
|
||||||
configureByFiles(null, getFileNameList());
|
configureByFiles(null, fileNameList);
|
||||||
complete(completionLevel);
|
complete(completionLevel);
|
||||||
|
|
||||||
final String fileText = getFile().getText();
|
final String fileText = getFile().getText();
|
||||||
@@ -49,7 +50,11 @@ public abstract class JetCompletionMultiTestBase extends CompletionTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void doFileTest(int completionLevel) {
|
||||||
|
doFileTest(completionLevel, getFileNameList());
|
||||||
|
}
|
||||||
|
|
||||||
protected void doFileTest() {
|
protected void doFileTest() {
|
||||||
doFileTest(1);
|
doFileTest(1, getFileNameList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ public class JetMultifileBasicCompletionTest extends JetCompletionMultiTestBase
|
|||||||
doFileTest();
|
doFileTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testJavaInnerClasses() throws Exception {
|
||||||
|
String fileName = getTestName(false);
|
||||||
|
doFileTest(1, new String[] {fileName + ".kt", fileName + ".java"});
|
||||||
|
}
|
||||||
|
|
||||||
public void testNotImportedExtensionFunction() throws Exception {
|
public void testNotImportedExtensionFunction() throws Exception {
|
||||||
doFileTest();
|
doFileTest();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user