Fix support for Flow's DeclareClass type parameters (#9459)

This commit is contained in:
Ilya Lesik 2019-02-06 17:18:07 +03:00 committed by Brian Ng
parent 07b0f22a3f
commit 738060ebfa
2 changed files with 33 additions and 1 deletions

View File

@ -72,7 +72,7 @@ defineType("ClassImplements", {
},
});
defineInterfaceishType("DeclareClass", "TypeParameterInstantiation");
defineInterfaceishType("DeclareClass");
defineType("DeclareFunction", {
visitor: ["id"],

View File

@ -0,0 +1,32 @@
import * as t from "../../..";
describe("builders", function() {
describe("flow", function() {
describe("declareClass", function() {
it("accept TypeParameterDeclaration as typeParameters", function() {
const typeParameter = t.typeParameter(null, null, null);
typeParameter.name = "T";
const declaredClass = t.declareClass(
t.identifier("A"),
t.typeParameterDeclaration([typeParameter]),
[],
t.objectTypeAnnotation([], [], [], []),
);
expect(t.isDeclareClass(declaredClass)).toBe(true);
});
it("not accept typeParameterInstantiation as typeParameters", function() {
expect(() =>
t.declareClass(
t.identifier("A"),
t.typeParameterInstantiation([
t.genericTypeAnnotation(t.identifier("T")),
]),
[],
t.objectTypeAnnotation([], [], [], []),
),
).toThrow(Error);
});
});
});
});