From 036090be917f386cce33bb1c73bcc7fd7d75dffc Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 20 Apr 2017 14:07:50 +0300 Subject: [PATCH] Support intersection type in TypeUtils.contains(...) --- .../src/org/jetbrains/kotlin/types/TypeUtils.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java index f8527ac1daf..01c743bfe95 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/TypeUtils.java @@ -394,6 +394,16 @@ public class TypeUtils { && (contains(flexibleType.getLowerBound(), isSpecialType) || contains(flexibleType.getUpperBound(), isSpecialType))) { return true; } + + TypeConstructor typeConstructor = type.getConstructor(); + if (typeConstructor instanceof IntersectionTypeConstructor) { + IntersectionTypeConstructor intersectionTypeConstructor = (IntersectionTypeConstructor) typeConstructor; + for (KotlinType supertype : intersectionTypeConstructor.getSupertypes()) { + if (contains(supertype, isSpecialType)) return true; + } + return false; + } + for (TypeProjection projection : type.getArguments()) { if (!projection.isStarProjection() && contains(projection.getType(), isSpecialType)) return true; }