diff --git a/javascript/ql/src/semmle/javascript/TypeScript.qll b/javascript/ql/src/semmle/javascript/TypeScript.qll index d2e7408ea8b..e781127cb3b 100644 --- a/javascript/ql/src/semmle/javascript/TypeScript.qll +++ b/javascript/ql/src/semmle/javascript/TypeScript.qll @@ -686,6 +686,9 @@ class TypeExpr extends ExprOrType, @typeexpr { /** Holds if this is the `object` type. */ predicate isObjectKeyword() { none() } + /** Holds if this is the `unknown` type. */ + predicate isUnknownKeyword() { none() } + /** Gets this type expression, with any surrounding parentheses removed. */ override TypeExpr stripParens() { result = this @@ -725,6 +728,7 @@ private class KeywordTypeExpr extends @keywordtypeexpr, TypeExpr { override predicate isSymbol() { getName() = "symbol" } override predicate isUniqueSymbol() { getName() = "unique symbol" } override predicate isObjectKeyword() { getName() = "object" } + override predicate isUnknownKeyword() { getName() = "unknown" } } /** diff --git a/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/UnknownTypeExpr.expected b/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/UnknownTypeExpr.expected new file mode 100644 index 00000000000..5f5df1a3e36 --- /dev/null +++ b/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/UnknownTypeExpr.expected @@ -0,0 +1 @@ +| tst.ts:137:18:137:24 | unknown | diff --git a/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/UnknownTypeExpr.ql b/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/UnknownTypeExpr.ql new file mode 100644 index 00000000000..5472547df6b --- /dev/null +++ b/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/UnknownTypeExpr.ql @@ -0,0 +1,5 @@ +import javascript + +from TypeExpr type +where type.isUnknownKeyword() +select type diff --git a/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/tst.ts b/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/tst.ts index a211b716006..dbf0eb564e8 100644 --- a/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/tst.ts +++ b/javascript/ql/test/library-tests/TypeScript/TypeAnnotations/tst.ts @@ -134,3 +134,4 @@ let tupleWithOptionalElement: [number, string, number?]; let emptyTuple: []; let tupleWithRestElement: [number, ...string[]]; let tupleWithOptionalAndRestElements: [number, string?, ...number[]]; +let unknownType: unknown;