@@ -1188,7 +1188,7 @@ namespace ts {
11881188 // @api
11891189 function createDecorator ( expression : Expression ) {
11901190 const node = createBaseNode < Decorator > ( SyntaxKind . Decorator ) ;
1191- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
1191+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
11921192 node . transformFlags |=
11931193 propagateChildFlags ( node . expression ) |
11941194 TransformFlags . ContainsTypeScript |
@@ -2325,7 +2325,7 @@ namespace ts {
23252325 // @api
23262326 function createPropertyAccessExpression ( expression : Expression , name : string | Identifier | PrivateIdentifier ) {
23272327 const node = createBaseExpression < PropertyAccessExpression > ( SyntaxKind . PropertyAccessExpression ) ;
2328- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
2328+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
23292329 node . name = asName ( name ) ;
23302330 node . transformFlags =
23312331 propagateChildFlags ( node . expression ) |
@@ -2357,7 +2357,7 @@ namespace ts {
23572357 function createPropertyAccessChain ( expression : Expression , questionDotToken : QuestionDotToken | undefined , name : string | Identifier | PrivateIdentifier ) {
23582358 const node = createBaseExpression < PropertyAccessChain > ( SyntaxKind . PropertyAccessExpression ) ;
23592359 node . flags |= NodeFlags . OptionalChain ;
2360- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
2360+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ true ) ;
23612361 node . questionDotToken = questionDotToken ;
23622362 node . name = asName ( name ) ;
23632363 node . transformFlags |=
@@ -2385,7 +2385,7 @@ namespace ts {
23852385 // @api
23862386 function createElementAccessExpression ( expression : Expression , index : number | Expression ) {
23872387 const node = createBaseExpression < ElementAccessExpression > ( SyntaxKind . ElementAccessExpression ) ;
2388- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
2388+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
23892389 node . argumentExpression = asExpression ( index ) ;
23902390 node . transformFlags |=
23912391 propagateChildFlags ( node . expression ) |
@@ -2415,7 +2415,7 @@ namespace ts {
24152415 function createElementAccessChain ( expression : Expression , questionDotToken : QuestionDotToken | undefined , index : number | Expression ) {
24162416 const node = createBaseExpression < ElementAccessChain > ( SyntaxKind . ElementAccessExpression ) ;
24172417 node . flags |= NodeFlags . OptionalChain ;
2418- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
2418+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ true ) ;
24192419 node . questionDotToken = questionDotToken ;
24202420 node . argumentExpression = asExpression ( index ) ;
24212421 node . transformFlags |=
@@ -2441,7 +2441,7 @@ namespace ts {
24412441 // @api
24422442 function createCallExpression ( expression : Expression , typeArguments : readonly TypeNode [ ] | undefined , argumentsArray : readonly Expression [ ] | undefined ) {
24432443 const node = createBaseExpression < CallExpression > ( SyntaxKind . CallExpression ) ;
2444- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
2444+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
24452445 node . typeArguments = asNodeArray ( typeArguments ) ;
24462446 node . arguments = parenthesizerRules ( ) . parenthesizeExpressionsOfCommaDelimitedList ( createNodeArray ( argumentsArray ) ) ;
24472447 node . transformFlags |=
@@ -2476,7 +2476,7 @@ namespace ts {
24762476 function createCallChain ( expression : Expression , questionDotToken : QuestionDotToken | undefined , typeArguments : readonly TypeNode [ ] | undefined , argumentsArray : readonly Expression [ ] | undefined ) {
24772477 const node = createBaseExpression < CallChain > ( SyntaxKind . CallExpression ) ;
24782478 node . flags |= NodeFlags . OptionalChain ;
2479- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
2479+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ true ) ;
24802480 node . questionDotToken = questionDotToken ;
24812481 node . typeArguments = asNodeArray ( typeArguments ) ;
24822482 node . arguments = parenthesizerRules ( ) . parenthesizeExpressionsOfCommaDelimitedList ( createNodeArray ( argumentsArray ) ) ;
@@ -2535,7 +2535,7 @@ namespace ts {
25352535 // @api
25362536 function createTaggedTemplateExpression ( tag : Expression , typeArguments : readonly TypeNode [ ] | undefined , template : TemplateLiteral ) {
25372537 const node = createBaseExpression < TaggedTemplateExpression > ( SyntaxKind . TaggedTemplateExpression ) ;
2538- node . tag = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( tag ) ;
2538+ node . tag = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( tag , /*optionalChain*/ false ) ;
25392539 node . typeArguments = asNodeArray ( typeArguments ) ;
25402540 node . template = template ;
25412541 node . transformFlags |=
@@ -3085,7 +3085,7 @@ namespace ts {
30853085 // @api
30863086 function createExpressionWithTypeArguments ( expression : Expression , typeArguments : readonly TypeNode [ ] | undefined ) {
30873087 const node = createBaseNode < ExpressionWithTypeArguments > ( SyntaxKind . ExpressionWithTypeArguments ) ;
3088- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
3088+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
30893089 node . typeArguments = typeArguments && parenthesizerRules ( ) . parenthesizeTypeArguments ( typeArguments ) ;
30903090 node . transformFlags |=
30913091 propagateChildFlags ( node . expression ) |
@@ -3125,7 +3125,7 @@ namespace ts {
31253125 // @api
31263126 function createNonNullExpression ( expression : Expression ) {
31273127 const node = createBaseExpression < NonNullExpression > ( SyntaxKind . NonNullExpression ) ;
3128- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
3128+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
31293129 node . transformFlags |=
31303130 propagateChildFlags ( node . expression ) |
31313131 TransformFlags . ContainsTypeScript ;
@@ -3146,7 +3146,7 @@ namespace ts {
31463146 function createNonNullChain ( expression : Expression ) {
31473147 const node = createBaseExpression < NonNullChain > ( SyntaxKind . NonNullExpression ) ;
31483148 node . flags |= NodeFlags . OptionalChain ;
3149- node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
3149+ node . expression = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ true ) ;
31503150 node . transformFlags |=
31513151 propagateChildFlags ( node . expression ) |
31523152 TransformFlags . ContainsTypeScript ;
@@ -5824,7 +5824,7 @@ namespace ts {
58245824 }
58255825 else if ( getEmitFlags ( callee ) & EmitFlags . HelperName ) {
58265826 thisArg = createVoidZero ( ) ;
5827- target = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( callee ) ;
5827+ target = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( callee , /*optionalChain*/ false ) ;
58285828 }
58295829 else if ( isPropertyAccessExpression ( callee ) ) {
58305830 if ( shouldBeCapturedInTempVariable ( callee . expression , cacheIdentifiers ) ) {
@@ -5871,7 +5871,7 @@ namespace ts {
58715871 else {
58725872 // for `a()` target is `a` and thisArg is `void 0`
58735873 thisArg = createVoidZero ( ) ;
5874- target = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression ) ;
5874+ target = parenthesizerRules ( ) . parenthesizeLeftSideOfAccess ( expression , /*optionalChain*/ false ) ;
58755875 }
58765876
58775877 return { target, thisArg } ;
0 commit comments