Skip to content

Commit 73cf46d

Browse files
authored
fix(transform): correct chained optional expression with computed properties (#193)
input ``` a ?. b [ c ] a ?. b () [ c ] ``` before ``` { type: "MemberExpression" } { type: "MemberExpression" } ``` after ``` { type: "OptionalMemberExpression" } { type: "OptionalMemberExpression" } ```
1 parent 12986f0 commit 73cf46d

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/transform.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -170,20 +170,18 @@ export const transform = (
170170
}
171171
case 'KeyedRead': {
172172
const { obj, key } = node as ng.KeyedRead;
173-
const tObj = _t<b.Expression>(obj);
174173
const tKey = _t<b.Expression>(key);
175-
return _c<b.MemberExpression>(
176-
'MemberExpression',
174+
return _transformReceiverAndName(
175+
obj,
176+
tKey,
177177
{
178178
computed: true,
179-
object: tObj,
180-
property: tKey,
179+
optional: false,
181180
},
182181
{
183-
start: _getOuterStart(tObj),
184182
end: node.span.end, // ]
183+
hasParentParens: isInParentParens,
185184
},
186-
{ hasParentParens: isInParentParens },
187185
);
188186
}
189187
case 'LiteralArray': {

tests/trasnform.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ describe.each`
3636
${'FunctionCall'} | ${'CallExpression'} | ${' ( a ) ( 1 , 2 ) '} | ${true} | ${true} | ${true} | ${true}
3737
${'FunctionCall'} | ${'CallExpression'} | ${' a ( 1 ) ( 2 ) '} | ${true} | ${true} | ${true} | ${true}
3838
${'KeyedRead'} | ${'MemberExpression'} | ${' a [ b ] '} | ${true} | ${true} | ${true} | ${true}
39+
${'KeyedRead'} | ${'OptionalMemberExpression'} | ${' a ?. b [ c ] '} | ${true} | ${true} | ${true} | ${true}
40+
${'KeyedRead'} | ${'OptionalMemberExpression'} | ${' a ?. b () [ c ] '} | ${true} | ${true} | ${true} | ${true}
3941
${'KeyedWrite'} | ${'AssignmentExpression'} | ${' a [ b ] = 1 '} | ${true} | ${true} | ${true} | ${true}
4042
${'LiteralArray'} | ${'ArrayExpression'} | ${' [ 1 ] '} | ${true} | ${true} | ${true} | ${true}
4143
${'LiteralMap'} | ${'ObjectExpression'} | ${' { "a" : 1 } '} | ${true} | ${true} | ${true} | ${true}

0 commit comments

Comments
 (0)