Use JvmResolveUtil#createContainer in KotlinOverloadTest and KotlinOverridingTest

This commit is contained in:
Alexander Udalov
2016-10-20 12:23:47 +03:00
parent 8a5c8da757
commit 4effe42f1d
3 changed files with 29 additions and 14 deletions
@@ -16,8 +16,9 @@
package org.jetbrains.kotlin.types;
import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.container.ComponentProvider;
import org.jetbrains.kotlin.container.DslKt;
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.psi.KtNamedFunction;
@@ -26,14 +27,14 @@ import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver;
import org.jetbrains.kotlin.resolve.OverloadChecker;
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator;
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
import org.jetbrains.kotlin.tests.di.InjectionKt;
public class KotlinOverloadTest extends KotlinTestWithEnvironment {
private final ModuleDescriptor root = KotlinTestUtils.createEmptyModule("<test_root>");
private ModuleDescriptor module;
private FunctionDescriptorResolver functionDescriptorResolver;
private final OverloadChecker overloadChecker = new OverloadChecker(TypeSpecificityComparator.NONE.INSTANCE);
@@ -45,11 +46,14 @@ public class KotlinOverloadTest extends KotlinTestWithEnvironment {
@Override
public void setUp() throws Exception {
super.setUp();
functionDescriptorResolver = InjectionKt.createContainerForTests(getProject(), root).getFunctionDescriptorResolver();
ComponentProvider container = JvmResolveUtil.createContainer(getEnvironment());
module = DslKt.getService(container, ModuleDescriptor.class);
functionDescriptorResolver = DslKt.getService(container, FunctionDescriptorResolver.class);
}
@Override
protected void tearDown() throws Exception {
module = null;
functionDescriptorResolver = null;
super.tearDown();
}
@@ -165,7 +169,9 @@ public class KotlinOverloadTest extends KotlinTestWithEnvironment {
private FunctionDescriptor makeFunction(String funDecl) {
KtNamedFunction function = KtPsiFactoryKt.KtPsiFactory(getProject()).createFunction(funDecl);
LexicalScope scope = TypeTestUtilsKt.builtInPackageAsLexicalScope(DefaultBuiltIns.getInstance());
return functionDescriptorResolver.resolveFunctionDescriptor(root, scope, function, KotlinTestUtils.DUMMY_TRACE, DataFlowInfoFactory.EMPTY);
LexicalScope scope = TypeTestUtilsKt.builtInPackageAsLexicalScope(module);
return functionDescriptorResolver.resolveFunctionDescriptor(
module, scope, function, KotlinTestUtils.DUMMY_TRACE, DataFlowInfoFactory.EMPTY
);
}
}
@@ -17,6 +17,8 @@
package org.jetbrains.kotlin.types;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.container.ComponentProvider;
import org.jetbrains.kotlin.container.DslKt;
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.psi.KtNamedFunction;
@@ -24,14 +26,14 @@ import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver;
import org.jetbrains.kotlin.resolve.OverridingUtil;
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
import org.jetbrains.kotlin.tests.di.InjectionKt;
public class KotlinOverridingTest extends KotlinTestWithEnvironment {
private final ModuleDescriptor root = KotlinTestUtils.createEmptyModule("<test_root>");
private ModuleDescriptor module;
private FunctionDescriptorResolver functionDescriptorResolver;
@Override
@@ -42,11 +44,14 @@ public class KotlinOverridingTest extends KotlinTestWithEnvironment {
@Override
public void setUp() throws Exception {
super.setUp();
functionDescriptorResolver = InjectionKt.createContainerForTests(getProject(), root).getFunctionDescriptorResolver();
ComponentProvider container = JvmResolveUtil.createContainer(getEnvironment());
module = DslKt.getService(container, ModuleDescriptor.class);
functionDescriptorResolver = DslKt.getService(container, FunctionDescriptorResolver.class);
}
@Override
protected void tearDown() throws Exception {
module = null;
functionDescriptorResolver = null;
super.tearDown();
}
@@ -165,8 +170,9 @@ public class KotlinOverridingTest extends KotlinTestWithEnvironment {
private FunctionDescriptor makeFunction(String funDecl) {
KtNamedFunction function = KtPsiFactoryKt.KtPsiFactory(getProject()).createFunction(funDecl);
LexicalScope scope = TypeTestUtilsKt.builtInPackageAsLexicalScope(root.getBuiltIns());
return functionDescriptorResolver.resolveFunctionDescriptor(root, scope, function,
KotlinTestUtils.DUMMY_TRACE, DataFlowInfoFactory.EMPTY);
LexicalScope scope = TypeTestUtilsKt.builtInPackageAsLexicalScope(module);
return functionDescriptorResolver.resolveFunctionDescriptor(
module, scope, function, KotlinTestUtils.DUMMY_TRACE, DataFlowInfoFactory.EMPTY
);
}
}
@@ -17,8 +17,11 @@
package org.jetbrains.kotlin.types
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope
fun KotlinBuiltIns.builtInPackageAsLexicalScope()
= LexicalScope.Empty(builtInsPackageScope.memberScopeAsImportingScope(), builtInsModule)
fun ModuleDescriptor.builtInPackageAsLexicalScope(): LexicalScope.Empty {
val packageView = getPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME)
return LexicalScope.Empty(packageView.memberScope.memberScopeAsImportingScope(), this)
}