Remove kotlin.coroutine package from default imports.

This commit is contained in:
Stanislav Erokhin
2016-12-14 14:50:48 +03:00
committed by Stanislav Erokhin
parent 7d1b883171
commit 0132f3eea7
9 changed files with 43 additions and 18 deletions
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.backend.common
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.Name
@@ -25,7 +24,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
val SUSPEND_WITH_CURRENT_CONTINUATION_NAME = Name.identifier("suspendWithCurrentContinuation")
fun FunctionDescriptor.getBuiltInSuspendWithCurrentContinuation() =
builtIns.builtInsPackageFragments.singleOrNull { it.fqName == KotlinBuiltIns.COROUTINES_PACKAGE_FQ_NAME }
?.getMemberScope()
?.getContributedFunctions(SUSPEND_WITH_CURRENT_CONTINUATION_NAME, NoLookupLocation.FROM_BACKEND)
?.singleOrNull()
builtIns.builtInsCoroutinePackageFragment.getMemberScope()
.getContributedFunctions(SUSPEND_WITH_CURRENT_CONTINUATION_NAME, NoLookupLocation.FROM_BACKEND)
.singleOrNull()
@@ -42,7 +42,7 @@ object JvmPlatform : TargetPlatform("JVM") {
}
val builtIns = JvmBuiltIns(LockBasedStorageManager.NO_LOCKS)
for (builtinPackageFragment in builtIns.builtInsPackageFragments) {
for (builtinPackageFragment in builtIns.builtInsPackageFragmentsImportedByDefault) {
addAllClassifiersFromScope(builtinPackageFragment.getMemberScope())
}
}
@@ -43,7 +43,6 @@ abstract class TargetPlatform(val platformName: String) {
add(ImportPath("kotlin.*"))
add(ImportPath("kotlin.annotation.*"))
add(ImportPath("kotlin.collections.*"))
add(ImportPath("kotlin.coroutines.*"))
add(ImportPath("kotlin.ranges.*"))
add(ImportPath("kotlin.sequences.*"))
add(ImportPath("kotlin.text.*"))
@@ -0,0 +1,8 @@
// FILE: 1.kt
fun test(<!UNUSED_PARAMETER!>c<!>: <!UNRESOLVED_REFERENCE!>Continuation<!><Unit>) {}
// FILE: 2.kt
import kotlin.coroutines.*
fun test2(<!UNUSED_PARAMETER!>c<!>: Continuation<Unit>) {}
@@ -0,0 +1,4 @@
package
public fun test(/*0*/ c: [ERROR : Continuation<Unit>]<kotlin.Unit>): kotlin.Unit
public fun test2(/*0*/ c: kotlin.coroutines.Continuation<kotlin.Unit>): kotlin.Unit
@@ -4276,6 +4276,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("noDefaultCoroutineImports.kt")
public void testNoDefaultCoroutineImports() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/coroutines/noDefaultCoroutineImports.kt");
doTest(fileName);
}
@TestMetadata("nonLocalSuspension.kt")
public void testNonLocalSuspension() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/coroutines/nonLocalSuspension.kt");
@@ -92,11 +92,11 @@ public abstract class KotlinBuiltIns {
PackageFragmentDescriptor kotlinCollections = createPackage(provider, nameToFragment, COLLECTIONS_PACKAGE_FQ_NAME);
createPackage(provider, nameToFragment, RANGES_PACKAGE_FQ_NAME);
PackageFragmentDescriptor kotlinAnnotation = createPackage(provider, nameToFragment, ANNOTATION_PACKAGE_FQ_NAME);
createPackage(provider, nameToFragment, COROUTINES_PACKAGE_FQ_NAME);
PackageFragmentDescriptor coroutinePackage = createPackage(provider, null, COROUTINES_PACKAGE_FQ_NAME);
Set<PackageFragmentDescriptor> all = new LinkedHashSet<PackageFragmentDescriptor>(nameToFragment.values());
Set<PackageFragmentDescriptor> allImportedByDefault = new LinkedHashSet<PackageFragmentDescriptor>(nameToFragment.values());
return new PackageFragments(kotlin, kotlinCollections, kotlinAnnotation, all);
return new PackageFragments(kotlin, kotlinCollections, kotlinAnnotation, coroutinePackage, allImportedByDefault);
}
});
@@ -174,7 +174,7 @@ public abstract class KotlinBuiltIns {
@NotNull
private PackageFragmentDescriptor createPackage(
@NotNull PackageFragmentProvider fragmentProvider,
@NotNull Map<FqName, PackageFragmentDescriptor> packageNameToPackageFragment,
@Nullable Map<FqName, PackageFragmentDescriptor> packageNameToPackageFragment,
@NotNull final FqName packageFqName
) {
final List<PackageFragmentDescriptor> packageFragments = fragmentProvider.getPackageFragments(packageFqName);
@@ -203,7 +203,7 @@ public abstract class KotlinBuiltIns {
}
};
packageNameToPackageFragment.put(packageFqName, result);
if (packageNameToPackageFragment != null) packageNameToPackageFragment.put(packageFqName, result);
return result;
}
@@ -232,18 +232,21 @@ public abstract class KotlinBuiltIns {
public final PackageFragmentDescriptor builtInsPackageFragment;
public final PackageFragmentDescriptor collectionsPackageFragment;
public final PackageFragmentDescriptor annotationPackageFragment;
public final Set<PackageFragmentDescriptor> builtInsPackageFragments;
public final PackageFragmentDescriptor coroutinePackageFragment;
public final Set<PackageFragmentDescriptor> allImportedByDefaultBuiltInsPackageFragments;
private PackageFragments(
@NotNull PackageFragmentDescriptor builtInsPackageFragment,
@NotNull PackageFragmentDescriptor collectionsPackageFragment,
@NotNull PackageFragmentDescriptor annotationPackageFragment,
@NotNull Set<PackageFragmentDescriptor> builtInsPackageFragments
@NotNull PackageFragmentDescriptor coroutinePackageFragment,
@NotNull Set<PackageFragmentDescriptor> allImportedByDefaultBuiltInsPackageFragments
) {
this.builtInsPackageFragment = builtInsPackageFragment;
this.collectionsPackageFragment = collectionsPackageFragment;
this.annotationPackageFragment = annotationPackageFragment;
this.builtInsPackageFragments = builtInsPackageFragments;
this.coroutinePackageFragment = coroutinePackageFragment;
this.allImportedByDefaultBuiltInsPackageFragments = allImportedByDefaultBuiltInsPackageFragments;
}
}
@@ -368,8 +371,13 @@ public abstract class KotlinBuiltIns {
}
@NotNull
public Set<PackageFragmentDescriptor> getBuiltInsPackageFragments() {
return packageFragments.invoke().builtInsPackageFragments;
public Set<PackageFragmentDescriptor> getBuiltInsPackageFragmentsImportedByDefault() {
return packageFragments.invoke().allImportedByDefaultBuiltInsPackageFragments;
}
@NotNull
public PackageFragmentDescriptor getBuiltInsCoroutinePackageFragment() {
return packageFragments.invoke().coroutinePackageFragment;
}
@NotNull
@@ -16,6 +16,8 @@
package kotlin.jvm.internal
import kotlin.coroutines.*
private const val INTERCEPT_BIT_SET = 1 shl 31
private const val INTERCEPT_BIT_CLEAR = INTERCEPT_BIT_SET.inv()
@@ -50,7 +50,7 @@ class AllClassesCompletion(private val parameters: CompletionParameters,
//TODO: this is a temporary solution until we have built-ins in indices
// we need only nested classes because top-level built-ins are all added through default imports
for (builtinPackage in resolutionFacade.moduleDescriptor.builtIns.builtInsPackageFragments) {
for (builtinPackage in resolutionFacade.moduleDescriptor.builtIns.builtInsPackageFragmentsImportedByDefault) {
collectClassesFromScope(builtinPackage.getMemberScope()) {
if (it.containingDeclaration is ClassDescriptor) {
classifierDescriptorCollector(it)