From 2a43dd28bcaac753ded909cb65aa7207989fc412 Mon Sep 17 00:00:00 2001 From: Greg Price Date: Tue, 26 Apr 2022 20:56:42 -0700 Subject: [PATCH] Add "implements" to DeclareClass, for Flow `declare class` This is already produced by flow-parser to support Flow's `declare class A implements B {}`. At the moment it's ignored by the Recast printer, but I've sent a PR to fix that, along with other features of `declare class`: https://github.com/benjamn/recast/pull/1090 --- def/flow.ts | 3 ++- gen/builders.ts | 1 + gen/namedTypes.ts | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/def/flow.ts b/def/flow.ts index 7df97cf8..98979328 100644 --- a/def/flow.ts +++ b/def/flow.ts @@ -358,7 +358,8 @@ export default function (fork: Fork) { def("DeclareClass") .bases("InterfaceDeclaration") - .build("id"); + .build("id") + .field("implements", [def("ClassImplements")], defaults.emptyArray); def("DeclareModule") .bases("Statement") diff --git a/gen/builders.ts b/gen/builders.ts index 3f5254ba..b8d5e646 100644 --- a/gen/builders.ts +++ b/gen/builders.ts @@ -2294,6 +2294,7 @@ export interface DeclareClassBuilder { comments?: K.CommentKind[] | null, extends: K.InterfaceExtendsKind[], id: K.IdentifierKind, + implements?: K.ClassImplementsKind[], loc?: K.SourceLocationKind | null, typeParameters?: K.TypeParameterDeclarationKind | null } diff --git a/gen/namedTypes.ts b/gen/namedTypes.ts index a520ef45..4f6a8cf8 100644 --- a/gen/namedTypes.ts +++ b/gen/namedTypes.ts @@ -1055,6 +1055,7 @@ export namespace namedTypes { export interface DeclareClass extends Omit { type: "DeclareClass"; + implements?: K.ClassImplementsKind[]; } export interface DeclareModule extends Omit {