Load additional JDK functions into built-ins member scope

#KT-5990 Fixed
 #KT-7127 Fixed
 #KT-10370 Fixed
This commit is contained in:
Denis Zharkov
2016-04-06 16:35:50 +03:00
parent 137847e0c9
commit 5bc5722051
63 changed files with 3395 additions and 147 deletions
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.context.ContextKt;
import org.jetbrains.kotlin.context.ModuleContext;
import org.jetbrains.kotlin.context.MutableModuleContext;
import org.jetbrains.kotlin.context.ProjectContext;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider;
import org.jetbrains.kotlin.descriptors.PackagePartProvider;
@@ -161,9 +162,13 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull
public static MutableModuleContext createContextWithSealedModule(@NotNull Project project, @NotNull String moduleName) {
ProjectContext projectContext = ContextKt.ProjectContext(project);
JvmBuiltIns builtIns = new JvmBuiltIns(projectContext.getStorageManager());
MutableModuleContext context = ContextKt.ContextForNewModule(
project, Name.special("<" + moduleName + ">"), JvmPlatform.INSTANCE, JvmBuiltIns.getInstance()
projectContext, Name.special("<" + moduleName + ">"), JvmPlatform.INSTANCE,
builtIns
);
builtIns.setOwnerModuleDescriptor(context.getModule());
context.setDependencies(context.getModule(), context.getBuiltIns().getBuiltInsModule());
return context;
}
@@ -17,12 +17,13 @@
package org.jetbrains.kotlin.synthetic
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
fun FunctionDescriptor.hasJavaOriginInHierarchy(): Boolean {
return if (original.overriddenDescriptors.isEmpty())
containingDeclaration is JavaClassDescriptor
this is JavaCallableMemberDescriptor || containingDeclaration is JavaClassDescriptor
else
original.overriddenDescriptors.any { it.hasJavaOriginInHierarchy() }
}