Skip to content

Commit 2958649

Browse files
author
Arthur Ozga
committed
Enum and enum literal
1 parent c4ddc5b commit 2958649

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

src/compiler/checker.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2266,7 +2266,8 @@ namespace ts {
22662266
return createKeywordTypeNode(SyntaxKind.BooleanKeyword);
22672267
}
22682268
if (type.flags & TypeFlags.Enum) {
2269-
throw new Error ("enums not implemented")
2269+
const name = createNameFromSymbol(type.symbol);
2270+
return createTypeReferenceNode(name, /*typeArguments*/ undefined);
22702271
}
22712272
if (type.flags & (TypeFlags.StringLiteral)) {
22722273
return createLiteralTypeNode((createLiteral((<LiteralType>type).text)));
@@ -2278,7 +2279,8 @@ namespace ts {
22782279
return (<IntrinsicType>type).intrinsicName === "true" ? createTrue() : createFalse();
22792280
}
22802281
if (type.flags & TypeFlags.EnumLiteral) {
2281-
throw new Error("enum literal not implemented");
2282+
const name = createNameFromSymbol(type.symbol);
2283+
return createTypeReferenceNode(name, /*typeArguments*/ undefined);
22822284
}
22832285
if (type.flags & TypeFlags.Void) {
22842286
return createKeywordTypeNode(SyntaxKind.VoidKeyword);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @lib: es2017
4+
5+
//// enum E { a,b,c }
6+
//// interface I {
7+
//// a: E;
8+
//// }
9+
//// class C implements I {[| |]}
10+
11+
verify.rangeAfterCodeFix(`
12+
a: E;
13+
`);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @lib: es2017
4+
5+
//// enum E { a,b,c }
6+
//// interface I {
7+
//// a: E.a
8+
//// }
9+
//// class C implements I {[| |]}
10+
11+
verify.rangeAfterCodeFix(`
12+
a: E.a;
13+
`);

0 commit comments

Comments
 (0)