@@ -34,6 +34,11 @@ namespace ts {
3434 // Class Fields Helpers
3535 createClassPrivateFieldGetHelper ( receiver : Expression , privateField : Identifier ) : Expression ;
3636 createClassPrivateFieldSetHelper ( receiver : Expression , privateField : Identifier , value : Expression ) : Expression ;
37+ createClassPrivateMethodGetHelper ( receiver : Expression , instances : Identifier , fn : Identifier ) : Expression ;
38+ createClassPrivateReadonlyHelper ( receiver : Expression , value : Expression ) : Expression ;
39+ createClassPrivateWriteonlyHelper ( receiver : Expression ) : Expression ;
40+ createClassPrivateAccessorGetHelper ( receiver : Expression , instances : Identifier , fn : Identifier ) : Expression ;
41+ createClassPrivateAccessorSetHelper ( receiver : Expression , instances : Identifier , fn : Identifier , value : Expression ) : Expression ;
3742 }
3843
3944 export function createEmitHelperFactory ( context : TransformationContext ) : EmitHelperFactory {
@@ -72,6 +77,11 @@ namespace ts {
7277 // Class Fields Helpers
7378 createClassPrivateFieldGetHelper,
7479 createClassPrivateFieldSetHelper,
80+ createClassPrivateMethodGetHelper,
81+ createClassPrivateReadonlyHelper,
82+ createClassPrivateWriteonlyHelper,
83+ createClassPrivateAccessorGetHelper,
84+ createClassPrivateAccessorSetHelper,
7585 } ;
7686
7787 /**
@@ -377,6 +387,31 @@ namespace ts {
377387 context . requestEmitHelper ( classPrivateFieldSetHelper ) ;
378388 return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateFieldSet" ) , /*typeArguments*/ undefined , [ receiver , privateField , value ] ) ;
379389 }
390+
391+ function createClassPrivateMethodGetHelper ( receiver : Expression , instances : Identifier , fn : Identifier ) {
392+ context . requestEmitHelper ( classPrivateMethodGetHelper ) ;
393+ return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateMethodGet" ) , /*typeArguments*/ undefined , [ receiver , instances , fn ] ) ;
394+ }
395+
396+ function createClassPrivateReadonlyHelper ( receiver : Expression , value : Expression ) {
397+ context . requestEmitHelper ( classPrivateReadonlyHelper ) ;
398+ return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateReadonly" ) , /*typeArguments*/ undefined , [ receiver , value ] ) ;
399+ }
400+
401+ function createClassPrivateWriteonlyHelper ( receiver : Expression ) {
402+ context . requestEmitHelper ( classPrivateWriteonlyHelper ) ;
403+ return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateWriteonly" ) , /*typeArguments*/ undefined , [ receiver ] ) ;
404+ }
405+
406+ function createClassPrivateAccessorGetHelper ( receiver : Expression , instances : Identifier , fn : Identifier ) {
407+ context . requestEmitHelper ( classPrivateAccessorGetHelper ) ;
408+ return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateAccessorGet" ) , /*typeArguments*/ undefined , [ receiver , instances , fn ] ) ;
409+ }
410+
411+ function createClassPrivateAccessorSetHelper ( receiver : Expression , instances : Identifier , fn : Identifier , value : Expression ) {
412+ context . requestEmitHelper ( classPrivateAccessorSetHelper ) ;
413+ return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateAccessorSet" ) , /*typeArguments*/ undefined , [ receiver , instances , fn , value ] ) ;
414+ }
380415 }
381416
382417 /* @internal */
@@ -844,6 +879,66 @@ namespace ts {
844879 };`
845880 } ;
846881
882+ export const classPrivateMethodGetHelper : UnscopedEmitHelper = {
883+ name : "typescript:classPrivateMethodGet" ,
884+ importName : "__classPrivateMethodGet" ,
885+ scoped : false ,
886+ text : `
887+ var __classPrivateMethodGet = (this && this.__classPrivateMethodGet) || function (receiver, instances, fn) {
888+ if (!instances.has(receiver)) {
889+ throw new TypeError("attempted to get private method on non-instance");
890+ }
891+ return fn;
892+ };`
893+ } ;
894+
895+ export const classPrivateReadonlyHelper : UnscopedEmitHelper = {
896+ name : "typescript:classPrivateReadonly" ,
897+ importName : "__classPrivateReadonly" ,
898+ scoped : false ,
899+ text : `
900+ var __classPrivateReadonly = (this && this.__classPrivateReadonly) || function () {
901+ throw new TypeError("private element is not writable");
902+ };`
903+ } ;
904+
905+ export const classPrivateWriteonlyHelper : UnscopedEmitHelper = {
906+ name : "typescript:classPrivateWriteonly" ,
907+ importName : "__classPrivateWriteonly" ,
908+ scoped : false ,
909+ text : `
910+ var __classPrivateWriteonly = (this && this.__classPrivateWriteonly) || function () {
911+ throw new TypeError("private setter was defined without a getter");
912+ };`
913+ } ;
914+
915+ export const classPrivateAccessorGetHelper : UnscopedEmitHelper = {
916+ name : "typescript:classPrivateAccessorGet" ,
917+ importName : "__classPrivateAccessorGet" ,
918+ scoped : false ,
919+ text : `
920+ var __classPrivateAccessorGet = (this && this.__classPrivateAccessorGet) || function (receiver, instances, fn) {
921+ if (!instances.has(receiver)) {
922+ throw new TypeError("attempted to get private accessor on non-instance");
923+ }
924+ return fn.call(receiver);
925+ };`
926+ } ;
927+
928+ export const classPrivateAccessorSetHelper : UnscopedEmitHelper = {
929+ name : "typescript:classPrivateAccessorSet" ,
930+ importName : "__classPrivateAccessorSet" ,
931+ scoped : false ,
932+ text : `
933+ var __classPrivateAccessorSet = (this && this.__classPrivateAccessorSet) || function (receiver, instances, fn, value) {
934+ if (!instances.has(receiver)) {
935+ throw new TypeError("attempted to set private accessor on non-instance");
936+ }
937+ fn.call(receiver, value);
938+ return value;
939+ };`
940+ } ;
941+
847942 let allUnscopedEmitHelpers : ReadonlyESMap < string , UnscopedEmitHelper > | undefined ;
848943
849944 export function getAllUnscopedEmitHelpers ( ) {
@@ -869,6 +964,11 @@ namespace ts {
869964 exportStarHelper ,
870965 classPrivateFieldGetHelper ,
871966 classPrivateFieldSetHelper ,
967+ classPrivateMethodGetHelper ,
968+ classPrivateReadonlyHelper ,
969+ classPrivateWriteonlyHelper ,
970+ classPrivateAccessorGetHelper ,
971+ classPrivateAccessorSetHelper ,
872972 createBindingHelper ,
873973 setModuleDefaultHelper
874974 ] , helper => helper . name ) ) ;
@@ -897,4 +997,4 @@ namespace ts {
897997 && ( getEmitFlags ( firstSegment . expression ) & EmitFlags . HelperName )
898998 && firstSegment . expression . escapedText === helperName ;
899999 }
900- }
1000+ }
0 commit comments