提交 8d69af87 编写于 作者: N Nikolay Krasko

Completion for java inner class names

上级 95414078
......@@ -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) {
......
public final class R {
public static final class layout {
public static final int main=0x7f020000;
}
}
\ No newline at end of file
fun main(args: Array<String>) {
println(R.<caret>)
}
// EXIST: layout
\ No newline at end of file
......@@ -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();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册