nl_tokens: This function specifically handles numeric / string literals for enum and accessor identifiers . In a sense it does not actually emit identifiers as much as it declares a name for a specific property . For example this is utilized when feeding in a result to Object . defineProperty .
pl_tokens: function emitExpressionForPropertyName ( node ) { ts . Debug . assert ( node . kind !== 163 /* BindingElement */ ) ; if ( node . kind === 9 /* StringLiteral */ ) { emitLiteral ( node ) ; } else if ( node . kind === 136 /* ComputedPropertyName */ ) { // if this is a decorated computed property, we will need to capture the result // of the property expression so that we can apply decorators later. This is to ensure // we don't introduce unintended side effects: // //   class C { //     [_a = x]() { } //   } // // The emit for the decorated computed property decorator is: // //   __decorate([dec], C.prototype, _a, Object.getOwnPropertyDescriptor(C.prototype, _a)); // if ( ts . nodeIsDecorated ( node . parent ) ) { if ( ! computedPropertyNamesToGeneratedNames ) { computedPropertyNamesToGeneratedNames = [ ] ; } var generatedName = computedPropertyNamesToGeneratedNames [ ts . getNodeId ( node ) ] ; if ( generatedName ) { // we have already generated a variable for this node, write that value instead. write ( generatedName ) ; return ; } generatedName = createAndRecordTempVariable ( 0 /* Auto */ ) . text ; computedPropertyNamesToGeneratedNames [ ts . getNodeId ( node ) ] = generatedName ; write ( generatedName ) ; write ( " = " ) ; } emit ( node . expression ) ; } else { write ( "\"" ) ; if ( node . <mask> === 8 /* NumericLiteral */ ) { write ( node . text ) ; } else { writeTextOfNode ( currentSourceFile , node ) ; } write ( "\"" ) ; } }