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.PsiPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
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.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
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().resolveInnerClasses(
|
||||
resolverScopeData.classOrNamespaceDescriptor, resolverScopeData.psiClass, resolverScopeData.staticMembers));
|
||||
// TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes
|
||||
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) {
|
||||
|
||||
@@ -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 fileNameList
|
||||
* @throws Exception
|
||||
*/
|
||||
protected void doFileTest(int completionLevel) {
|
||||
protected void doFileTest(int completionLevel, String[] fileNameList) {
|
||||
try {
|
||||
configureByFiles(null, getFileNameList());
|
||||
configureByFiles(null, fileNameList);
|
||||
complete(completionLevel);
|
||||
|
||||
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() {
|
||||
doFileTest(1);
|
||||
doFileTest(1, getFileNameList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,11 @@ public class JetMultifileBasicCompletionTest extends JetCompletionMultiTestBase
|
||||
doFileTest();
|
||||
}
|
||||
|
||||
public void testJavaInnerClasses() throws Exception {
|
||||
String fileName = getTestName(false);
|
||||
doFileTest(1, new String[] {fileName + ".kt", fileName + ".java"});
|
||||
}
|
||||
|
||||
public void testNotImportedExtensionFunction() throws Exception {
|
||||
doFileTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user