diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 15b51ea2068..8047d911ca7 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -4407,7 +4407,9 @@ module ts { emitComputedPropertyName(memberName); } else { - write("."); + if (languageVersion < ScriptTarget.ES6) { + write("."); + } emitNodeWithoutSourceMap(memberName); } } @@ -4509,6 +4511,27 @@ module ts { }); } + function emitMemberFunctionsAboveES6(node: ClassDeclaration) { + forEach(node.members, member => { + if (member.kind === SyntaxKind.MethodDeclaration || node.kind === SyntaxKind.MethodSignature) { + if (!(member).body) { + return emitPinnedOrTripleSlashComments(member); + } + + writeLine(); + emitLeadingComments(member); + emitStart(member); + if (member.flags & NodeFlags.Static) { + write("static "); + } + emitMemberAccessForPropertyName((member).name); + emitSignatureAndBody(member); + emitEnd(member); + emitTrailingComments(member); + } + }); + } + function emitConstructorOfClass(node: ClassDeclaration, baseTypeNode: TypeReferenceNode) { var saveTempCount = tempCount; var saveTempVariables = tempVariables; @@ -4624,6 +4647,7 @@ module ts { scopeEmitStart(node); writeLine(); emitConstructorOfClass(node, baseTypeNode); + emitMemberFunctionsAboveES6(node); writeLine(); scopeEmitEnd(); decreaseIndent();