TypeConstructor's equality for classes relies on FqNames

This is needed because different modules/libraries may define classes with the same FqNames, which may be identical or slightly different.
 Such classes must be considered equal, because your dependencies may rely on different packagings of the same codebase, and the classes there will be distinct though identical
  (think intellij-core vs idea-full).
This commit is contained in:
Andrey Breslav
2014-05-21 18:24:03 +04:00
parent f714382bd8
commit a66f44e4f5
25 changed files with 599 additions and 15 deletions
@@ -52,6 +52,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassStaticsPackageFragmentDescriptor
import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor
import org.jetbrains.jet.lang.resolve.name.SpecialNames
import org.jetbrains.jet.lang.types.AbstractClassTypeConstructor
class LazyJavaClassDescriptor(
private val outerC: LazyJavaResolverContextWithTypes,
@@ -188,7 +189,7 @@ class LazyJavaClassDescriptor(
override fun toString() = "lazy java class $fqName"
private inner class LazyJavaClassTypeConstructor : TypeConstructor {
private inner class LazyJavaClassTypeConstructor : AbstractClassTypeConstructor() {
private val _parameters = c.storageManager.createLazyValue {
jClass.getTypeParameters().map({