Skip to content

Commit e4d59c3

Browse files
authored
Merge pull request #1856 from asger-semmle/ts-base-types
Approved by xiemaisi
2 parents d092905 + 8737dbb commit e4d59c3

File tree

8 files changed

+27
-2
lines changed

8 files changed

+27
-2
lines changed

javascript/extractor/lib/typescript/src/type_table.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -974,8 +974,10 @@ export class TypeTable {
974974
if (superType == null) continue;
975975
let baseTypeSymbol = superType.symbol;
976976
if (baseTypeSymbol == null) continue;
977+
let baseId = this.getSymbolId(baseTypeSymbol);
978+
// Note: take care not to perform a recursive call between the two `push` calls.
977979
this.baseTypes.symbols.push(symbolId);
978-
this.baseTypes.baseTypeSymbols.push(this.getSymbolId(baseTypeSymbol));
980+
this.baseTypes.baseTypeSymbols.push(baseId);
979981
}
980982
}
981983
}

javascript/ql/src/semmle/javascript/CanonicalNames.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,9 @@ class CanonicalName extends @symbol {
210210
class TypeName extends CanonicalName {
211211
TypeName() {
212212
exists(TypeReference ref | type_symbol(ref, this)) or
213-
exists(TypeDefinition def | ast_node_symbol(def, this))
213+
exists(TypeDefinition def | ast_node_symbol(def, this)) or
214+
base_type_names(_, this) or
215+
base_type_names(this, _)
214216
}
215217

216218
/**
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
| B in module 'mylib' | A in module 'mylib' |
2+
| C in module 'mylib' | B in module 'mylib' |
3+
| D in module 'mylib' | C in module 'mylib' |
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import javascript
2+
3+
from TypeName tn
4+
where tn.hasQualifiedName("mylib", _)
5+
select tn, tn.getABaseTypeName()

javascript/ql/test/library-tests/TypeScript/ExternalBaseTypes/node_modules/@types/mylib/index.d.ts

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
semmle-extractor-options:--exclude node_modules/**
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"compilerOptions": {
3+
"baseUrl": "./"
4+
}
5+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { D } from "mylib";
2+
3+
export var foo: D = null;

0 commit comments

Comments
 (0)