From 0efcad51e9f9c4dff52a8a5a714c7e0669e91cc3 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Mon, 23 Oct 2023 22:18:04 +0200 Subject: [PATCH] [FIR] Add a comment to `isSubtypeOfClass` that explains what this method does And what the difference is between `isSubtypeOf` and `isSubtypeOf` --- .../jetbrains/kotlin/types/AbstractTypeChecker.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt index 9f1bde00f4f..7bc3bfb5331 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/types/AbstractTypeChecker.kt @@ -205,6 +205,19 @@ object AbstractTypeChecker { return isSubtypeOf(context.newTypeCheckerState(true, stubTypesEqualToAnything), subType, superType) } + /** + * It matches class types but ignores their type parameters + * + * Consider the following example: + * + * ``` + * abstract class Foo + * class FooBar : Foo() + * ``` + * + * In this case `isSubtypeOfClass` returns `true` for `FooBar` and `Foo` input arguments + * But `isSubtypeOf` returns `false` for the same input arguments + */ fun isSubtypeOfClass( state: TypeCheckerState, typeConstructor: TypeConstructorMarker,