Skip to content

Commit c81a7c1

Browse files
authored
Merge pull request #22307 from matinzd/patch-1
JS: Add React Native Worklets "worklet" directive as a KnownDirective
2 parents 3719826 + 0611639 commit c81a7c1

4 files changed

Lines changed: 41 additions & 17 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
category: feature
3+
---
4+
5+
- Added support for recognizing the React Native Worklets `"worklet"` directive as a known directive.

javascript/ql/lib/semmle/javascript/Stmt.qll

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,21 @@ module Directive {
475475
class UseCacheDirective extends KnownDirective {
476476
UseCacheDirective() { this.getDirectiveText().regexpMatch("use cache(:.*)?") }
477477
}
478+
479+
/**
480+
* A React Native Worklets worklet directive.
481+
*
482+
* Example:
483+
*
484+
* ```
485+
* function myWorklet() {
486+
* "worklet";
487+
* }
488+
* ```
489+
*/
490+
class WorkletDirective extends KnownDirective {
491+
WorkletDirective() { this.getDirectiveText() = "worklet" }
492+
}
478493
}
479494

480495
/**
Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
| tst.js:1:1:1:13 | 'use strict'; | use strict |
22
| tst.js:2:1:2:10 | 'use asm'; | use asm |
33
| tst.js:3:1:3:9 | 'bundle'; | bundle |
4-
| tst.js:4:1:4:13 | 'use server'; | use server |
5-
| tst.js:5:1:5:13 | 'use client'; | use client |
6-
| tst.js:6:1:6:11 | 'use memo'; | use memo |
7-
| tst.js:7:1:7:14 | 'use no memo'; | use no memo |
8-
| tst.js:8:1:8:12 | 'use cache'; | use cache |
9-
| tst.js:9:1:9:20 | 'use cache: remote'; | use cache: remote |
10-
| tst.js:10:1:10:21 | 'use ca ... ivate'; | use cache: private |
11-
| tst.js:19:3:19:12 | 'use asm'; | use asm |
12-
| tst.js:20:3:20:11 | 'bundle'; | bundle |
13-
| tst.js:21:3:21:15 | 'use server'; | use server |
14-
| tst.js:22:3:22:15 | 'use client'; | use client |
15-
| tst.js:23:3:23:13 | 'use memo'; | use memo |
16-
| tst.js:24:3:24:16 | 'use no memo'; | use no memo |
17-
| tst.js:25:3:25:14 | 'use cache'; | use cache |
18-
| tst.js:26:3:26:22 | 'use cache: remote'; | use cache: remote |
19-
| tst.js:27:3:27:23 | 'use ca ... ivate'; | use cache: private |
20-
| tst.js:34:5:34:17 | 'use strict'; | use strict |
4+
| tst.js:4:1:4:10 | 'worklet'; | worklet |
5+
| tst.js:5:1:5:13 | 'use server'; | use server |
6+
| tst.js:6:1:6:13 | 'use client'; | use client |
7+
| tst.js:7:1:7:11 | 'use memo'; | use memo |
8+
| tst.js:8:1:8:14 | 'use no memo'; | use no memo |
9+
| tst.js:9:1:9:12 | 'use cache'; | use cache |
10+
| tst.js:10:1:10:20 | 'use cache: remote'; | use cache: remote |
11+
| tst.js:11:1:11:21 | 'use ca ... ivate'; | use cache: private |
12+
| tst.js:20:3:20:12 | 'use asm'; | use asm |
13+
| tst.js:21:3:21:11 | 'bundle'; | bundle |
14+
| tst.js:22:3:22:12 | 'worklet'; | worklet |
15+
| tst.js:23:3:23:15 | 'use server'; | use server |
16+
| tst.js:24:3:24:15 | 'use client'; | use client |
17+
| tst.js:25:3:25:13 | 'use memo'; | use memo |
18+
| tst.js:26:3:26:16 | 'use no memo'; | use no memo |
19+
| tst.js:27:3:27:14 | 'use cache'; | use cache |
20+
| tst.js:28:3:28:22 | 'use cache: remote'; | use cache: remote |
21+
| tst.js:29:3:29:23 | 'use ca ... ivate'; | use cache: private |
22+
| tst.js:36:5:36:17 | 'use strict'; | use strict |

javascript/ql/test/library-tests/Directives/tst.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict'; // this is a directive
22
'use asm'; // and so is this
33
'bundle';// and this
4+
'worklet';
45
'use server';
56
'use client';
67
'use memo';
@@ -18,6 +19,7 @@ function f() {
1819
'use\x20strict'; // this is a directive, though not a strict mode directive
1920
'use asm'; // and so is this
2021
'bundle';
22+
'worklet';
2123
'use server';
2224
'use client';
2325
'use memo';

0 commit comments

Comments
 (0)