From f284821088a74991f44bad75566a019fee866a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=96=87=E7=92=90?= Date: Wed, 25 Jul 2018 18:47:48 +0800 Subject: [PATCH] fix compiler crash --- src/compiler/transformers/ts.ts | 2 +- tests/baselines/reference/constEnum4.js | 13 +++++++++++++ tests/baselines/reference/constEnum4.symbols | 13 +++++++++++++ tests/baselines/reference/constEnum4.types | 17 +++++++++++++++++ .../cases/conformance/constEnums/constEnum4.ts | 6 ++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/constEnum4.js create mode 100644 tests/baselines/reference/constEnum4.symbols create mode 100644 tests/baselines/reference/constEnum4.types create mode 100644 tests/cases/conformance/constEnums/constEnum4.ts diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index bf4ae5ce7d33e..6d4875cd5a575 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -2621,7 +2621,7 @@ namespace ts { */ function visitEnumDeclaration(node: EnumDeclaration): VisitResult { if (!shouldEmitEnumDeclaration(node)) { - return undefined; + return createNotEmittedStatement(node); } const statements: Statement[] = []; diff --git a/tests/baselines/reference/constEnum4.js b/tests/baselines/reference/constEnum4.js new file mode 100644 index 0000000000000..dc7c4b0e593ec --- /dev/null +++ b/tests/baselines/reference/constEnum4.js @@ -0,0 +1,13 @@ +//// [constEnum4.ts] +if (1) + const enum A { } +else if (2) + const enum B { } +else + const enum C { } + + +//// [constEnum4.js] +if (1) +else if (2) +else diff --git a/tests/baselines/reference/constEnum4.symbols b/tests/baselines/reference/constEnum4.symbols new file mode 100644 index 0000000000000..0098e85c130ea --- /dev/null +++ b/tests/baselines/reference/constEnum4.symbols @@ -0,0 +1,13 @@ +=== tests/cases/conformance/constEnums/constEnum4.ts === +if (1) + const enum A { } +>A : Symbol(A, Decl(constEnum4.ts, 0, 6)) + +else if (2) + const enum B { } +>B : Symbol(B, Decl(constEnum4.ts, 2, 11)) + +else + const enum C { } +>C : Symbol(C, Decl(constEnum4.ts, 4, 4)) + diff --git a/tests/baselines/reference/constEnum4.types b/tests/baselines/reference/constEnum4.types new file mode 100644 index 0000000000000..a35e9f898bf8e --- /dev/null +++ b/tests/baselines/reference/constEnum4.types @@ -0,0 +1,17 @@ +=== tests/cases/conformance/constEnums/constEnum4.ts === +if (1) +>1 : 1 + + const enum A { } +>A : A + +else if (2) +>2 : 2 + + const enum B { } +>B : B + +else + const enum C { } +>C : C + diff --git a/tests/cases/conformance/constEnums/constEnum4.ts b/tests/cases/conformance/constEnums/constEnum4.ts new file mode 100644 index 0000000000000..c6dc5840c4682 --- /dev/null +++ b/tests/cases/conformance/constEnums/constEnum4.ts @@ -0,0 +1,6 @@ +if (1) + const enum A { } +else if (2) + const enum B { } +else + const enum C { }