Skip to content

Commit ebde901

Browse files
committed
add support for the rsvp and es6-promise polyfill
1 parent d7a47e8 commit ebde901

File tree

5 files changed

+20
-1
lines changed

5 files changed

+20
-1
lines changed

javascript/change-notes/2021-06-18-promises.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@ lgtm,codescanning
33
Affected packages are
44
[kew](https://npmjs.com/package/kew),
55
[promise](https://npmjs.com/package/promise),
6-
[promise-polyfill](https://npmjs.com/package/promise-polyfill)
6+
[promise-polyfill](https://npmjs.com/package/promise-polyfill),
7+
[rsvp](https://npmjs.com/package/rsvp),
8+
[es6-promise](https://npmjs.com/package/es6-promise)

javascript/ql/src/semmle/javascript/Promises.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ private DataFlow::SourceNode getAPromiseObject() {
7777
result = DataFlow::moduleMember(["promise-polyfill", "promise-polyfill/src/polyfill"], "default")
7878
or
7979
result = DataFlow::moduleImport(["promise-polyfill", "promise-polyfill/src/polyfill"])
80+
or
81+
result = DataFlow::moduleMember(["es6-promise", "rsvp"], "Promise")
8082
}
8183

8284
/**

javascript/ql/test/library-tests/Promises/AdditionalPromises.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,4 @@
8080
| promises.js:72:5:72:41 | new Pro ... ource)) |
8181
| promises.js:79:19:79:41 | Promise ... source) |
8282
| promises.js:88:17:90:4 | Q.Promi ... );\\n }) |
83+
| promises.js:112:17:112:62 | new RSV ... ct) {}) |

javascript/ql/test/library-tests/Promises/promises.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,10 @@
106106
PromiseA.resolve(source);
107107
PromiseB.resolve(source);
108108
})();
109+
110+
(function() {
111+
var RSVP = require('rsvp');
112+
var promise = new RSVP.Promise(function(resolve, reject) {});
113+
var Promise = require('es6-promise').Promise;
114+
Promise.resolve(source);
115+
})();

javascript/ql/test/library-tests/Promises/tests.expected

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ test_ResolvedPromiseDefinition
4040
| promises.js:100:3:100:26 | Promise ... source) | promises.js:100:20:100:25 | source |
4141
| promises.js:106:3:106:26 | Promise ... source) | promises.js:106:20:106:25 | source |
4242
| promises.js:107:3:107:26 | Promise ... source) | promises.js:107:20:107:25 | source |
43+
| promises.js:114:3:114:25 | Promise ... source) | promises.js:114:19:114:24 | source |
4344
test_PromiseDefinition_getARejectHandler
4445
| flow.js:26:2:26:49 | new Pro ... ource)) | flow.js:26:69:26:80 | y => sink(y) |
4546
| flow.js:32:2:32:49 | new Pro ... ource)) | flow.js:32:57:32:68 | x => sink(x) |
@@ -87,6 +88,7 @@ test_PromiseDefinition_getExecutor
8788
| promises.js:33:19:35:6 | new Pro ... \\n }) | promises.js:33:31:35:5 | functio ... ;\\n } |
8889
| promises.js:43:19:45:6 | Q.Promi ... \\n }) | promises.js:43:29:45:5 | functio ... ;\\n } |
8990
| promises.js:88:17:90:4 | Q.Promi ... );\\n }) | promises.js:88:27:90:3 | functio ... e);\\n } |
91+
| promises.js:112:17:112:62 | new RSV ... ct) {}) | promises.js:112:34:112:61 | functio ... ect) {} |
9092
test_PromiseDefinition_getAFinallyHandler
9193
| flow.js:105:2:105:48 | new Pro ... "BLA")) | flow.js:105:58:105:76 | x => {throw source} |
9294
| flow.js:109:2:109:48 | new Pro ... "BLA")) | flow.js:109:58:109:70 | x => rejected |
@@ -123,6 +125,7 @@ test_PromiseDefinition
123125
| promises.js:33:19:35:6 | new Pro ... \\n }) |
124126
| promises.js:43:19:45:6 | Q.Promi ... \\n }) |
125127
| promises.js:88:17:90:4 | Q.Promi ... );\\n }) |
128+
| promises.js:112:17:112:62 | new RSV ... ct) {}) |
126129
test_PromiseDefinition_getAResolveHandler
127130
| flow.js:24:2:24:49 | new Pro ... ource)) | flow.js:24:56:24:67 | x => sink(x) |
128131
| flow.js:26:2:26:49 | new Pro ... ource)) | flow.js:26:56:26:66 | x => foo(x) |
@@ -172,6 +175,7 @@ test_PromiseDefinition_getRejectParameter
172175
| promises.js:33:19:35:6 | new Pro ... \\n }) | promises.js:33:50:33:55 | reject |
173176
| promises.js:43:19:45:6 | Q.Promi ... \\n }) | promises.js:43:48:43:53 | reject |
174177
| promises.js:88:17:90:4 | Q.Promi ... );\\n }) | promises.js:88:46:88:51 | reject |
178+
| promises.js:112:17:112:62 | new RSV ... ct) {}) | promises.js:112:52:112:57 | reject |
175179
test_PromiseDefinition_getResolveParameter
176180
| flow.js:7:11:7:59 | new Pro ... ource)) | flow.js:7:24:7:30 | resolve |
177181
| flow.js:10:11:10:58 | new Pro ... ource)) | flow.js:10:24:10:30 | resolve |
@@ -203,6 +207,7 @@ test_PromiseDefinition_getResolveParameter
203207
| promises.js:33:19:35:6 | new Pro ... \\n }) | promises.js:33:41:33:47 | resolve |
204208
| promises.js:43:19:45:6 | Q.Promi ... \\n }) | promises.js:43:39:43:45 | resolve |
205209
| promises.js:88:17:90:4 | Q.Promi ... );\\n }) | promises.js:88:37:88:43 | resolve |
210+
| promises.js:112:17:112:62 | new RSV ... ct) {}) | promises.js:112:43:112:49 | resolve |
206211
test_PromiseDefinition_getACatchHandler
207212
| flow.js:32:2:32:49 | new Pro ... ource)) | flow.js:32:57:32:68 | x => sink(x) |
208213
| flow.js:48:2:48:36 | new Pro ... urce }) | flow.js:48:44:48:55 | x => sink(x) |
@@ -419,3 +424,5 @@ typetrack
419424
| promises.js:106:3:106:26 | Promise ... source) | promises.js:106:20:106:25 | source | store $PromiseResolveField$ |
420425
| promises.js:107:3:107:26 | Promise ... source) | promises.js:107:20:107:25 | source | copy $PromiseResolveField$ |
421426
| promises.js:107:3:107:26 | Promise ... source) | promises.js:107:20:107:25 | source | store $PromiseResolveField$ |
427+
| promises.js:114:3:114:25 | Promise ... source) | promises.js:114:19:114:24 | source | copy $PromiseResolveField$ |
428+
| promises.js:114:3:114:25 | Promise ... source) | promises.js:114:19:114:24 | source | store $PromiseResolveField$ |

0 commit comments

Comments
 (0)