Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add decorators version 2023-05 #15570

Merged
merged 15 commits into from May 22, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/babel-helpers/src/helpers-generated.ts
Expand Up @@ -39,7 +39,7 @@ export default Object.freeze({
),
applyDecs2305: helper(
"7.21.0",
'import checkInRHS from"checkInRHS";function createAddInitializerMethod(initializers,decoratorFinishedRef){return function(initializer){assertNotFinished(decoratorFinishedRef,"addInitializer"),assertCallable(initializer,"An initializer"),initializers.push(initializer)}}function assertInstanceIfPrivate(has,target){if(!has(target))throw new TypeError("Attempted to access private element on non-instance")}function memberDec(dec,thisArg,name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand){var kindStr;switch(kind){case 1:kindStr="accessor";break;case 2:kindStr="method";break;case 3:kindStr="getter";break;case 4:kindStr="setter";break;default:kindStr="field"}var get,set,ctx={kind:kindStr,name:isPrivate?"#"+name:name,static:isStatic,private:isPrivate},decoratorFinishedRef={v:!1};if(0!==kind&&(ctx.addInitializer=createAddInitializerMethod(initializers,decoratorFinishedRef)),isPrivate||0!==kind&&2!==kind)if(2===kind)get=function(target){return assertInstanceIfPrivate(hasPrivateBrand,target),desc.value};else{var t=0===kind||1===kind;(t||3===kind)&&(get=isPrivate?function(target){return assertInstanceIfPrivate(hasPrivateBrand,target),desc.get.call(target)}:function(target){return desc.get.call(target)}),(t||4===kind)&&(set=isPrivate?function(target,value){assertInstanceIfPrivate(hasPrivateBrand,target),desc.set.call(target,value)}:function(target,value){desc.set.call(target,value)})}else get=function(target){return target[name]},0===kind&&(set=function(target,v){target[name]=v});var has=isPrivate?hasPrivateBrand.bind():function(target){return name in target};ctx.access=get&&set?{get:get,set:set,has:has}:get?{get:get,has:has}:{set:set,has:has};try{return dec.call(thisArg,value,ctx)}finally{decoratorFinishedRef.v=!0}}function assertNotFinished(decoratorFinishedRef,fnName){if(decoratorFinishedRef.v)throw new Error("attempted to call "+fnName+" after decoration was finished")}function assertCallable(fn,hint){if("function"!=typeof fn)throw new TypeError(hint+" must be a function")}function assertValidReturnValue(kind,value){var type=typeof value;if(1===kind){if("object"!==type||null===value)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==value.get&&assertCallable(value.get,"accessor.get"),void 0!==value.set&&assertCallable(value.set,"accessor.set"),void 0!==value.init&&assertCallable(value.init,"accessor.init")}else if("function"!==type){var hint;throw hint=0===kind?"field":5===kind?"class":"method",new TypeError(hint+" decorators must return a function or void 0")}}function curryThis1(fn){return function(){return fn(this)}}function curryThis2(fn){return function(value){fn(this,value)}}function applyMemberDec(ret,base,decInfo,decoratorsHaveThis,name,kind,isStatic,isPrivate,initializers,hasPrivateBrand){var desc,init,value,newValue,get,set,decs=decInfo[0];decoratorsHaveThis||Array.isArray(decs)||(decs=[decs]),isPrivate?desc=0===kind||1===kind?{get:curryThis1(decInfo[3]),set:curryThis2(decInfo[4])}:3===kind?{get:decInfo[3]}:4===kind?{set:decInfo[3]}:{value:decInfo[3]}:0!==kind&&(desc=Object.getOwnPropertyDescriptor(base,name)),1===kind?value={get:desc.get,set:desc.set}:2===kind?value=desc.value:3===kind?value=desc.get:4===kind&&(value=desc.set);for(var inc=decoratorsHaveThis?2:1,i=decs.length-1;i>=0;i-=inc){var newInit;if(void 0!==(newValue=memberDec(decs[i],decoratorsHaveThis?decs[i-1]:void 0,name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===init?init=newInit:"function"==typeof init?init=[init,newInit]:init.push(newInit))}if(0===kind||1===kind){if(void 0===init)init=function(instance,init){return init};else if("function"!=typeof init){var ownInitializers=init;init=function(instance,init){for(var value=init,i=0;i<ownInitializers.length;i++)value=ownInitializers[i].call(instance,value);return value}}else{var originalInitializer=init;init=function(instance,init){return originalInitializer.call(instance,init)}}ret.push(init)}0!==kind&&(1===kind?(desc.get=value.get,desc.set=value.set):2===kind?desc.value=value:3===kind?desc.get=value:4===kind&&(desc.set=value),isPrivate?1===kind?(ret.push((function(instance,args){return value.get.call(instance,args)})),ret.push((function(instance,args){return value.set.call(instance,args)}))):2===kind?ret.push(value):ret.push((function(instance,args){return value.call(instance,args)})):Object.defineProperty(base,name,desc))}function applyMemberDecs(Class,decInfos,instanceBrand){for(var protoInitializers,staticInitializers,staticBrand,ret=[],existingProtoNonFields=new Map,existingStaticNonFields=new Map,i=0;i<decInfos.length;i++){var decInfo=decInfos[i];if(Array.isArray(decInfo)){var base,initializers,kind=decInfo[1],name=decInfo[2],isPrivate=decInfo.length>3,decoratorsHaveThis=16&kind,isStatic=!!(8&kind),hasPrivateBrand=instanceBrand;if(kind&=7,isStatic?(base=Class,0!==kind&&(initializers=staticInitializers=staticInitializers||[]),isPrivate&&!staticBrand&&(staticBrand=function(_){return checkInRHS(_)===Class}),hasPrivateBrand=staticBrand):(base=Class.prototype,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);existingNonFields.set(name,!(!existingKind&&kind>2)||kind)}applyMemberDec(ret,base,decInfo,decoratorsHaveThis,name,kind,isStatic,isPrivate,initializers,hasPrivateBrand)}}return pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers),ret}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i<initializers.length;i++)initializers[i].call(instance);return instance}))}function applyClassDecs(targetClass,classDecs,decoratorsHaveThis){if(classDecs.length){for(var initializers=[],newClass=targetClass,name=targetClass.name,inc=decoratorsHaveThis?2:1,i=classDecs.length-1;i>=0;i-=inc){var decoratorFinishedRef={v:!1};try{var nextNewClass=classDecs[i].call(decoratorsHaveThis?classDecs[i-1]:void 0,newClass,{kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)})}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(5,nextNewClass),newClass=nextNewClass)}return[newClass,function(){for(var i=0;i<initializers.length;i++)initializers[i].call(newClass)}]}}export default function applyDecs2305(targetClass,memberDecs,classDecs,classDecsHaveThis,instanceBrand){return{e:applyMemberDecs(targetClass,memberDecs,instanceBrand),get c(){return applyClassDecs(targetClass,classDecs,classDecsHaveThis)}}}',
'import checkInRHS from"checkInRHS";function createAddInitializerMethod(initializers,decoratorFinishedRef){return function(initializer){assertNotFinished(decoratorFinishedRef,"addInitializer"),assertCallable(initializer,"An initializer"),initializers.push(initializer)}}function assertInstanceIfPrivate(has,target){if(!has(target))throw new TypeError("Attempted to access private element on non-instance")}function memberDec(dec,thisArg,name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand){var kindStr;switch(kind){case 1:kindStr="accessor";break;case 2:kindStr="method";break;case 3:kindStr="getter";break;case 4:kindStr="setter";break;default:kindStr="field"}var get,set,ctx={kind:kindStr,name:isPrivate?"#"+name:name,static:isStatic,private:isPrivate},decoratorFinishedRef={v:!1};if(0!==kind&&(ctx.addInitializer=createAddInitializerMethod(initializers,decoratorFinishedRef)),isPrivate||0!==kind&&2!==kind)if(2===kind)get=function(target){return assertInstanceIfPrivate(hasPrivateBrand,target),desc.value};else{var t=0===kind||1===kind;(t||3===kind)&&(get=isPrivate?function(target){return assertInstanceIfPrivate(hasPrivateBrand,target),desc.get.call(target)}:function(target){return desc.get.call(target)}),(t||4===kind)&&(set=isPrivate?function(target,value){assertInstanceIfPrivate(hasPrivateBrand,target),desc.set.call(target,value)}:function(target,value){desc.set.call(target,value)})}else get=function(target){return target[name]},0===kind&&(set=function(target,v){target[name]=v});var has=isPrivate?hasPrivateBrand.bind():function(target){return name in target};ctx.access=get&&set?{get:get,set:set,has:has}:get?{get:get,has:has}:{set:set,has:has};try{return dec.call(thisArg,value,ctx)}finally{decoratorFinishedRef.v=!0}}function assertNotFinished(decoratorFinishedRef,fnName){if(decoratorFinishedRef.v)throw new Error("attempted to call "+fnName+" after decoration was finished")}function assertCallable(fn,hint){if("function"!=typeof fn)throw new TypeError(hint+" must be a function")}function assertValidReturnValue(kind,value){var type=typeof value;if(1===kind){if("object"!==type||null===value)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==value.get&&assertCallable(value.get,"accessor.get"),void 0!==value.set&&assertCallable(value.set,"accessor.set"),void 0!==value.init&&assertCallable(value.init,"accessor.init")}else if("function"!==type){var hint;throw hint=0===kind?"field":5===kind?"class":"method",new TypeError(hint+" decorators must return a function or void 0")}}function curryThis1(fn){return function(){return fn(this)}}function curryThis2(fn){return function(value){fn(this,value)}}function applyMemberDec(ret,base,decInfo,decoratorsHaveThis,name,kind,isStatic,isPrivate,initializers,hasPrivateBrand){var desc,init,value,newValue,get,set,decs=decInfo[0];decoratorsHaveThis||Array.isArray(decs)||(decs=[decs]),isPrivate?desc=0===kind||1===kind?{get:curryThis1(decInfo[3]),set:curryThis2(decInfo[4])}:3===kind?{get:decInfo[3]}:4===kind?{set:decInfo[3]}:{value:decInfo[3]}:0!==kind&&(desc=Object.getOwnPropertyDescriptor(base,name)),1===kind?value={get:desc.get,set:desc.set}:2===kind?value=desc.value:3===kind?value=desc.get:4===kind&&(value=desc.set);for(var inc=decoratorsHaveThis?2:1,i=decs.length-1;i>=0;i-=inc){var newInit;if(void 0!==(newValue=memberDec(decs[i],decoratorsHaveThis?decs[i-1]:void 0,name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===init?init=newInit:"function"==typeof init?init=[init,newInit]:init.push(newInit))}if(0===kind||1===kind){if(void 0===init)init=function(instance,init){return init};else if("function"!=typeof init){var ownInitializers=init;init=function(instance,init){for(var value=init,i=ownInitializers.length-1;i>=0;i--)value=ownInitializers[i].call(instance,value);return value}}else{var originalInitializer=init;init=function(instance,init){return originalInitializer.call(instance,init)}}ret.push(init)}0!==kind&&(1===kind?(desc.get=value.get,desc.set=value.set):2===kind?desc.value=value:3===kind?desc.get=value:4===kind&&(desc.set=value),isPrivate?1===kind?(ret.push((function(instance,args){return value.get.call(instance,args)})),ret.push((function(instance,args){return value.set.call(instance,args)}))):2===kind?ret.push(value):ret.push((function(instance,args){return value.call(instance,args)})):Object.defineProperty(base,name,desc))}function applyMemberDecs(Class,decInfos,instanceBrand){for(var protoInitializers,staticInitializers,staticBrand,ret=[],existingProtoNonFields=new Map,existingStaticNonFields=new Map,i=0;i<decInfos.length;i++){var decInfo=decInfos[i];if(Array.isArray(decInfo)){var base,initializers,kind=decInfo[1],name=decInfo[2],isPrivate=decInfo.length>3,decoratorsHaveThis=16&kind,isStatic=!!(8&kind),hasPrivateBrand=instanceBrand;if(kind&=7,isStatic?(base=Class,0!==kind&&(initializers=staticInitializers=staticInitializers||[]),isPrivate&&!staticBrand&&(staticBrand=function(_){return checkInRHS(_)===Class}),hasPrivateBrand=staticBrand):(base=Class.prototype,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);existingNonFields.set(name,!(!existingKind&&kind>2)||kind)}applyMemberDec(ret,base,decInfo,decoratorsHaveThis,name,kind,isStatic,isPrivate,initializers,hasPrivateBrand)}}return pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers),ret}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i<initializers.length;i++)initializers[i].call(instance);return instance}))}function applyClassDecs(targetClass,classDecs,decoratorsHaveThis){if(classDecs.length){for(var initializers=[],newClass=targetClass,name=targetClass.name,inc=decoratorsHaveThis?2:1,i=classDecs.length-1;i>=0;i-=inc){var decoratorFinishedRef={v:!1};try{var nextNewClass=classDecs[i].call(decoratorsHaveThis?classDecs[i-1]:void 0,newClass,{kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)})}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(5,nextNewClass),newClass=nextNewClass)}return[newClass,function(){for(var i=0;i<initializers.length;i++)initializers[i].call(newClass)}]}}export default function applyDecs2305(targetClass,memberDecs,classDecs,classDecsHaveThis,instanceBrand){return{e:applyMemberDecs(targetClass,memberDecs,instanceBrand),get c(){return applyClassDecs(targetClass,classDecs,classDecsHaveThis)}}}',
),
asyncGeneratorDelegate: helper(
"7.0.0-beta.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/babel-helpers/src/helpers/applyDecs2305.js
Expand Up @@ -319,7 +319,7 @@ function applyMemberDec(
init = function (instance, init) {
var value = init;

for (var i = 0; i < ownInitializers.length; i++) {
for (var i = ownInitializers.length - 1; i >= 0; i--) {
JLHwung marked this conversation as resolved.
Show resolved Hide resolved
value = ownInitializers[i].call(instance, value);
}

Expand Down
Expand Up @@ -37,8 +37,8 @@ function logFieldDecoratorRun(a, b) {
@logClassDecoratorRun(0, 19, 21)
@logClassDecoratorRun(1, 18, 20)
class A {
@logAccessorDecoratorRun(2, 11, 23, 27)
@logAccessorDecoratorRun(3, 10, 22, 26)
@logAccessorDecoratorRun(2, 11, 23, 26)
@logAccessorDecoratorRun(3, 10, 22, 27)
accessor a;

@logFieldDecoratorRun(4, 15)
Expand All @@ -49,8 +49,8 @@ class A {
@logFieldDecoratorRun(7, 16)
#c;

@logAccessorDecoratorRun(8, 13, 25, 29)
@logAccessorDecoratorRun(9, 12, 24, 28)
@logAccessorDecoratorRun(8, 13, 25, 28)
@logAccessorDecoratorRun(9, 12, 24, 29)
accessor #d;

constructor() {
Expand Down
Expand Up @@ -38,12 +38,12 @@ function logFieldDecoratorRun(a, b) {
@logClassDecoratorRun(0, 11, 13)
@logClassDecoratorRun(1, 10, 12)
class A {
@logAccessorDecoratorRun(2, 7, 15, 19, 22, 25)
@logAccessorDecoratorRun(3, 6, 14, 18, 23, 24)
@logAccessorDecoratorRun(2, 7, 15, 18, 22, 25)
@logAccessorDecoratorRun(3, 6, 14, 19, 23, 24)
accessor a;

@logAccessorDecoratorRun(4, 9, 17, 21, 26, 29)
@logAccessorDecoratorRun(5, 8, 16, 20, 27, 28)
@logAccessorDecoratorRun(4, 9, 17, 20, 26, 29)
@logAccessorDecoratorRun(5, 8, 16, 21, 27, 28)
accessor #b;

constructor() {
Expand Down
Expand Up @@ -43,8 +43,8 @@ function logMethodDecoratorRun(a, b, c, d) {
@logClassDecoratorRun(0, 19, 21)
@logClassDecoratorRun(1, 18, 20)
class A {
@logAccessorDecoratorRun(2, 11, 23, 31)
@logAccessorDecoratorRun(3, 10, 22, 30)
@logAccessorDecoratorRun(2, 11, 23, 30)
@logAccessorDecoratorRun(3, 10, 22, 31)
accessor a;

@logMethodDecoratorRun(4, 13, 25, 35)
Expand All @@ -55,8 +55,8 @@ class A {
@logMethodDecoratorRun(7, 14, 26, 36)
#c() {};

@logAccessorDecoratorRun(8, 17, 29, 33)
@logAccessorDecoratorRun(9, 16, 28, 32)
@logAccessorDecoratorRun(8, 17, 29, 32)
@logAccessorDecoratorRun(9, 16, 28, 33)
accessor #d;

constructor() {
Expand Down
Expand Up @@ -25,20 +25,20 @@ function logAccessorDecoratorRun(a, b, c, d) {
@logClassDecoratorRun(0, 19, 29)
@logClassDecoratorRun(1, 18, 28)
class A {
@logAccessorDecoratorRun(2, 15, 31, 35)
@logAccessorDecoratorRun(3, 14, 30, 34)
@logAccessorDecoratorRun(2, 15, 31, 34)
@logAccessorDecoratorRun(3, 14, 30, 35)
accessor a;

@logAccessorDecoratorRun(4, 11, 21, 25)
@logAccessorDecoratorRun(5, 10, 20, 24)
@logAccessorDecoratorRun(4, 11, 21, 24)
@logAccessorDecoratorRun(5, 10, 20, 25)
static accessor b;

@logAccessorDecoratorRun(6, 13, 23, 27)
@logAccessorDecoratorRun(7, 12, 22, 26)
@logAccessorDecoratorRun(6, 13, 23, 26)
@logAccessorDecoratorRun(7, 12, 22, 27)
static accessor #c;

@logAccessorDecoratorRun(8, 17, 33, 37)
@logAccessorDecoratorRun(9, 16, 32, 36)
@logAccessorDecoratorRun(8, 17, 33, 36)
@logAccessorDecoratorRun(9, 16, 32, 37)
accessor #d;
}

Expand Down
Expand Up @@ -47,8 +47,8 @@ class A {
A.b(), A.#c();
}

@logAccessorDecoratorRun(2, 15, 31, 35)
@logAccessorDecoratorRun(3, 14, 30, 34)
@logAccessorDecoratorRun(2, 15, 31, 34)
@logAccessorDecoratorRun(3, 14, 30, 35)
accessor a;

@logMethodDecoratorRun(4, 11, 21, 25)
Expand All @@ -59,8 +59,8 @@ class A {
@logMethodDecoratorRun(7, 12, 22, 26)
static #c() {};

@logAccessorDecoratorRun(8, 17, 33, 37)
@logAccessorDecoratorRun(9, 16, 32, 36)
@logAccessorDecoratorRun(8, 17, 33, 36)
@logAccessorDecoratorRun(9, 16, 32, 37)
accessor #d;

constructor() {
Expand Down
Expand Up @@ -47,12 +47,12 @@ class A {
@logMethodDecoratorRun(3, 14, 30, 34)
a() {}

@logAccessorDecoratorRun(4, 11, 21, 25)
@logAccessorDecoratorRun(5, 10, 20, 24)
@logAccessorDecoratorRun(4, 11, 21, 24)
@logAccessorDecoratorRun(5, 10, 20, 25)
static accessor b;

@logAccessorDecoratorRun(6, 13, 23, 27)
@logAccessorDecoratorRun(7, 12, 22, 26)
@logAccessorDecoratorRun(6, 13, 23, 26)
@logAccessorDecoratorRun(7, 12, 22, 27)
static accessor #c;

@logMethodDecoratorRun(8, 17, 33, 37)
Expand Down
@@ -0,0 +1,31 @@
function minusTwo({ set }) {
return {
set(v) {
set.call(this, v - 2);
},
init(v) {
return v - 2;
},
};
}

function timesFour({ set }) {
return {
set(v) {
set.call(this, v * 4);
},
init(v) {
return v * 4;
},
};
}

class Foo {
@minusTwo @timesFour accessor bar = 5;
}
debugger;
nicolo-ribaudo marked this conversation as resolved.
Show resolved Hide resolved
const foo = new Foo();
expect(foo.bar).toBe(12); // (5 - 2) * 4

foo.bar = 5;
expect(foo.bar).toBe(12); // (5 - 2) * 4
Expand Up @@ -37,8 +37,8 @@ function logFieldDecoratorRun(a, b) {
@logClassDecoratorRun(0, 19, 21)
@logClassDecoratorRun(1, 18, 20)
class A {
@logAccessorDecoratorRun(2, 11, 23, 27)
@logAccessorDecoratorRun(3, 10, 22, 26)
@logAccessorDecoratorRun(2, 11, 23, 26)
@logAccessorDecoratorRun(3, 10, 22, 27)
accessor a;

@logFieldDecoratorRun(4, 15)
Expand All @@ -49,8 +49,8 @@ class A {
@logFieldDecoratorRun(7, 16)
#c;

@logAccessorDecoratorRun(8, 13, 25, 29)
@logAccessorDecoratorRun(9, 12, 24, 28)
@logAccessorDecoratorRun(8, 13, 25, 28)
@logAccessorDecoratorRun(9, 12, 24, 29)
accessor #d;

constructor() {
Expand Down
Expand Up @@ -38,12 +38,12 @@ function logFieldDecoratorRun(a, b) {
@logClassDecoratorRun(0, 11, 13)
@logClassDecoratorRun(1, 10, 12)
class A {
@logAccessorDecoratorRun(2, 7, 15, 19, 22, 25)
@logAccessorDecoratorRun(3, 6, 14, 18, 23, 24)
@logAccessorDecoratorRun(2, 7, 15, 18, 22, 25)
@logAccessorDecoratorRun(3, 6, 14, 19, 23, 24)
accessor a;

@logAccessorDecoratorRun(4, 9, 17, 21, 26, 29)
@logAccessorDecoratorRun(5, 8, 16, 20, 27, 28)
@logAccessorDecoratorRun(4, 9, 17, 20, 26, 29)
@logAccessorDecoratorRun(5, 8, 16, 21, 27, 28)
accessor #b;

constructor() {
Expand Down