@@ -3,7 +3,6 @@ private import semmle.javascript.TSConfig
33private import semmle.javascript.internal.paths.PackageJsonEx
44private import semmle.javascript.internal.paths.JSPaths
55
6- final private class FinalPathExpr = PathExpr ;
76File getFileFromFolderImport ( Folder folder ) {
87 result = folder .getJavaScriptFileOrTypings ( "index" )
98 or
@@ -15,10 +14,16 @@ File getFileFromFolderImport(Folder folder) {
1514 )
1615}
1716
17+ private signature predicate exprSig ( Expr e ) ;
1818
19- private class RelevantPathExpr extends FinalPathExpr {
20- pragma [ nomagic]
21- RelevantPathExpr ( ) { this = any ( Import imprt ) .getImportedPath ( ) }
19+ module ResolveExpr< exprSig / 1 shouldResolveExpr> {
20+
21+ private final class FinalExpr = Expr ;
22+
23+ private class RelevantPathExpr extends FinalExpr {
24+ RelevantPathExpr ( ) { shouldResolveExpr ( this ) }
25+
26+ string getValue ( ) { result = this .getStringValue ( ) }
2227}
2328
2429/**
@@ -65,7 +70,7 @@ private string getPackagePrefixFromPathExpr(RelevantPathExpr expr) {
6570private Variable dirname ( ) { result .getName ( ) = "__dirname" }
6671
6772/** Holds if `add` is a relevant path expression of form `__dirname + expr`. */
68- private predicate prefixedByDirname ( PathExpr expr ) {
73+ private predicate prefixedByDirname ( Expr expr ) {
6974 expr = dirname ( ) .getAnAccess ( )
7075 or
7176 prefixedByDirname ( expr .( AddExpr ) .getLeftOperand ( ) )
@@ -175,7 +180,7 @@ private Container resolvePathExpr1(RelevantPathExpr expr) {
175180 )
176181}
177182
178- File resolvePathExpr ( PathExpr expr ) {
183+ File resolveExpr ( RelevantPathExpr expr ) {
179184 result = resolvePathExpr1 ( expr )
180185 or
181186 result = getFileFromFolderImport ( resolvePathExpr1 ( expr ) )
@@ -206,7 +211,7 @@ module Debug {
206211
207212 query Container resolvePathExpr1_ ( PathExprToDebug expr ) { result = resolvePathExpr1 ( expr ) }
208213
209- query File resolvePathExpr_ ( PathExprToDebug expr ) { result = resolvePathExpr ( expr ) }
214+ query File resolveExpr_ ( PathExprToDebug expr ) { result = resolveExpr ( expr ) }
210215
211216 // Some predicates that are usually small enough that they don't need restriction
212217 query File getPackageMainFile ( PackageJsonEx pkg ) { result = pkg .getMainFile ( ) }
@@ -217,3 +222,4 @@ module Debug {
217222
218223 query predicate getFileFromFolderImport_ = getFileFromFolderImport / 1 ;
219224}
225+ }
0 commit comments