diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 64bf09d8b37..61bdee79e39 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4652,6 +4652,9 @@ namespace ts { if (!isIdentifierText(name, compilerOptions.target) && !isNumericLiteralName(name)) { return `"${escapeString(name, CharacterCodes.doubleQuote)}"`; } + if (isNumericLiteralName(name) && startsWith(name, "-")) { + return `[${name}]`; + } return name; } if (nameType.flags & TypeFlags.UniqueESSymbol) { diff --git a/tests/cases/conformance/es6/computedProperties/computedPropertyNamesDeclarationEmit6_ES5.ts b/tests/cases/conformance/es6/computedProperties/computedPropertyNamesDeclarationEmit6_ES5.ts new file mode 100644 index 00000000000..cb120d70822 --- /dev/null +++ b/tests/cases/conformance/es6/computedProperties/computedPropertyNamesDeclarationEmit6_ES5.ts @@ -0,0 +1,5 @@ +// @target: es5 +// @declaration: true +var v = { + [-1]: {} +} diff --git a/tests/cases/conformance/es6/computedProperties/computedPropertyNamesDeclarationEmit6_ES6.ts b/tests/cases/conformance/es6/computedProperties/computedPropertyNamesDeclarationEmit6_ES6.ts new file mode 100644 index 00000000000..8d904244f3f --- /dev/null +++ b/tests/cases/conformance/es6/computedProperties/computedPropertyNamesDeclarationEmit6_ES6.ts @@ -0,0 +1,5 @@ +// @target: es6 +// @declaration: true +var v = { + [-1]: {} +} \ No newline at end of file