diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index 6f72224dd55..d1b3807da64 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -376,8 +376,16 @@ public class JetTypeMapper { } } + final TypeConstructor constructor = jetType.getConstructor(); + if (constructor instanceof IntersectionTypeConstructor) { + jetType = CommonSupertypes.commonSupertype(new ArrayList(constructor.getSupertypes())); + } DeclarationDescriptor descriptor = jetType.getConstructor().getDeclarationDescriptor(); + if (descriptor == null) { + throw new UnsupportedOperationException("no descriptor for type constructor of " + jetType); + } + if (ErrorUtils.isError(descriptor)) { if (classBuilderMode != ClassBuilderMode.SIGNATURES) { throw new IllegalStateException("error types are not allowed when classBuilderMode = " + classBuilderMode);