Parse class static block (#12079)

Co-authored-by: Brian Ng <bng412@gmail.com>
This commit is contained in:
Huáng Jùnliàng
2020-10-06 12:42:53 -04:00
committed by Nicolò Ribaudo
parent 6830c90ac9
commit 3ccca88178
66 changed files with 1823 additions and 46 deletions

View File

@@ -2096,8 +2096,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
parseClassMember(
classBody: N.ClassBody,
member: any,
state: { hadConstructor: boolean },
constructorAllowsSuper: boolean,
state: N.ParseClassMemberState,
): void {
const pos = this.state.start;
if (this.isContextual("declare")) {
@@ -2109,7 +2108,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
member.declare = true;
}
super.parseClassMember(classBody, member, state, constructorAllowsSuper);
super.parseClassMember(classBody, member, state);
if (member.declare) {
if (

View File

@@ -2102,8 +2102,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
parseClassMember(
classBody: N.ClassBody,
member: any,
state: { hadConstructor: boolean },
constructorAllowsSuper: boolean,
state: N.ParseClassMemberState,
): void {
this.tsParseModifiers(member, ["declare"]);
const accessibility = this.parseAccessModifier();
@@ -2111,12 +2110,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
this.tsParseModifiers(member, ["declare"]);
const callParseClassMember = () => {
super.parseClassMember(
classBody,
member,
state,
constructorAllowsSuper,
);
super.parseClassMember(classBody, member, state);
};
if (member.declare) {
this.tsInDeclareContext(callParseClassMember);
@@ -2128,9 +2122,8 @@ export default (superClass: Class<Parser>): Class<Parser> =>
parseClassMemberWithIsStatic(
classBody: N.ClassBody,
member: N.ClassMember | N.TsIndexSignature,
state: { hadConstructor: boolean },
state: N.ParseClassMemberState,
isStatic: boolean,
constructorAllowsSuper: boolean,
): void {
this.tsParseModifiers(member, ["abstract", "readonly", "declare"]);
@@ -2160,13 +2153,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
/*:: invariant(member.type !== "TSIndexSignature") */
super.parseClassMemberWithIsStatic(
classBody,
member,
state,
isStatic,
constructorAllowsSuper,
);
super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
}
parsePostMemberNameModifiers(