mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
JS: Update immutable.js test to clarify why it stopped working
The Immutable model uses the 'd' and 'f' properties to model Map content, but the test doesn't actually mention those properties, so they were missing from the PropertyName class. The flow was previously found spuriously by the regular Map model, which also adds flow through the get/set calls. This flow is however no longer found since it relied on a step from post-update back to getALocalSource which is no longer present.
This commit is contained in:
@@ -14,7 +14,7 @@ sink(map2.get("b")); // OK - but still flagged [INCONSISTENCY]
|
||||
|
||||
const map3 = map2.set("d", source("d"));
|
||||
sink(map1.get("d")); // OK
|
||||
sink(map3.get("d")); // NOT OK [INCONSISTENCY]
|
||||
sink(map3.get("d")); // NOT OK
|
||||
|
||||
|
||||
sink(map3.toJS()["a"]); // NOT OK
|
||||
@@ -34,7 +34,7 @@ List(["safe"]).push(source()).forEach(x => sink(x)); // NOT OK
|
||||
|
||||
|
||||
const map4 = OrderedMap({}).set("f", source());
|
||||
sink(map4.get("f")); // NOT OK [INCONSISTENCY]
|
||||
sink(map4.get("f")); // NOT OK
|
||||
|
||||
const map5 = Record({a: source(), b: null, c: null})({b: source()});
|
||||
sink(map5.get("a")); // NOT OK
|
||||
@@ -55,4 +55,7 @@ Set.of(source()).filter(x => true).toList().forEach(x => sink(x)); // NOT OK
|
||||
|
||||
Set([source()]).filter(x => true).toList().forEach(x => sink(x)); // NOT OK
|
||||
|
||||
OrderedSet([source()]).filter(x => true).toList().forEach(x => sink(x)); // NOT OK
|
||||
OrderedSet([source()]).filter(x => true).toList().forEach(x => sink(x)); // NOT OK
|
||||
|
||||
x.d; // ensure 'd' property exists
|
||||
x.f; // ensure 'f' property exists
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
legacyDataFlowDifference
|
||||
| immutable.js:15:28:15:38 | source("d") | immutable.js:17:6:17:18 | map3.get("d") | only flow with OLD data flow library |
|
||||
| immutable.js:36:38:36:45 | source() | immutable.js:37:6:37:18 | map4.get("f") | only flow with OLD data flow library |
|
||||
dataFlow
|
||||
| immutable.js:1:16:1:26 | source("a") | immutable.js:2:6:2:13 | obj["a"] |
|
||||
| immutable.js:1:16:1:26 | source("a") | immutable.js:11:6:11:18 | map1.get("a") |
|
||||
@@ -8,11 +6,13 @@ dataFlow
|
||||
| immutable.js:1:16:1:26 | source("a") | immutable.js:20:6:20:21 | map3.toJS()["a"] |
|
||||
| immutable.js:1:32:1:43 | source("b1") | immutable.js:8:6:8:18 | map1.get("b") |
|
||||
| immutable.js:1:32:1:43 | source("b1") | immutable.js:13:6:13:18 | map2.get("b") |
|
||||
| immutable.js:15:28:15:38 | source("d") | immutable.js:17:6:17:18 | map3.get("d") |
|
||||
| immutable.js:22:19:22:29 | source("e") | immutable.js:22:6:22:40 | fromJS( ... et("e") |
|
||||
| immutable.js:24:18:24:25 | source() | immutable.js:25:22:25:22 | x |
|
||||
| immutable.js:29:25:29:32 | source() | immutable.js:29:53:29:53 | x |
|
||||
| immutable.js:31:7:31:14 | source() | immutable.js:31:75:31:75 | x |
|
||||
| immutable.js:33:21:33:28 | source() | immutable.js:33:49:33:49 | x |
|
||||
| immutable.js:36:38:36:45 | source() | immutable.js:37:6:37:18 | map4.get("f") |
|
||||
| immutable.js:39:25:39:32 | source() | immutable.js:40:6:40:18 | map5.get("a") |
|
||||
| immutable.js:39:58:39:65 | source() | immutable.js:41:6:41:18 | map5.get("b") |
|
||||
| immutable.js:44:40:44:47 | source() | immutable.js:45:6:45:18 | map6.get("a") |
|
||||
|
||||
Reference in New Issue
Block a user