Skip to content

Commit 2118638

Browse files
committed
JS: Fix handling of default-import used as a type
1 parent 9f52f25 commit 2118638

3 files changed

Lines changed: 5 additions & 2 deletions

File tree

javascript/ql/lib/semmle/javascript/ApiGraphs.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,11 +644,13 @@ module API {
644644
/** Gets a node corresponding to an import of module `m` without taking into account types from models. */
645645
Node getAModuleImportRaw(string m) {
646646
result = Impl::MkModuleImport(m) or
647-
result = Impl::MkModuleImport(m).(Node).getMember("default")
647+
result = Impl::MkModuleImport(m).(Node).getMember("default") or
648+
result = Impl::MkTypeUse(m, "")
648649
}
649650

650651
/** Gets a node whose type has the given qualified name, not including types from models. */
651652
Node getANodeOfTypeRaw(string moduleName, string exportedName) {
653+
exportedName != "" and
652654
result = Impl::MkTypeUse(moduleName, exportedName).(Node).getInstance()
653655
or
654656
exportedName = "" and

javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ API::Node getExtraNodeFromType(string type) {
138138
parseRelevantTypeString(type, package, qualifiedName)
139139
|
140140
qualifiedName = "" and
141-
result = [API::moduleImport(package), API::moduleExport(package)]
141+
result = [API::Internal::getAModuleImportRaw(package), API::moduleExport(package)]
142142
or
143143
// Access instance of a type based on type annotations
144144
result = API::Internal::getANodeOfTypeRaw(package, qualifiedName)

javascript/ql/test/library-tests/frameworks/SQL/SqlString.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
| sequelize2.js:12:17:15:1 | {\\n que ... [123]\\n} |
4848
| sequelize2.js:13:10:13:20 | 'SELECT $1' |
4949
| sequelize2.js:17:31:17:41 | '123 + 345' |
50+
| sequelize-types.ts:7:24:7:35 | 'SELECT 123' |
5051
| sequelize.js:8:17:8:118 | 'SELECT ... Y name' |
5152
| sequelizeImport.js:3:17:3:118 | 'SELECT ... Y name' |
5253
| spanner2.js:4:19:4:59 | "not SQ ... anyway" |

0 commit comments

Comments
 (0)