diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyType.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyType.kt index 56cb30c5dc5..c92e2e21c2b 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyType.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/types/LazyType.kt @@ -22,6 +22,8 @@ import org.jetbrains.jet.lang.types.TypeProjection import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor import org.jetbrains.jet.lang.resolve.scopes.JetScope import org.jetbrains.jet.lang.types.AbstractJetType +import org.jetbrains.jet.lang.types.ErrorUtils +import org.jetbrains.kotlin.util.inn abstract class LazyType(storageManager: StorageManager) : AbstractJetType() { @@ -42,7 +44,7 @@ abstract class LazyType(storageManager: StorageManager) : AbstractJetType() { override fun isNullable() = false - override fun isError() = false + override fun isError()= getConstructor().getDeclarationDescriptor().inn({ d -> ErrorUtils.isError(d)}, false) override fun getAnnotations(): List = listOf() } diff --git a/core/util.runtime/src/org/jetbrains/jet/utils/coreLib.kt b/core/util.runtime/src/org/jetbrains/jet/utils/coreLib.kt index a9159d06209..5ce096b8767 100644 --- a/core/util.runtime/src/org/jetbrains/jet/utils/coreLib.kt +++ b/core/util.runtime/src/org/jetbrains/jet/utils/coreLib.kt @@ -18,6 +18,8 @@ package org.jetbrains.kotlin.util fun Boolean.iif(then: T, _else: T): T = if (this) then else _else +fun T?.inn(then: (T) -> R, _else: R): R = if (this != null) then(this) else _else + // These two functions are needed in conjunction with iif: // foo.eq(bar).iif(a, b) fun T.eq(eq: T): Boolean = this == eq