From 5f09e183943730d493b1ceb83e9758bfe8b35bd1 Mon Sep 17 00:00:00 2001 From: Vyacheslav Gerasimov Date: Wed, 26 Apr 2017 22:42:56 +0300 Subject: [PATCH] Fix Android api issues reporting for generic collection method calls #KT-16712 Fixed --- idea/testData/android/lint/apiCheck.kt | 18 ++++++++++++++++++ .../tools/klint/detector/api/ClassContext.java | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/idea/testData/android/lint/apiCheck.kt b/idea/testData/android/lint/apiCheck.kt index 8b118472fa9..e6f3d75ef5b 100644 --- a/idea/testData/android/lint/apiCheck.kt +++ b/idea/testData/android/lint/apiCheck.kt @@ -458,4 +458,22 @@ object O: Activity() { fun test() { getDrawable(0) } +} + +fun testJava8() { + // Error, Api 24, Java8 + mutableListOf(1, 2, 3).removeIf { + true + } + + // Ok, Kotlin + mutableListOf(1, 2, 3).removeAll { + true + } + + // Error, Api 24, Java8 + mapOf(1 to 2).forEach { key, value -> key + value } + + // Ok, Kotlin + mapOf(1 to 2).forEach { (key, value) -> key + value } } \ No newline at end of file diff --git a/plugins/lint/lint-api/src/com/android/tools/klint/detector/api/ClassContext.java b/plugins/lint/lint-api/src/com/android/tools/klint/detector/api/ClassContext.java index c1b587aec3d..07759bd97dd 100644 --- a/plugins/lint/lint-api/src/com/android/tools/klint/detector/api/ClassContext.java +++ b/plugins/lint/lint-api/src/com/android/tools/klint/detector/api/ClassContext.java @@ -696,6 +696,11 @@ public class ClassContext extends Context { return fqcn; } + int index = fqcn.indexOf('<'); + if(index != -1) { + fqcn = fqcn.substring(0, index); + } + // If class name contains $, it's not an ambiguous inner class name. if (fqcn.indexOf('$') != -1) { return fqcn.replace('.', '/');