* Transforms a ClassExpression or ClassDeclaration into a function body. * * @param node A ClassExpression or ClassDeclaration node. * @param extendsClauseElement The expression for the class `extends` clause.
(node, extendsClauseElement)
| 99015 | * @param extendsClauseElement The expression for the class `extends` clause. |
| 99016 | */ |
| 99017 | function transformClassBody(node, extendsClauseElement) { |
| 99018 | var statements = []; |
| 99019 | var name = factory.getInternalName(node); |
| 99020 | var constructorLikeName = ts.isIdentifierANonContextualKeyword(name) ? factory.getGeneratedNameForNode(name) : name; |
| 99021 | startLexicalEnvironment(); |
| 99022 | addExtendsHelperIfNeeded(statements, node, extendsClauseElement); |
| 99023 | addConstructor(statements, node, constructorLikeName, extendsClauseElement); |
| 99024 | addClassMembers(statements, node); |
| 99025 | // Create a synthetic text range for the return statement. |
| 99026 | var closingBraceLocation = ts.createTokenRange(ts.skipTrivia(currentText, node.members.end), 19 /* SyntaxKind.CloseBraceToken */); |
| 99027 | // The following partially-emitted expression exists purely to align our sourcemap |
| 99028 | // emit with the original emitter. |
| 99029 | var outer = factory.createPartiallyEmittedExpression(constructorLikeName); |
| 99030 | ts.setTextRangeEnd(outer, closingBraceLocation.end); |
| 99031 | ts.setEmitFlags(outer, 1536 /* EmitFlags.NoComments */); |
| 99032 | var statement = factory.createReturnStatement(outer); |
| 99033 | ts.setTextRangePos(statement, closingBraceLocation.pos); |
| 99034 | ts.setEmitFlags(statement, 1536 /* EmitFlags.NoComments */ | 384 /* EmitFlags.NoTokenSourceMaps */); |
| 99035 | statements.push(statement); |
| 99036 | ts.insertStatementsAfterStandardPrologue(statements, endLexicalEnvironment()); |
| 99037 | var block = factory.createBlock(ts.setTextRange(factory.createNodeArray(statements), /*location*/ node.members), /*multiLine*/ true); |
| 99038 | ts.setEmitFlags(block, 1536 /* EmitFlags.NoComments */); |
| 99039 | return block; |
| 99040 | } |
| 99041 | /** |
| 99042 | * Adds a call to the `__extends` helper if needed for a class. |
| 99043 | * |
no test coverage detected
searching dependent graphs…