File tree Expand file tree Collapse file tree 3 files changed +24
-1
lines changed
lib/semmle/javascript/internal
test/library-tests/UnderlyingTypes Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -46,6 +46,9 @@ module NameResolution {
46
46
this instanceof Module
47
47
or
48
48
this instanceof NamespaceDefinition // `module {}` or `enum {}` statement
49
+ or
50
+ // A module wrapped in a promise. We model this as a module exporting the actual module in a property called `$$promise-content`.
51
+ this instanceof DynamicImportExpr
49
52
}
50
53
}
51
54
@@ -230,6 +233,19 @@ module NameResolution {
230
233
name = expr .getName ( ) and
231
234
node2 = expr
232
235
)
236
+ or
237
+ exists ( AwaitExpr await |
238
+ node1 = await .getOperand ( ) and
239
+ name = "$$promise-content" and
240
+ node2 = await
241
+ )
242
+ or
243
+ exists ( MethodCallExpr call |
244
+ call .getMethodName ( ) = "then" and
245
+ node1 = call .getReceiver ( ) and
246
+ name = "$$promise-content" and
247
+ node2 = call .getArgument ( 0 ) .( Function ) .getParameter ( 0 )
248
+ )
233
249
}
234
250
235
251
private signature module TypeResolutionInputSig {
@@ -306,6 +322,12 @@ module NameResolution {
306
322
)
307
323
or
308
324
storeToVariable ( result , name , mod .( Closure:: ClosureModule ) .getExportsVariable ( ) )
325
+ or
326
+ exists ( DynamicImportExpr imprt |
327
+ mod = imprt and
328
+ name = "$$promise-content" and
329
+ result = imprt .getImportedPathExpr ( )
330
+ )
309
331
}
310
332
311
333
/**
Original file line number Diff line number Diff line change 1
1
async function t1 ( ) {
2
2
const e = await import ( './dynamicImportLib' ) ;
3
- e . getRequest ( ) ; // $ MISSING: hasUnderlyingType='express'.Request
3
+ e . getRequest ( ) ; // $ hasUnderlyingType='express'.Request
4
4
}
Original file line number Diff line number Diff line change 15
15
| contextualTypes.ts:27:16:27:18 | req | 'express'.Request |
16
16
| contextualTypes.ts:34:20:34:22 | req | 'express'.Request |
17
17
| contextualTypes.ts:41:16:41:18 | req | 'express'.Request |
18
+ | dynamicImportUse.ts:3:5:3:18 | e.getRequest() | 'express'.Request |
18
19
| expressBulkExport.use.ts:3:13:3:15 | req | 'express'.Request |
19
20
| expressBulkExport.use.ts:6:13:6:15 | res | 'express'.Response |
20
21
| expressExportAssign.use.ts:3:13:3:15 | req | 'express'.Request |
You can’t perform that action at this time.
0 commit comments