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.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();
}