File tree Expand file tree Collapse file tree 4 files changed +19
-0
lines changed
lib/semmle/javascript/internal/paths
test/library-tests/PathResolution Expand file tree Collapse file tree 4 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -175,6 +175,15 @@ module ResolveExpr<exprSig/1 shouldResolveExpr> {
175175 )
176176 }
177177
178+ pragma [ nomagic]
179+ private Container getJSDocProvidedModule ( string moduleName ) {
180+ exists ( JSDocTag tag |
181+ tag .getTitle ( ) = "providesModule" and
182+ tag .getDescription ( ) .trim ( ) = moduleName and
183+ tag .getFile ( ) = result
184+ )
185+ }
186+
178187 /**
179188 * Holds if `expr` should be resolved as `path` relative to `base`.
180189 */
@@ -200,6 +209,9 @@ module ResolveExpr<exprSig/1 shouldResolveExpr> {
200209 path = expr .getValue ( ) .suffix ( packageName .length ( ) ) .regexpReplaceAll ( "^[/\\\\]" , "" ) and
201210 base = pkg .getFolder ( )
202211 )
212+ or
213+ base = getJSDocProvidedModule ( expr .getValue ( ) ) and
214+ path = ""
203215 }
204216
205217 private module ResolverConfig implements Folder:: ResolveSig {
Original file line number Diff line number Diff line change 1+ /**
2+ * @providesModule jsdoc-provided-module/foo/bar/baz
3+ */
4+
5+ export const x = 1 ;
Original file line number Diff line number Diff line change 1+ import 'jsdoc-provided-module/foo/bar/baz' ; // $ importTarget=JSDocProvide/lib.js
Original file line number Diff line number Diff line change 6767| Extended/src/main.ts:24:1:24:17 | import "@/index"; | Extended/lib/index.ts |
6868| Extended/src/main.ts:25:1:25:20 | import "@/index.ts"; | Extended/lib/index.ts |
6969| Extended/src/main.ts:26:1:26:20 | import "@/index.js"; | Extended/lib/index.ts |
70+ | JSDocProvide/main.js:1:1:1:43 | import ... r/baz'; | JSDocProvide/lib.js |
7071| NoBaseUrl/src/main.ts:2:1:2:21 | import ... /file"; | NoBaseUrl/lib/file.ts |
7172| NoBaseUrl/src/main.ts:3:1:3:24 | import ... le.ts"; | NoBaseUrl/lib/file.ts |
7273| NoBaseUrl/src/main.ts:4:1:4:24 | import ... le.js"; | NoBaseUrl/lib/file.ts |
You can’t perform that action at this time.
0 commit comments