diff --git a/packages/babel/src/generation/generators/flow.js b/packages/babel/src/generation/generators/flow.js index 2721a84bfb..e750a6dc1f 100644 --- a/packages/babel/src/generation/generators/flow.js +++ b/packages/babel/src/generation/generators/flow.js @@ -26,6 +26,14 @@ export function BooleanTypeAnnotation(node) { this.push("bool"); } +/** + * Prints BooleanLiteralTypeAnnotation. + */ + +export function BooleanLiteralTypeAnnotation(node) { + this.push(node.value ? "true" : "false"); +} + /** * Prints DeclareClass, prints node. */ diff --git a/packages/babel/src/types/definitions/flow.js b/packages/babel/src/types/definitions/flow.js index 4380f13cf6..2cfcc3e3e1 100644 --- a/packages/babel/src/types/definitions/flow.js +++ b/packages/babel/src/types/definitions/flow.js @@ -13,6 +13,10 @@ define("BooleanTypeAnnotation", { aliases: ["Flow", "FlowBaseAnnotation"] }); +define("BooleanLiteralTypeAnnotation", { + aliases: ["Flow"] +}); + define("ClassImplements", { visitor: ["id", "typeParameters"], aliases: ["Flow"] diff --git a/packages/babel/test/fixtures/generation/flow/boolean-literal-types/actual.js b/packages/babel/test/fixtures/generation/flow/boolean-literal-types/actual.js new file mode 100644 index 0000000000..8573e6b69e --- /dev/null +++ b/packages/babel/test/fixtures/generation/flow/boolean-literal-types/actual.js @@ -0,0 +1,2 @@ +var foo: true; +var bar: false; diff --git a/packages/babel/test/fixtures/generation/flow/boolean-literal-types/expected.js b/packages/babel/test/fixtures/generation/flow/boolean-literal-types/expected.js new file mode 100644 index 0000000000..8573e6b69e --- /dev/null +++ b/packages/babel/test/fixtures/generation/flow/boolean-literal-types/expected.js @@ -0,0 +1,2 @@ +var foo: true; +var bar: false; diff --git a/packages/babylon/src/plugins/flow.js b/packages/babylon/src/plugins/flow.js index 52df63b5c0..4eb8851c73 100644 --- a/packages/babylon/src/plugins/flow.js +++ b/packages/babylon/src/plugins/flow.js @@ -493,6 +493,11 @@ pp.flowParsePrimaryType = function () { this.next(); return this.finishNode(node, "StringLiteralTypeAnnotation"); + case tt._true: case tt._false: + node.value = this.match(tt._true) + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case tt.num: node.rawValue = node.value = this.state.value; node.raw = this.input.slice(this.state.start, this.state.end); diff --git a/packages/babylon/test/fixtures/flow/literal-types/boolean-false/actual.js b/packages/babylon/test/fixtures/flow/literal-types/boolean-false/actual.js new file mode 100644 index 0000000000..ffc1f7ecb6 --- /dev/null +++ b/packages/babylon/test/fixtures/flow/literal-types/boolean-false/actual.js @@ -0,0 +1 @@ +var foo: true diff --git a/packages/babylon/test/fixtures/flow/literal-types/boolean-true/actual.js b/packages/babylon/test/fixtures/flow/literal-types/boolean-true/actual.js new file mode 100644 index 0000000000..146ef4bc4d --- /dev/null +++ b/packages/babylon/test/fixtures/flow/literal-types/boolean-true/actual.js @@ -0,0 +1 @@ +var foo: false diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/4/actual.js b/packages/babylon/test/fixtures/flow/literal-types/number-binary/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/4/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/number-binary/actual.js diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/4/expected.json b/packages/babylon/test/fixtures/flow/literal-types/number-binary/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/4/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/number-binary/expected.json diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/2/actual.js b/packages/babylon/test/fixtures/flow/literal-types/number-float/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/2/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/number-float/actual.js diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/2/expected.json b/packages/babylon/test/fixtures/flow/literal-types/number-float/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/2/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/number-float/expected.json diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/1/actual.js b/packages/babylon/test/fixtures/flow/literal-types/number-integer/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/1/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/number-integer/actual.js diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/1/expected.json b/packages/babylon/test/fixtures/flow/literal-types/number-integer/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/1/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/number-integer/expected.json diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/5/actual.js b/packages/babylon/test/fixtures/flow/literal-types/number-octal-2/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/5/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/number-octal-2/actual.js diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/5/expected.json b/packages/babylon/test/fixtures/flow/literal-types/number-octal-2/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/5/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/number-octal-2/expected.json diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/3/actual.js b/packages/babylon/test/fixtures/flow/literal-types/number-octal/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/3/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/number-octal/actual.js diff --git a/packages/babylon/test/fixtures/flow/number-literal-types/3/expected.json b/packages/babylon/test/fixtures/flow/literal-types/number-octal/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/number-literal-types/3/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/number-octal/expected.json diff --git a/packages/babylon/test/fixtures/flow/string-literal-types/1/actual.js b/packages/babylon/test/fixtures/flow/literal-types/string-double/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/string-literal-types/1/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/string-double/actual.js diff --git a/packages/babylon/test/fixtures/flow/string-literal-types/1/expected.json b/packages/babylon/test/fixtures/flow/literal-types/string-double/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/string-literal-types/1/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/string-double/expected.json diff --git a/packages/babylon/test/fixtures/flow/string-literal-types/2/actual.js b/packages/babylon/test/fixtures/flow/literal-types/string-single/actual.js similarity index 100% rename from packages/babylon/test/fixtures/flow/string-literal-types/2/actual.js rename to packages/babylon/test/fixtures/flow/literal-types/string-single/actual.js diff --git a/packages/babylon/test/fixtures/flow/string-literal-types/2/expected.json b/packages/babylon/test/fixtures/flow/literal-types/string-single/expected.json similarity index 100% rename from packages/babylon/test/fixtures/flow/string-literal-types/2/expected.json rename to packages/babylon/test/fixtures/flow/literal-types/string-single/expected.json