Skip to content

Commit 85ce832

Browse files
JLHwungnicolo-ribaudo
authored andcommitted
support private name in decorator member expr (#14666)
1 parent d855f9d commit 85ce832

5 files changed

Lines changed: 600 additions & 1 deletion

File tree

packages/babel-parser/src/parser/statement.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,15 @@ export default abstract class StatementParser extends ExpressionParser {
587587
while (this.eat(tt.dot)) {
588588
const node = this.startNodeAt(startPos, startLoc);
589589
node.object = expr;
590-
node.property = this.parseIdentifier(true);
590+
if (this.match(tt.privateName)) {
591+
this.classScope.usePrivateName(
592+
this.state.value,
593+
this.state.startLoc,
594+
);
595+
node.property = this.parsePrivateName();
596+
} else {
597+
node.property = this.parseIdentifier(true);
598+
}
591599
node.computed = false;
592600
expr = this.finishNode(node, "MemberExpression");
593601
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class C {
2+
static decFactory = () => () => {}
3+
static #decFactory = () => () => {}
4+
static dec = C.decFactory();
5+
static #dec = C.#decFactory();
6+
static self = C;
7+
static #self = C;
8+
@C.#dec @C.self.#dec @C.#self.dec @C.#self.#dec
9+
@C.#decFactory() @C.self.#decFactory() @C.#self.decFactory() @C.#self.#decFactory()
10+
m() {}
11+
}

0 commit comments

Comments
 (0)