Skip to content

Commit cb82cdf

Browse files
committed
add support for the synchronous-promise library
1 parent 5cb3c2c commit cb82cdf

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ lgtm,codescanning
99
[native-promise-only](https://npmjs.com/package/native-promise-only),
1010
[when](https://npmjs.com/package/when),
1111
[pinkie-promise](https://npmjs.com/package/pinkie-promise),
12-
[pinkie](https://npmjs.com/package/pinkie)
12+
[pinkie](https://npmjs.com/package/pinkie),
13+
[synchronous-promise](https://npmjs.com/package/synchronous-promise)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ private DataFlow::SourceNode getAPromiseObject() {
8787
result = DataFlow::moduleImport("pinkie-promise")
8888
or
8989
result = DataFlow::moduleImport("pinkie")
90+
or
91+
result = DataFlow::moduleMember("synchronous-promise", "SynchronousPromise")
9092
}
9193

9294
/**

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,10 @@
135135
new Promise(function (resolve, reject) {
136136
resolve(data);
137137
});
138-
})();
138+
})();
139+
140+
(function() {
141+
import { SynchronousPromise } from 'synchronous-promise';
142+
// is technically not a promise, but behaves like one.
143+
var promise = SynchronousPromise.resolve(source);
144+
})();

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ test_ResolvedPromiseDefinition
4343
| promises.js:114:3:114:25 | Promise ... source) | promises.js:114:19:114:24 | source |
4444
| promises.js:119:3:119:25 | Promise ... source) | promises.js:119:19:119:24 | source |
4545
| promises.js:125:20:125:39 | when.resolve(source) | promises.js:125:33:125:38 | source |
46+
| promises.js:143:17:143:50 | Synchro ... source) | promises.js:143:44:143:49 | source |
4647
test_PromiseDefinition_getARejectHandler
4748
| flow.js:26:2:26:49 | new Pro ... ource)) | flow.js:26:69:26:80 | y => sink(y) |
4849
| flow.js:32:2:32:49 | new Pro ... ource)) | flow.js:32:57:32:68 | x => sink(x) |
@@ -442,3 +443,5 @@ typetrack
442443
| promises.js:125:20:125:39 | when.resolve(source) | promises.js:125:33:125:38 | source | store $PromiseResolveField$ |
443444
| promises.js:135:3:137:4 | new Pro ... );\\n }) | promises.js:136:13:136:16 | data | copy $PromiseResolveField$ |
444445
| promises.js:135:3:137:4 | new Pro ... );\\n }) | promises.js:136:13:136:16 | data | store $PromiseResolveField$ |
446+
| promises.js:143:17:143:50 | Synchro ... source) | promises.js:143:44:143:49 | source | copy $PromiseResolveField$ |
447+
| promises.js:143:17:143:50 | Synchro ... source) | promises.js:143:44:143:49 | source | store $PromiseResolveField$ |

0 commit comments

Comments
 (0)