diff --git a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethod.kt b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethod.kt index b82842b6a61..9f8393b1c4b 100644 --- a/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethod.kt +++ b/detekt-rules-style/src/main/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethod.kt @@ -57,8 +57,11 @@ class ExplicitCollectionElementAccessMethod(config: Config = Config.empty) : Rul } } - private fun isIndexableGetter(expression: KtCallExpression): Boolean = - expression.calleeExpression?.text == "get" && expression.getFunctionDescriptor()?.isOperator == true + private fun isIndexableGetter(expression: KtCallExpression): Boolean { + if (expression.calleeExpression?.text != "get") return false + val descriptor = expression.getFunctionDescriptor() ?: return false + return descriptor.isOperator && descriptor.typeParameters.isEmpty() + } private fun isIndexableSetter(expression: KtCallExpression): Boolean = when (expression.calleeExpression?.text) { diff --git a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethodSpec.kt b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethodSpec.kt index ec19d779b21..b43e45f2c96 100644 --- a/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethodSpec.kt +++ b/detekt-rules-style/src/test/kotlin/io/gitlab/arturbosch/detekt/rules/style/ExplicitCollectionElementAccessMethodSpec.kt @@ -347,6 +347,19 @@ class ExplicitCollectionElementAccessMethodSpec(val env: KotlinCoreEnvironment) """ assertThat(subject.compileAndLintWithContext(env, code)).isEmpty() } + + @Test + fun `does not report custom get operator with type parameters`() { + val code = """ + class C { + operator fun get(key: String): List? = null + } + fun test(c: C) { + c.get("key") + } + """ + assertThat(subject.compileAndLintWithContext(env, code)).isEmpty() + } } @Nested