mirror of
https://github.com/github/codeql.git
synced 2025-12-20 10:46:30 +01:00
TS: Support readonly type expressions
This commit is contained in:
@@ -970,6 +970,14 @@ class RestTypeExpr extends @resttypeexpr, TypeExpr {
|
||||
TypeExpr getElementType() { result = getArrayType().(ArrayTypeExpr).getElementType() }
|
||||
}
|
||||
|
||||
/**
|
||||
* A type of form `readonly T`, such as `readonly number[]`.
|
||||
*/
|
||||
class ReadonlyTypeExpr extends @readonlytypeexpr, TypeExpr {
|
||||
/** Gets the type `T` in `readonly T`. */
|
||||
TypeExpr getElementType() { result = getChildTypeExpr(0) }
|
||||
}
|
||||
|
||||
/**
|
||||
* A possibly qualified name that refers to a variable from inside a type.
|
||||
*
|
||||
|
||||
@@ -573,6 +573,7 @@ case @typeexpr.kind of
|
||||
| 33 = @optionaltypeexpr
|
||||
| 34 = @resttypeexpr
|
||||
| 35 = @bigintliteraltypeexpr
|
||||
| 36 = @readonlytypeexpr
|
||||
;
|
||||
|
||||
@typeref = @typeaccess | @typedecl;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
| (T \| ConcatArray<T>)[] | `T \| ConcatArray<T>` |
|
||||
| (number \| ConcatArray<number>)[] | `number \| ConcatArray<number>` |
|
||||
| (number[] \| ConcatArray<number[]>)[] | `number[] \| ConcatArray<number[]>` |
|
||||
| (string \| number \| ConcatArray<string \| number>)[] | `string \| number \| ConcatArray<string \| number>` |
|
||||
| (string \| number)[] | `string \| number` |
|
||||
| ConcatArray<T>[] | `ConcatArray<T>` |
|
||||
| ConcatArray<number>[] | `ConcatArray<number>` |
|
||||
| ConcatArray<number[]>[] | `ConcatArray<number[]>` |
|
||||
| ConcatArray<string \| number>[] | `ConcatArray<string \| number>` |
|
||||
| S[] | `S` |
|
||||
| T[] | `T` |
|
||||
@@ -11,6 +13,8 @@
|
||||
| [number, string] | `string \| number` |
|
||||
| any[] | `any` |
|
||||
| number[] | `number` |
|
||||
| number[][] | `number[]` |
|
||||
| readonly T[] | `T` |
|
||||
| readonly number[] | `number` |
|
||||
| readonly number[][] | `number[]` |
|
||||
| string[] | `string` |
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
| (T \| ConcatArray<T>)[] | T \| ConcatArray<T> |
|
||||
| (number \| ConcatArray<number>)[] | number \| ConcatArray<number> |
|
||||
| (number[] \| ConcatArray<number[]>)[] | number[] \| ConcatArray<number[]> |
|
||||
| (string \| number \| ConcatArray<string \| number>)[] | string \| number \| ConcatArray<string \| number> |
|
||||
| (string \| number)[] | string \| number |
|
||||
| ConcatArray<T>[] | ConcatArray<T> |
|
||||
| ConcatArray<number>[] | ConcatArray<number> |
|
||||
| ConcatArray<number[]>[] | ConcatArray<number[]> |
|
||||
| ConcatArray<string \| number>[] | ConcatArray<string \| number> |
|
||||
| NumberIndexable | object |
|
||||
| S[] | S |
|
||||
@@ -12,7 +14,9 @@
|
||||
| [number, string] | string \| number |
|
||||
| any[] | any |
|
||||
| number[] | number |
|
||||
| number[][] | number[] |
|
||||
| readonly T[] | T |
|
||||
| readonly number[] | number |
|
||||
| readonly number[][] | number[] |
|
||||
| string | string |
|
||||
| string[] | string |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
let plain: number[];
|
||||
let radonly: ReadonlyArray<number>;
|
||||
let readonly: ReadonlyArray<number>;
|
||||
let tuple: [number, string];
|
||||
|
||||
interface NumberIndexable {
|
||||
@@ -14,3 +14,6 @@ interface StringIndexable {
|
||||
|
||||
let numberIndexable: NumberIndexable;
|
||||
let stringIndexable: StringIndexable;
|
||||
|
||||
let readonlySyntax: readonly number[];
|
||||
let readonlySyntax2: readonly number[][];
|
||||
|
||||
Reference in New Issue
Block a user