Skip to content

Commit 4f4a820

Browse files
committed
Fix startup crash when redefining global Array with @nolib
1 parent 3472548 commit 4f4a820

6 files changed

Lines changed: 52 additions & 1 deletion

File tree

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17746,7 +17746,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1774617746
const readonly = isReadonlyTypeOperator(node.parent);
1774717747
const elementType = getArrayElementTypeNode(node);
1774817748
if (elementType) {
17749-
return readonly ? globalReadonlyArrayType : globalArrayType;
17749+
return (readonly ? globalReadonlyArrayType : globalArrayType) || emptyGenericType;
1775017750
}
1775117751
const elementFlags = map((node as TupleTypeNode).elements, getTupleElementFlags);
1775217752
return getTupleTargetType(elementFlags, readonly, map((node as TupleTypeNode).elements, memberIfLabeledElementDeclaration));
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
error TS2317: Global type 'Array' must have 1 type parameter(s).
2+
error TS2318: Cannot find global type 'Boolean'.
3+
error TS2318: Cannot find global type 'CallableFunction'.
4+
error TS2318: Cannot find global type 'Function'.
5+
error TS2318: Cannot find global type 'IArguments'.
6+
error TS2318: Cannot find global type 'NewableFunction'.
7+
error TS2318: Cannot find global type 'Number'.
8+
error TS2318: Cannot find global type 'Object'.
9+
error TS2318: Cannot find global type 'RegExp'.
10+
error TS2318: Cannot find global type 'String'.
11+
12+
13+
!!! error TS2317: Global type 'Array' must have 1 type parameter(s).
14+
!!! error TS2318: Cannot find global type 'Boolean'.
15+
!!! error TS2318: Cannot find global type 'CallableFunction'.
16+
!!! error TS2318: Cannot find global type 'Function'.
17+
!!! error TS2318: Cannot find global type 'IArguments'.
18+
!!! error TS2318: Cannot find global type 'NewableFunction'.
19+
!!! error TS2318: Cannot find global type 'Number'.
20+
!!! error TS2318: Cannot find global type 'Object'.
21+
!!! error TS2318: Cannot find global type 'RegExp'.
22+
!!! error TS2318: Cannot find global type 'String'.
23+
==== bug57009.ts (0 errors) ====
24+
type Array<T> = T[];
25+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [tests/cases/compiler/bug57009.ts] ////
2+
3+
//// [bug57009.ts]
4+
type Array<T> = T[];
5+
6+
7+
//// [bug57009.js]
8+
"use strict";
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [tests/cases/compiler/bug57009.ts] ////
2+
3+
=== bug57009.ts ===
4+
type Array<T> = T[];
5+
>Array : Symbol(Array, Decl(bug57009.ts, 0, 0))
6+
>T : Symbol(T, Decl(bug57009.ts, 0, 11))
7+
>T : Symbol(T, Decl(bug57009.ts, 0, 11))
8+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//// [tests/cases/compiler/bug57009.ts] ////
2+
3+
=== bug57009.ts ===
4+
type Array<T> = T[];
5+
>Array : {}
6+
> : ^^
7+

tests/cases/compiler/bug57009.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// @noLib: true
2+
3+
type Array<T> = T[];

0 commit comments

Comments
 (0)