Enum and enum literal

This commit is contained in:
Arthur Ozga
2017-03-22 14:33:49 -07:00
parent c4ddc5bffa
commit 2958649a95
3 changed files with 30 additions and 2 deletions

View File

@@ -2266,7 +2266,8 @@ namespace ts {
return createKeywordTypeNode(SyntaxKind.BooleanKeyword);
}
if (type.flags & TypeFlags.Enum) {
throw new Error ("enums not implemented")
const name = createNameFromSymbol(type.symbol);
return createTypeReferenceNode(name, /*typeArguments*/ undefined);
}
if (type.flags & (TypeFlags.StringLiteral)) {
return createLiteralTypeNode((createLiteral((<LiteralType>type).text)));
@@ -2278,7 +2279,8 @@ namespace ts {
return (<IntrinsicType>type).intrinsicName === "true" ? createTrue() : createFalse();
}
if (type.flags & TypeFlags.EnumLiteral) {
throw new Error("enum literal not implemented");
const name = createNameFromSymbol(type.symbol);
return createTypeReferenceNode(name, /*typeArguments*/ undefined);
}
if (type.flags & TypeFlags.Void) {
return createKeywordTypeNode(SyntaxKind.VoidKeyword);

View File

@@ -0,0 +1,13 @@
/// <reference path='fourslash.ts' />
// @lib: es2017
//// enum E { a,b,c }
//// interface I {
//// a: E;
//// }
//// class C implements I {[| |]}
verify.rangeAfterCodeFix(`
a: E;
`);

View File

@@ -0,0 +1,13 @@
/// <reference path='fourslash.ts' />
// @lib: es2017
//// enum E { a,b,c }
//// interface I {
//// a: E.a
//// }
//// class C implements I {[| |]}
verify.rangeAfterCodeFix(`
a: E.a;
`);