Revert dataflow changes, extract actual iterator function

This commit is contained in:
Tamas Vajk
2022-04-28 10:46:46 +02:00
committed by Chris Smowton
parent 538e05995a
commit fbae0f5053
3 changed files with 26 additions and 9 deletions

View File

@@ -205,11 +205,6 @@ private predicate canContainBool(Type t) {
any(BooleanType b).(RefType).getASourceSupertype+() = t
}
private predicate isArray(Type t) {
t instanceof Array or
t.(RefType).getSourceDeclaration().hasQualifiedName("kotlin", "Array")
}
/**
* Holds if `t1` and `t2` are compatible, that is, whether data can flow from
* a node of type `t1` to a node of type `t2`.
@@ -226,9 +221,6 @@ predicate compatibleTypes(Type t1, Type t2) {
erasedHaveIntersection(e1, e2)
or
canContainBool(e1) and canContainBool(e2)
or
// Make java array and `kotlin.Array` types compatible.
isArray(e1) and isArray(e2)
)
}

View File

@@ -5,6 +5,9 @@ private import semmle.code.java.dataflow.ExternalFlow
private class KotlinStdLibSummaryCsv extends SummaryModelCsv {
override predicate row(string row) {
row = ["kotlin;Array;false;iterator;();;Argument[-1].ArrayElement;ReturnValue.Element;value"]
row =
[
"kotlin.jvm.internal;ArrayIteratorKt;false;iterator;(Object[]);;Argument[0].ArrayElement;ReturnValue.Element;value"
]
}
}