K2: fix/universalize logic to determine that member is from Java

This commit is contained in:
Mikhail Glukhikh
2022-11-10 15:12:04 +01:00
committed by Space Team
parent d35dedcb72
commit 4dc7b6dddc
15 changed files with 109 additions and 17 deletions
@@ -0,0 +1,11 @@
FILE: test.kt
public final fun foo(): R|kotlin/Unit| {
lval externalsMap: R|kotlin/collections/MutableMap<java/io/File, kotlin/String?>| = R|kotlin/collections/mutableMapOf|<R|java/io/File|, R|kotlin/String?|>()
local final fun test(file: R|java/io/File|): R|kotlin/Unit| {
lval base: R|java/io/File!| = R|your/ContainerUtil.find|<R|java/io/File!|>(R|<local>/externalsMap|.R|SubstitutionOverride<kotlin/collections/MutableMap.keys: R|kotlin/collections/MutableSet<java/io/File>|>|, <L> = find@fun <anonymous>(it: R|java/io/File!|): R|kotlin/Boolean| <inline=NoInline> {
^ R|my/FileUtil.isAncestor|(R|<local>/it|, R|<local>/file|, Boolean(false))
}
)
}
}
@@ -0,0 +1,53 @@
// FILE: their/Condition.java
package their;
public interface Condition<T> {
boolean value (T t);
}
// FILE: your/ContainerUtil.java
package your;
import their.Condition;
public final class ContainerUtil {
public static <T> T find(Iterable<? extends T> iterable, Condition<? super T> condition) {
return true;
}
public static <T> T find(Iterable<? extends T> iterable, T equalTo) {
return true;
}
}
// FILE: my/FileUtil.java
package my;
import java.io.File;
public final class FileUtil {
public static boolean isAncestor(File ancestor, File file, boolean strict) {
return true;
}
public static boolean isAncestor(String ancestor, String file, boolean strict) {
return true;
}
}
// FILE: test.kt
import java.io.File
import my.FileUtil.*
import your.ContainerUtil.find
fun foo() {
val externalsMap = mutableMapOf<File, String?>()
fun test(file: File) {
val base = find(externalsMap.keys) { isAncestor(it, file, false) }
}
}