From 72f17ebe1bcba8c46a1b28f36da0186beaf3547c Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Sun, 31 Jul 2022 12:27:12 +0300 Subject: [PATCH] fix(49935): omit parentheses in the operand of the unary expression --- src/compiler/transformers/classFields.ts | 29 +-- .../privateNameFieldUnaryMutation.js | 46 +++- .../privateNameFieldUnaryMutation.symbols | 200 ++++++++++++++--- .../privateNameFieldUnaryMutation.types | 202 ++++++++++++++++++ .../privateNameFieldUnaryMutation.ts | 22 ++ 5 files changed, 449 insertions(+), 50 deletions(-) diff --git a/src/compiler/transformers/classFields.ts b/src/compiler/transformers/classFields.ts index 7e9f7639264dd..13ea666881eaf 100644 --- a/src/compiler/transformers/classFields.ts +++ b/src/compiler/transformers/classFields.ts @@ -576,10 +576,11 @@ namespace ts { function visitPreOrPostfixUnaryExpression(node: PrefixUnaryExpression | PostfixUnaryExpression, valueIsDiscarded: boolean) { if (node.operator === SyntaxKind.PlusPlusToken || node.operator === SyntaxKind.MinusMinusToken) { - if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(node.operand)) { + const operand = skipParentheses(node.operand); + if (shouldTransformPrivateElementsOrClassStaticBlocks && isPrivateIdentifierPropertyAccessExpression(operand)) { let info: PrivateIdentifierInfo | undefined; - if (info = accessPrivateIdentifier(node.operand.name)) { - const receiver = visitNode(node.operand.expression, visitor, isExpression); + if (info = accessPrivateIdentifier(operand.name)) { + const receiver = visitNode(operand.expression, visitor, isExpression); const { readExpression, initializeExpression } = createCopiableReceiverExpr(receiver); let expression: Expression = createPrivateIdentifierAccess(info, readExpression); @@ -601,7 +602,7 @@ namespace ts { } } else if (shouldTransformSuperInStaticInitializers && - isSuperProperty(node.operand) && + isSuperProperty(operand) && currentStaticPropertyDeclarationOrStaticBlock && currentClassLexicalEnvironment) { // converts `++super.a` into `(Reflect.set(_baseTemp, "a", (_a = Reflect.get(_baseTemp, "a", _classTemp), _b = ++_a), _classTemp), _b)` @@ -614,31 +615,31 @@ namespace ts { // converts `super[f()]--` into `(Reflect.set(_baseTemp, _a = f(), (_b = Reflect.get(_baseTemp, _a, _classTemp), _c = _b--), _classTemp), _c)` const { classConstructor, superClassReference, facts } = currentClassLexicalEnvironment; if (facts & ClassFacts.ClassWasDecorated) { - const operand = visitInvalidSuperProperty(node.operand); + const expression = visitInvalidSuperProperty(operand); return isPrefixUnaryExpression(node) ? - factory.updatePrefixUnaryExpression(node, operand) : - factory.updatePostfixUnaryExpression(node, operand); + factory.updatePrefixUnaryExpression(node, expression) : + factory.updatePostfixUnaryExpression(node, expression); } if (classConstructor && superClassReference) { let setterName: Expression | undefined; let getterName: Expression | undefined; - if (isPropertyAccessExpression(node.operand)) { - if (isIdentifier(node.operand.name)) { - getterName = setterName = factory.createStringLiteralFromNode(node.operand.name); + if (isPropertyAccessExpression(operand)) { + if (isIdentifier(operand.name)) { + getterName = setterName = factory.createStringLiteralFromNode(operand.name); } } else { - if (isSimpleInlineableExpression(node.operand.argumentExpression)) { - getterName = setterName = node.operand.argumentExpression; + if (isSimpleInlineableExpression(operand.argumentExpression)) { + getterName = setterName = operand.argumentExpression; } else { getterName = factory.createTempVariable(hoistVariableDeclaration); - setterName = factory.createAssignment(getterName, visitNode(node.operand.argumentExpression, visitor, isExpression)); + setterName = factory.createAssignment(getterName, visitNode(operand.argumentExpression, visitor, isExpression)); } } if (setterName && getterName) { let expression: Expression = factory.createReflectGetCall(superClassReference, getterName, classConstructor); - setTextRange(expression, node.operand); + setTextRange(expression, operand); const temp = valueIsDiscarded ? undefined : factory.createTempVariable(hoistVariableDeclaration); expression = expandPreOrPostfixIncrementOrDecrementExpression(factory, node, expression, hoistVariableDeclaration, temp); diff --git a/tests/baselines/reference/privateNameFieldUnaryMutation.js b/tests/baselines/reference/privateNameFieldUnaryMutation.js index 8d16a10861b38..2d7ece3c65079 100644 --- a/tests/baselines/reference/privateNameFieldUnaryMutation.js +++ b/tests/baselines/reference/privateNameFieldUnaryMutation.js @@ -12,6 +12,17 @@ class C { const d = --this.#test; for (this.#test = 0; this.#test < 10; ++this.#test) {} for (this.#test = 0; this.#test < 10; this.#test++) {} + + (this.#test)++; + (this.#test)--; + ++(this.#test); + --(this.#test); + const e = (this.#test)++; + const f = (this.#test)--; + const g = ++(this.#test); + const h = --(this.#test); + for (this.#test = 0; this.#test < 10; ++(this.#test)) {} + for (this.#test = 0; this.#test < 10; (this.#test)++) {} } test() { this.getInstance().#test++; @@ -24,6 +35,17 @@ class C { const d = --this.getInstance().#test; for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++this.getInstance().#test) {} for (this.getInstance().#test = 0; this.getInstance().#test < 10; this.getInstance().#test++) {} + + (this.getInstance().#test)++; + (this.getInstance().#test)--; + ++(this.getInstance().#test); + --(this.getInstance().#test); + const e = (this.getInstance().#test)++; + const f = (this.getInstance().#test)--; + const g = ++(this.getInstance().#test); + const h = --(this.getInstance().#test); + for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++(this.getInstance().#test)) {} + for (this.getInstance().#test = 0; this.getInstance().#test < 10; (this.getInstance().#test)++) {} } getInstance() { return new C(); } } @@ -44,7 +66,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function ( var _C_test; class C { constructor() { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z; _C_test.set(this, 24); __classPrivateFieldSet(this, _C_test, (_a = __classPrivateFieldGet(this, _C_test, "f"), _a++, _a), "f"); __classPrivateFieldSet(this, _C_test, (_b = __classPrivateFieldGet(this, _C_test, "f"), _b--, _b), "f"); @@ -56,9 +78,19 @@ class C { const d = __classPrivateFieldSet(this, _C_test, (_k = __classPrivateFieldGet(this, _C_test, "f"), --_k), "f"); for (__classPrivateFieldSet(this, _C_test, 0, "f"); __classPrivateFieldGet(this, _C_test, "f") < 10; __classPrivateFieldSet(this, _C_test, (_l = __classPrivateFieldGet(this, _C_test, "f"), ++_l), "f")) { } for (__classPrivateFieldSet(this, _C_test, 0, "f"); __classPrivateFieldGet(this, _C_test, "f") < 10; __classPrivateFieldSet(this, _C_test, (_m = __classPrivateFieldGet(this, _C_test, "f"), _m++, _m), "f")) { } + __classPrivateFieldSet(this, _C_test, (_o = __classPrivateFieldGet(this, _C_test, "f"), _o++, _o), "f"); + __classPrivateFieldSet(this, _C_test, (_p = __classPrivateFieldGet(this, _C_test, "f"), _p--, _p), "f"); + __classPrivateFieldSet(this, _C_test, (_q = __classPrivateFieldGet(this, _C_test, "f"), ++_q), "f"); + __classPrivateFieldSet(this, _C_test, (_r = __classPrivateFieldGet(this, _C_test, "f"), --_r), "f"); + const e = (__classPrivateFieldSet(this, _C_test, (_t = __classPrivateFieldGet(this, _C_test, "f"), _s = _t++, _t), "f"), _s); + const f = (__classPrivateFieldSet(this, _C_test, (_v = __classPrivateFieldGet(this, _C_test, "f"), _u = _v--, _v), "f"), _u); + const g = __classPrivateFieldSet(this, _C_test, (_w = __classPrivateFieldGet(this, _C_test, "f"), ++_w), "f"); + const h = __classPrivateFieldSet(this, _C_test, (_x = __classPrivateFieldGet(this, _C_test, "f"), --_x), "f"); + for (__classPrivateFieldSet(this, _C_test, 0, "f"); __classPrivateFieldGet(this, _C_test, "f") < 10; __classPrivateFieldSet(this, _C_test, (_y = __classPrivateFieldGet(this, _C_test, "f"), ++_y), "f")) { } + for (__classPrivateFieldSet(this, _C_test, 0, "f"); __classPrivateFieldGet(this, _C_test, "f") < 10; __classPrivateFieldSet(this, _C_test, (_z = __classPrivateFieldGet(this, _C_test, "f"), _z++, _z), "f")) { } } test() { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19; __classPrivateFieldSet(_a = this.getInstance(), _C_test, (_b = __classPrivateFieldGet(_a, _C_test, "f"), _b++, _b), "f"); __classPrivateFieldSet(_c = this.getInstance(), _C_test, (_d = __classPrivateFieldGet(_c, _C_test, "f"), _d--, _d), "f"); __classPrivateFieldSet(_e = this.getInstance(), _C_test, (_f = __classPrivateFieldGet(_e, _C_test, "f"), ++_f), "f"); @@ -69,6 +101,16 @@ class C { const d = __classPrivateFieldSet(_s = this.getInstance(), _C_test, (_t = __classPrivateFieldGet(_s, _C_test, "f"), --_t), "f"); for (__classPrivateFieldSet(this.getInstance(), _C_test, 0, "f"); __classPrivateFieldGet(this.getInstance(), _C_test, "f") < 10; __classPrivateFieldSet(_u = this.getInstance(), _C_test, (_v = __classPrivateFieldGet(_u, _C_test, "f"), ++_v), "f")) { } for (__classPrivateFieldSet(this.getInstance(), _C_test, 0, "f"); __classPrivateFieldGet(this.getInstance(), _C_test, "f") < 10; __classPrivateFieldSet(_w = this.getInstance(), _C_test, (_x = __classPrivateFieldGet(_w, _C_test, "f"), _x++, _x), "f")) { } + __classPrivateFieldSet(_y = this.getInstance(), _C_test, (_z = __classPrivateFieldGet(_y, _C_test, "f"), _z++, _z), "f"); + __classPrivateFieldSet(_0 = this.getInstance(), _C_test, (_1 = __classPrivateFieldGet(_0, _C_test, "f"), _1--, _1), "f"); + __classPrivateFieldSet(_2 = this.getInstance(), _C_test, (_3 = __classPrivateFieldGet(_2, _C_test, "f"), ++_3), "f"); + __classPrivateFieldSet(_4 = this.getInstance(), _C_test, (_5 = __classPrivateFieldGet(_4, _C_test, "f"), --_5), "f"); + const e = (__classPrivateFieldSet(_6 = this.getInstance(), _C_test, (_8 = __classPrivateFieldGet(_6, _C_test, "f"), _7 = _8++, _8), "f"), _7); + const f = (__classPrivateFieldSet(_9 = this.getInstance(), _C_test, (_11 = __classPrivateFieldGet(_9, _C_test, "f"), _10 = _11--, _11), "f"), _10); + const g = __classPrivateFieldSet(_12 = this.getInstance(), _C_test, (_13 = __classPrivateFieldGet(_12, _C_test, "f"), ++_13), "f"); + const h = __classPrivateFieldSet(_14 = this.getInstance(), _C_test, (_15 = __classPrivateFieldGet(_14, _C_test, "f"), --_15), "f"); + for (__classPrivateFieldSet(this.getInstance(), _C_test, 0, "f"); __classPrivateFieldGet(this.getInstance(), _C_test, "f") < 10; __classPrivateFieldSet(_16 = this.getInstance(), _C_test, (_17 = __classPrivateFieldGet(_16, _C_test, "f"), ++_17), "f")) { } + for (__classPrivateFieldSet(this.getInstance(), _C_test, 0, "f"); __classPrivateFieldGet(this.getInstance(), _C_test, "f") < 10; __classPrivateFieldSet(_18 = this.getInstance(), _C_test, (_19 = __classPrivateFieldGet(_18, _C_test, "f"), _19++, _19), "f")) { } } getInstance() { return new C(); } } diff --git a/tests/baselines/reference/privateNameFieldUnaryMutation.symbols b/tests/baselines/reference/privateNameFieldUnaryMutation.symbols index 8344e04c91189..f1481f4c8f0c4 100644 --- a/tests/baselines/reference/privateNameFieldUnaryMutation.symbols +++ b/tests/baselines/reference/privateNameFieldUnaryMutation.symbols @@ -56,93 +56,225 @@ class C { >this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) >this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + (this.#test)++; +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + (this.#test)--; +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + ++(this.#test); +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + --(this.#test); +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + const e = (this.#test)++; +>e : Symbol(e, Decl(privateNameFieldUnaryMutation.ts, 18, 13)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + const f = (this.#test)--; +>f : Symbol(f, Decl(privateNameFieldUnaryMutation.ts, 19, 13)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + const g = ++(this.#test); +>g : Symbol(g, Decl(privateNameFieldUnaryMutation.ts, 20, 13)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + const h = --(this.#test); +>h : Symbol(h, Decl(privateNameFieldUnaryMutation.ts, 21, 13)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + for (this.#test = 0; this.#test < 10; ++(this.#test)) {} +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) + + for (this.#test = 0; this.#test < 10; (this.#test)++) {} +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>this.#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) } test() { ->test : Symbol(C.test, Decl(privateNameFieldUnaryMutation.ts, 13, 5)) +>test : Symbol(C.test, Decl(privateNameFieldUnaryMutation.ts, 24, 5)) this.getInstance().#test++; >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) this.getInstance().#test--; >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) ++this.getInstance().#test; >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) --this.getInstance().#test; >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) const a = this.getInstance().#test++; ->a : Symbol(a, Decl(privateNameFieldUnaryMutation.ts, 19, 13)) +>a : Symbol(a, Decl(privateNameFieldUnaryMutation.ts, 30, 13)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) const b = this.getInstance().#test--; ->b : Symbol(b, Decl(privateNameFieldUnaryMutation.ts, 20, 13)) +>b : Symbol(b, Decl(privateNameFieldUnaryMutation.ts, 31, 13)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) const c = ++this.getInstance().#test; ->c : Symbol(c, Decl(privateNameFieldUnaryMutation.ts, 21, 13)) +>c : Symbol(c, Decl(privateNameFieldUnaryMutation.ts, 32, 13)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) const d = --this.getInstance().#test; ->d : Symbol(d, Decl(privateNameFieldUnaryMutation.ts, 22, 13)) +>d : Symbol(d, Decl(privateNameFieldUnaryMutation.ts, 33, 13)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++this.getInstance().#test) {} >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) for (this.getInstance().#test = 0; this.getInstance().#test < 10; this.getInstance().#test++) {} >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + (this.getInstance().#test)++; +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + (this.getInstance().#test)--; +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + ++(this.getInstance().#test); +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + --(this.getInstance().#test); +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + const e = (this.getInstance().#test)++; +>e : Symbol(e, Decl(privateNameFieldUnaryMutation.ts, 41, 13)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + const f = (this.getInstance().#test)--; +>f : Symbol(f, Decl(privateNameFieldUnaryMutation.ts, 42, 13)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + const g = ++(this.getInstance().#test); +>g : Symbol(g, Decl(privateNameFieldUnaryMutation.ts, 43, 13)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + const h = --(this.getInstance().#test); +>h : Symbol(h, Decl(privateNameFieldUnaryMutation.ts, 44, 13)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++(this.getInstance().#test)) {} +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) +>this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) + + for (this.getInstance().#test = 0; this.getInstance().#test < 10; (this.getInstance().#test)++) {} +>this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this.getInstance().#test : Symbol(C.#test, Decl(privateNameFieldUnaryMutation.ts, 0, 9)) ->this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>this.getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >this : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) } getInstance() { return new C(); } ->getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 25, 5)) +>getInstance : Symbol(C.getInstance, Decl(privateNameFieldUnaryMutation.ts, 47, 5)) >C : Symbol(C, Decl(privateNameFieldUnaryMutation.ts, 0, 0)) } diff --git a/tests/baselines/reference/privateNameFieldUnaryMutation.types b/tests/baselines/reference/privateNameFieldUnaryMutation.types index 4fc0d7805d95a..c0487a1c01dc6 100644 --- a/tests/baselines/reference/privateNameFieldUnaryMutation.types +++ b/tests/baselines/reference/privateNameFieldUnaryMutation.types @@ -75,6 +75,86 @@ class C { >10 : 10 >this.#test++ : number >this.#test : number +>this : this + + (this.#test)++; +>(this.#test)++ : number +>(this.#test) : number +>this.#test : number +>this : this + + (this.#test)--; +>(this.#test)-- : number +>(this.#test) : number +>this.#test : number +>this : this + + ++(this.#test); +>++(this.#test) : number +>(this.#test) : number +>this.#test : number +>this : this + + --(this.#test); +>--(this.#test) : number +>(this.#test) : number +>this.#test : number +>this : this + + const e = (this.#test)++; +>e : number +>(this.#test)++ : number +>(this.#test) : number +>this.#test : number +>this : this + + const f = (this.#test)--; +>f : number +>(this.#test)-- : number +>(this.#test) : number +>this.#test : number +>this : this + + const g = ++(this.#test); +>g : number +>++(this.#test) : number +>(this.#test) : number +>this.#test : number +>this : this + + const h = --(this.#test); +>h : number +>--(this.#test) : number +>(this.#test) : number +>this.#test : number +>this : this + + for (this.#test = 0; this.#test < 10; ++(this.#test)) {} +>this.#test = 0 : 0 +>this.#test : number +>this : this +>0 : 0 +>this.#test < 10 : boolean +>this.#test : number +>this : this +>10 : 10 +>++(this.#test) : number +>(this.#test) : number +>this.#test : number +>this : this + + for (this.#test = 0; this.#test < 10; (this.#test)++) {} +>this.#test = 0 : 0 +>this.#test : number +>this : this +>0 : 0 +>this.#test < 10 : boolean +>this.#test : number +>this : this +>10 : 10 +>(this.#test)++ : number +>(this.#test) : number +>this.#test : number >this : this } test() { @@ -190,6 +270,128 @@ class C { >this.getInstance() : C >this.getInstance : () => C >this : this +>getInstance : () => C + + (this.getInstance().#test)++; +>(this.getInstance().#test)++ : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + (this.getInstance().#test)--; +>(this.getInstance().#test)-- : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + ++(this.getInstance().#test); +>++(this.getInstance().#test) : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + --(this.getInstance().#test); +>--(this.getInstance().#test) : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + const e = (this.getInstance().#test)++; +>e : number +>(this.getInstance().#test)++ : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + const f = (this.getInstance().#test)--; +>f : number +>(this.getInstance().#test)-- : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + const g = ++(this.getInstance().#test); +>g : number +>++(this.getInstance().#test) : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + const h = --(this.getInstance().#test); +>h : number +>--(this.getInstance().#test) : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++(this.getInstance().#test)) {} +>this.getInstance().#test = 0 : 0 +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C +>0 : 0 +>this.getInstance().#test < 10 : boolean +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C +>10 : 10 +>++(this.getInstance().#test) : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C + + for (this.getInstance().#test = 0; this.getInstance().#test < 10; (this.getInstance().#test)++) {} +>this.getInstance().#test = 0 : 0 +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C +>0 : 0 +>this.getInstance().#test < 10 : boolean +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this +>getInstance : () => C +>10 : 10 +>(this.getInstance().#test)++ : number +>(this.getInstance().#test) : number +>this.getInstance().#test : number +>this.getInstance() : C +>this.getInstance : () => C +>this : this >getInstance : () => C } getInstance() { return new C(); } diff --git a/tests/cases/conformance/classes/members/privateNames/privateNameFieldUnaryMutation.ts b/tests/cases/conformance/classes/members/privateNames/privateNameFieldUnaryMutation.ts index a236a74737935..3365994100a2b 100644 --- a/tests/cases/conformance/classes/members/privateNames/privateNameFieldUnaryMutation.ts +++ b/tests/cases/conformance/classes/members/privateNames/privateNameFieldUnaryMutation.ts @@ -13,6 +13,17 @@ class C { const d = --this.#test; for (this.#test = 0; this.#test < 10; ++this.#test) {} for (this.#test = 0; this.#test < 10; this.#test++) {} + + (this.#test)++; + (this.#test)--; + ++(this.#test); + --(this.#test); + const e = (this.#test)++; + const f = (this.#test)--; + const g = ++(this.#test); + const h = --(this.#test); + for (this.#test = 0; this.#test < 10; ++(this.#test)) {} + for (this.#test = 0; this.#test < 10; (this.#test)++) {} } test() { this.getInstance().#test++; @@ -25,6 +36,17 @@ class C { const d = --this.getInstance().#test; for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++this.getInstance().#test) {} for (this.getInstance().#test = 0; this.getInstance().#test < 10; this.getInstance().#test++) {} + + (this.getInstance().#test)++; + (this.getInstance().#test)--; + ++(this.getInstance().#test); + --(this.getInstance().#test); + const e = (this.getInstance().#test)++; + const f = (this.getInstance().#test)--; + const g = ++(this.getInstance().#test); + const h = --(this.getInstance().#test); + for (this.getInstance().#test = 0; this.getInstance().#test < 10; ++(this.getInstance().#test)) {} + for (this.getInstance().#test = 0; this.getInstance().#test < 10; (this.getInstance().#test)++) {} } getInstance() { return new C(); } }