@@ -34,6 +34,11 @@ namespace ts {
34
34
// Class Fields Helpers
35
35
createClassPrivateFieldGetHelper ( receiver : Expression , privateField : Identifier ) : Expression ;
36
36
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 ;
37
42
}
38
43
39
44
export function createEmitHelperFactory ( context : TransformationContext ) : EmitHelperFactory {
@@ -72,6 +77,11 @@ namespace ts {
72
77
// Class Fields Helpers
73
78
createClassPrivateFieldGetHelper,
74
79
createClassPrivateFieldSetHelper,
80
+ createClassPrivateMethodGetHelper,
81
+ createClassPrivateReadonlyHelper,
82
+ createClassPrivateWriteonlyHelper,
83
+ createClassPrivateAccessorGetHelper,
84
+ createClassPrivateAccessorSetHelper,
75
85
} ;
76
86
77
87
/**
@@ -377,6 +387,31 @@ namespace ts {
377
387
context . requestEmitHelper ( classPrivateFieldSetHelper ) ;
378
388
return factory . createCallExpression ( getUnscopedHelperName ( "__classPrivateFieldSet" ) , /*typeArguments*/ undefined , [ receiver , privateField , value ] ) ;
379
389
}
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
+ }
380
415
}
381
416
382
417
/* @internal */
@@ -844,6 +879,66 @@ namespace ts {
844
879
};`
845
880
} ;
846
881
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
+
847
942
let allUnscopedEmitHelpers : ReadonlyESMap < string , UnscopedEmitHelper > | undefined ;
848
943
849
944
export function getAllUnscopedEmitHelpers ( ) {
@@ -869,6 +964,11 @@ namespace ts {
869
964
exportStarHelper ,
870
965
classPrivateFieldGetHelper ,
871
966
classPrivateFieldSetHelper ,
967
+ classPrivateMethodGetHelper ,
968
+ classPrivateReadonlyHelper ,
969
+ classPrivateWriteonlyHelper ,
970
+ classPrivateAccessorGetHelper ,
971
+ classPrivateAccessorSetHelper ,
872
972
createBindingHelper ,
873
973
setModuleDefaultHelper
874
974
] , helper => helper . name ) ) ;
@@ -897,4 +997,4 @@ namespace ts {
897
997
&& ( getEmitFlags ( firstSegment . expression ) & EmitFlags . HelperName )
898
998
&& firstSegment . expression . escapedText === helperName ;
899
999
}
900
- }
1000
+ }
0 commit comments