Completion for java inner class names

This commit is contained in:
Nikolay Krasko
2012-05-31 19:57:24 +04:00
parent 95414078b9
commit 8d69af87ce
5 changed files with 34 additions and 10 deletions
@@ -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();
} }