Fix import & export bracket spacing (fixes #24)

This commit is contained in:
Dan Harper committed 2017-01-11 00:32:57 +00:00
1 parent 3f949907a0
commit 7c21dd037f
40 files changed
+164 -164

No files matched your search

+3 -3
View File
@@ -481,7 +481,7 @@ function genericPrintNoParens(path, options, print) {
if (!foundImportSpecifier) {
foundImportSpecifier = true;
parts.push(options.objectCurlySpacing ? "{ " : "{");
parts.push(options.bracketSpacing ? "{ " : "{");
}
}
@@ -491,7 +491,7 @@ function genericPrintNoParens(path, options, print) {
);
if (foundImportSpecifier) {
parts.push(options.objectCurlySpacing ? " }" : "}");
parts.push(options.bracketSpacing ? " }" : "}");
}
parts.push(" from ");
@@ -1789,7 +1789,7 @@ function printReturnType(path, print) {
function printExportDeclaration(path, options, print) {
var decl = path.getValue();
var parts = [ "export " ];
var shouldPrintSpaces = options.objectCurlySpacing;
var shouldPrintSpaces = options.bracketSpacing;
namedTypes.Declaration.assert(decl);
@@ -8,7 +8,7 @@ var b: string = test; // Error: number ~> string
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {test} from \"testmodule\";
import { test } from \"testmodule\";
var a: number = test;
var b: string = test; // Error: number ~> string"
@@ -6,6 +6,6 @@ import {doesntExist} from \"./SomeCSSFile.css\"; // Error: \`doestExist\` isn\'t
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {className} from \"./SomeCSSFile.css\";
import {doesntExist} from \"./SomeCSSFile.css\"; // Error: \`doestExist\` isn\'t an export"
import { className } from \"./SomeCSSFile.css\";
import { doesntExist } from \"./SomeCSSFile.css\"; // Error: \`doestExist\` isn\'t an export"
`;
@@ -16,7 +16,7 @@ import {numVal as numVal2} from \'3DoesntExist\'; // Error
/* @flow */
var m1 = require(\"1DoesntExist\");
import {numVal as numVal1} from \"1DoesntExist\";
import { numVal as numVal1 } from \"1DoesntExist\";
var a_1: number = m1.numVal;
var a_2: number = numVal1;
@@ -26,7 +26,7 @@ var a_2: number = numVal1;
// match the given module name string is picked.
var m2 = require(\"2DoesntExist\");
// Error
import {numVal as numVal2} from \"3DoesntExist\"; // Error"
import { numVal as numVal2 } from \"3DoesntExist\"; // Error"
`;
exports[`test Exists.js 1`] = `
@@ -31,7 +31,7 @@ var m1 = require(\"./1DoesntExist\");
var a_1: number = m1.numVal;
var a_2: string = m1.numVal;
// Error: number ~> string
import {numVal} from \"./1DoesntExist\";
import { numVal } from \"./1DoesntExist\";
var a_3: number = numVal;
var a_4: string = numVal;
// Error: number ~> string
@@ -41,7 +41,7 @@ var m2 = require(\"./2DoesntExist\");
var b_1: number = m2.numVal;
var b_2: string = m2.numVal;
// Error: number ~> string
import {numVal as numVal2} from \"./3DoesntExist\";
import { numVal as numVal2 } from \"./3DoesntExist\";
var b_3: number = numVal2;
var b_4: string = numVal2;
// Error: number ~> string
@@ -50,7 +50,7 @@ var m3 = require(\"4DoesntExist\");
var c_1: number = m3.numVal;
var c_2: string = m3.numVal;
// Error: number ~> string
import {numVal as numVal3} from \"5DoesntExist\";
import { numVal as numVal3 } from \"5DoesntExist\";
var c_3: number = numVal3;
var c_4: string = numVal3; // Error: number ~> string"
`;
@@ -8,7 +8,7 @@ import {name} from \"testproj\";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {name} from \"testproj\";
import { name } from \"testproj\";
(name: \"node_modules/testproj\");
(name: \"custom_resolve_dir/testproj\"); // Error: Resolve from node_modules first!"
@@ -8,7 +8,7 @@ import {name} from \"testproj2\";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {name} from \"testproj2\";
import { name } from \"testproj2\";
(name: \"node_modules/testproj2\");
// Error: Resolve from sibling \'custom_resolve_dir\' first!
@@ -95,5 +95,5 @@ import {_p} from \"./commonjs_export\";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* @flow */
import {_p} from \"./commonjs_export\";"
import { _p } from \"./commonjs_export\";"
`;
@@ -99,7 +99,7 @@ exports[`test test_relative.js 1`] = `
(foo(): boolean); // Error: either Implementation ~> boolean or Definition ~> boolean
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import {foo} from \"./A\";
import { foo } from \"./A\";
(foo(): boolean); // Error: either Implementation ~> boolean or Definition ~> boolean"
`;
@@ -178,7 +178,7 @@ declare export default class FooImpl { givesANum(): number }
// Regression test for https://github.com/facebook/flow/issues/511
//
// Default-exported class should also be available in local scope
declare export {FooImpl as Foo}
declare export { FooImpl as Foo }
declare export function getAFoo(): FooImpl;"
`;
@@ -335,7 +335,7 @@ declare export {
* @flow
*/
declare export {numberValue1, numberValue2 as numberValue2_renamed} from \"ES6_ExportFrom_Source1\""
declare export { numberValue1, numberValue2 as numberValue2_renamed } from \"ES6_ExportFrom_Source1\""
`;
exports[`test ES6_ExportFrom_Intermediary2.js 1`] = `
@@ -354,7 +354,7 @@ declare export {
* @flow
*/
declare export {numberValue1, numberValue2 as numberValue2_renamed2} from \"ES6_ExportFrom_Source2\""
declare export { numberValue1, numberValue2 as numberValue2_renamed2 } from \"ES6_ExportFrom_Source2\""
`;
exports[`test ES6_ExportFrom_Source1.js 1`] = `
@@ -427,10 +427,10 @@ var specifierNumber3 = 3;
var groupedSpecifierNumber1 = 1;
var groupedSpecifierNumber2 = 2;
declare export {specifierNumber1}
declare export {specifierNumber2 as specifierNumber2Renamed}
declare export {specifierNumber3}
declare export {groupedSpecifierNumber1, groupedSpecifierNumber2}
declare export { specifierNumber1 }
declare export { specifierNumber2 as specifierNumber2Renamed }
declare export { specifierNumber3 }
declare export { groupedSpecifierNumber1, groupedSpecifierNumber2 }
declare export function givesANumber(): number;
declare export class NumberGenerator { givesANumber(): number }
@@ -470,9 +470,9 @@ var specifierNumber5 = 2;
var groupedSpecifierNumber3 = 1;
var groupedSpecifierNumber4 = 2;
declare export {specifierNumber4}
declare export {specifierNumber5 as specifierNumber5Renamed}
declare export {groupedSpecifierNumber3, groupedSpecifierNumber4}
declare export { specifierNumber4 }
declare export { specifierNumber5 as specifierNumber5Renamed }
declare export { groupedSpecifierNumber3, groupedSpecifierNumber4 }
declare export function givesANumber2(): number;
declare export class NumberGenerator2 { givesANumber(): number }
@@ -871,13 +871,13 @@ import DefaultD from \"./D\";
// ================================================ //
// == CommonJS Clobbering Literal Exports -> ES6 == //
// ================================================ //
import {doesntExist1} from \"CommonJS_Clobbering_Lit\";
import { doesntExist1 } from \"CommonJS_Clobbering_Lit\";
// Error: Not an exported binding
import {numberValue1} from \"CommonJS_Clobbering_Lit\";
import { numberValue1 } from \"CommonJS_Clobbering_Lit\";
var c1: number = numberValue1;
var c2: string = numberValue1;
// Error: number ~> string
import {numberValue2 as numVal1} from \"CommonJS_Clobbering_Lit\";
import { numberValue2 as numVal1 } from \"CommonJS_Clobbering_Lit\";
var d1: number = numVal1;
var d2: string = numVal1;
// Error: number ~> string
@@ -899,13 +899,13 @@ var f4: string = CJS_Clobb_Lit_NS.default.numberValue5;
// ============================================== //
// == CommonJS Clobbering Class Exports -> ES6 == //
// ============================================== //
import {doesntExist2} from \"CommonJS_Clobbering_Class\";
import { doesntExist2 } from \"CommonJS_Clobbering_Class\";
// Error: Not an exported binding
// The following import should error because class statics are not turned into
// named exports for now. This avoids complexities with polymorphic static
// members (where the polymophism is defined on the class itself rather than the
// method).
import {staticNumber1, baseProp, childProp} from \"CommonJS_Clobbering_Class\";
import { staticNumber1, baseProp, childProp } from \"CommonJS_Clobbering_Class\";
// Error
import CJS_Clobb_Class from \"CommonJS_Clobbering_Class\";
new CJS_Clobb_Class();
@@ -928,13 +928,13 @@ var i3: string = new CJS_Clobb_Class_NS.default().instNumber2();
// =================================== //
// == CommonJS Named Exports -> ES6 == //
// =================================== //
import {doesntExist3} from \"CommonJS_Named\";
import { doesntExist3 } from \"CommonJS_Named\";
// Error: Not an exported binding
import {numberValue2} from \"CommonJS_Named\";
import { numberValue2 } from \"CommonJS_Named\";
var j1: number = numberValue2;
var j2: string = numberValue2;
// Error: number ~> string
import {numberValue3 as numVal3} from \"CommonJS_Named\";
import { numberValue3 as numVal3 } from \"CommonJS_Named\";
var k1: number = numVal3;
var k2: string = numVal3;
// Error: number ~> string
@@ -953,7 +953,7 @@ var m3: string = CJS_Named_NS.numberValue4;
//////////////////////////////
// == ES6 Default -> ES6 == //
//////////////////////////////
import {doesntExist4} from \"ES6_Default_AnonFunction1\";
import { doesntExist4 } from \"ES6_Default_AnonFunction1\";
// Error: Not an exported binding
import ES6_Def_AnonFunc1 from \"ES6_Default_AnonFunction1\";
var n1: number = ES6_Def_AnonFunc1();
@@ -972,49 +972,49 @@ var q2: string = new ES6_Def_NamedClass1().givesANum();
////////////////////////////
import doesntExist5 from \"ES6_Named1\";
// Error: Not an exported binding
import {specifierNumber1 as specifierNumber1_1} from \"ES6_Named1\";
import { specifierNumber1 as specifierNumber1_1 } from \"ES6_Named1\";
var r1: number = specifierNumber1_1;
var r2: string = specifierNumber1_1;
// Error: number ~> string
import {specifierNumber2Renamed} from \"ES6_Named1\";
import { specifierNumber2Renamed } from \"ES6_Named1\";
var s1: number = specifierNumber2Renamed;
var s2: string = specifierNumber2Renamed;
// Error: number ~> string
import {specifierNumber3 as specifierNumber3Renamed} from \"ES6_Named1\";
import { specifierNumber3 as specifierNumber3Renamed } from \"ES6_Named1\";
var t1: number = specifierNumber3Renamed;
var t2: string = specifierNumber3Renamed;
// Error: number ~> string
import {groupedSpecifierNumber1, groupedSpecifierNumber2} from \"ES6_Named1\";
import { groupedSpecifierNumber1, groupedSpecifierNumber2 } from \"ES6_Named1\";
var u1: number = groupedSpecifierNumber1;
var u2: number = groupedSpecifierNumber2;
var u3: string = groupedSpecifierNumber1;
// Error: number ~> string
var u4: string = groupedSpecifierNumber2;
// Error: number ~> string
import {givesANumber} from \"ES6_Named1\";
import { givesANumber } from \"ES6_Named1\";
var v1: number = givesANumber();
var v2: string = givesANumber();
// Error: number ~> string
import {NumberGenerator} from \"ES6_Named1\";
import { NumberGenerator } from \"ES6_Named1\";
var w1: number = new NumberGenerator().givesANumber();
var w2: string = new NumberGenerator().givesANumber();
// Error: number ~> string
import {varDeclNumber1, varDeclNumber2} from \"ES6_Named1\";
import { varDeclNumber1, varDeclNumber2 } from \"ES6_Named1\";
var x1: number = varDeclNumber1;
var x2: number = varDeclNumber2;
var x3: string = varDeclNumber1;
// Error: number ~> string
var x4: string = varDeclNumber2;
// Error: number ~> string
import {numberValue1 as numberValue4} from \"ES6_ExportFrom_Intermediary1\";
import { numberValue1 as numberValue4 } from \"ES6_ExportFrom_Intermediary1\";
var aa1: number = numberValue4;
var aa2: string = numberValue4;
// Error: number ~> string
import {numberValue2_renamed} from \"ES6_ExportFrom_Intermediary1\";
import { numberValue2_renamed } from \"ES6_ExportFrom_Intermediary1\";
var ab1: number = numberValue2_renamed;
var ab2: string = numberValue2_renamed;
// Error: number ~> string
import {numberValue1 as numberValue5} from \"ES6_ExportAllFrom_Intermediary1\";
import { numberValue1 as numberValue5 } from \"ES6_ExportAllFrom_Intermediary1\";
var ac1: number = numberValue5;
var ac2: string = numberValue5;
// Error: number ~> string
@@ -1087,7 +1087,7 @@ var ar2: string = numberValue7;
////////////////////////////////////////////////////////
// == ES6 Default+Named -> ES6 import Default+Named== //
////////////////////////////////////////////////////////
import defaultNum, {str as namedStr} from \"./ES6_DefaultAndNamed\";
import defaultNum, { str as namedStr } from \"./ES6_DefaultAndNamed\";
var as1: number = defaultNum;
var as2: string = defaultNum;
@@ -1105,12 +1105,12 @@ import \"./SideEffects\";
//////////////////////////////////////////////
import specifierNumber1 from \"ES6_Named1\";
// Error: Did you mean \`import {specifierNumber1} from ...\`?
import {specifierNumber} from \"ES6_Named1\";
import { specifierNumber } from \"ES6_Named1\";
// Error: Did you mean \`specifierNumber1\`?
///////////////////////////////////////////////////
// == Multi \`export *\` should combine exports == //
///////////////////////////////////////////////////
import {numberValue1 as numberValue8, numberValue2 as numberValue9} from \"./ES6_ExportAllFromMulti\";
import { numberValue1 as numberValue8, numberValue2 as numberValue9 } from \"./ES6_ExportAllFromMulti\";
var at1: number = numberValue8;
var at2: string = numberValue8;
@@ -32,9 +32,9 @@ import declare_module_exports from \"declare_module_exports\";
(declare_module_exports: string);
// Error: number ~> string
// Error: Has no named export \"str\"!
import {str} from \"declare_m_e_with_other_value_declares\";
import { str } from \"declare_m_e_with_other_value_declares\";
import type {str2} from \"declare_m_e_with_other_type_declares\";
import type { str2 } from \"declare_m_e_with_other_type_declares\";
(\"asdf\": str2);
(42: str2);
// Error: number ~> string
@@ -37,21 +37,21 @@ blah(0, 0);
////////////////////////////////////////////////////////////
// == Import Declared Type Alias From Declared Module == //
//////////////////////////////////////////////////////////
import type {baz} from \"ModuleAliasFoo\";
import {foo} from \"ModuleAliasFoo\";
import type { baz } from \"ModuleAliasFoo\";
import { foo } from \"ModuleAliasFoo\";
var k1: baz = 42;
var k2: baz = \"shab\";
// Error: string to int
var k3: toz = foo(k1);
// works
import type {toz} from \"ModuleAliasFoo\";
import type { toz } from \"ModuleAliasFoo\";
var k4: toz = foo(k1);
// works
//////////////////////////////////////////////////////////
// == Declared Module with exports prop (issue 880) == //
////////////////////////////////////////////////////////
import blah from \"foo\";
import type {Foo, Bar, Id} from \"foo\";
import type { Foo, Bar, Id } from \"foo\";
blah(0, 0);
@@ -232,7 +232,7 @@ import * as t from \"./jsAst\";
const b = t.builders;
import type {TypedNode} from \"./ast\";
import type { TypedNode } from \"./ast\";
function getBinaryOp(
op: \"plus\" | \"minus\" | \"divide\" | \"multiply\"
@@ -409,7 +409,7 @@ export {
* @flow
*/
export {numberValue1, numberValue2 as numberValue2_renamed} from \"ES6_ExportFrom_Source1\""
export { numberValue1, numberValue2 as numberValue2_renamed } from \"ES6_ExportFrom_Source1\""
`;
exports[`test ES6_ExportFrom_Intermediary2.js 1`] = `
@@ -428,7 +428,7 @@ export {
* @flow
*/
export {numberValue1, numberValue2 as numberValue2_renamed2} from \"ES6_ExportFrom_Source2\""
export { numberValue1, numberValue2 as numberValue2_renamed2 } from \"ES6_ExportFrom_Source2\""
`;
exports[`test ES6_ExportFrom_Source1.js 1`] = `
@@ -498,10 +498,10 @@ var specifierNumber3 = 3;
var groupedSpecifierNumber1 = 1;
var groupedSpecifierNumber2 = 2;
export {specifierNumber1}
export {specifierNumber2 as specifierNumber2Renamed}
export {specifierNumber3}
export {groupedSpecifierNumber1, groupedSpecifierNumber2}
export { specifierNumber1 }
export { specifierNumber2 as specifierNumber2Renamed }
export { specifierNumber3 }
export { groupedSpecifierNumber1, groupedSpecifierNumber2 }
export function givesANumber(): number {
return 42;
@@ -550,9 +550,9 @@ var specifierNumber5 = 2;
var groupedSpecifierNumber3 = 1;
var groupedSpecifierNumber4 = 2;
export {specifierNumber4}
export {specifierNumber5 as specifierNumber5Renamed}
export {groupedSpecifierNumber3, groupedSpecifierNumber4}
export { specifierNumber4 }
export { specifierNumber5 as specifierNumber5Renamed }
export { groupedSpecifierNumber3, groupedSpecifierNumber4 }
export function givesANumber2(): number {
return 42;
@@ -974,13 +974,13 @@ import DefaultD from \"./D\";
// ================================================ //
// == CommonJS Clobbering Literal Exports -> ES6 == //
// ================================================ //
import {doesntExist1} from \"CommonJS_Clobbering_Lit\";
import { doesntExist1 } from \"CommonJS_Clobbering_Lit\";
// Error: Not an exported binding
import {numberValue1} from \"CommonJS_Clobbering_Lit\";
import { numberValue1 } from \"CommonJS_Clobbering_Lit\";
var c1: number = numberValue1;
var c2: string = numberValue1;
// Error: number ~> string
import {numberValue2 as numVal1} from \"CommonJS_Clobbering_Lit\";
import { numberValue2 as numVal1 } from \"CommonJS_Clobbering_Lit\";
var d1: number = numVal1;
var d2: string = numVal1;
// Error: number ~> string
@@ -1002,13 +1002,13 @@ var f4: string = CJS_Clobb_Lit_NS.default.numberValue5;
// ============================================== //
// == CommonJS Clobbering Class Exports -> ES6 == //
// ============================================== //
import {doesntExist2} from \"CommonJS_Clobbering_Class\";
import { doesntExist2 } from \"CommonJS_Clobbering_Class\";
// Error: Not an exported binding
// The following import should error because class statics are not turned into
// named exports for now. This avoids complexities with polymorphic static
// members (where the polymophism is defined on the class itself rather than the
// method).
import {staticNumber1, baseProp, childProp} from \"CommonJS_Clobbering_Class\";
import { staticNumber1, baseProp, childProp } from \"CommonJS_Clobbering_Class\";
// Error
import CJS_Clobb_Class from \"CommonJS_Clobbering_Class\";
new CJS_Clobb_Class();
@@ -1031,13 +1031,13 @@ var i3: string = new CJS_Clobb_Class_NS.default().instNumber2();
// =================================== //
// == CommonJS Named Exports -> ES6 == //
// =================================== //
import {doesntExist3} from \"CommonJS_Named\";
import { doesntExist3 } from \"CommonJS_Named\";
// Error: Not an exported binding
import {numberValue2} from \"CommonJS_Named\";
import { numberValue2 } from \"CommonJS_Named\";
var j1: number = numberValue2;
var j2: string = numberValue2;
// Error: number ~> string
import {numberValue3 as numVal3} from \"CommonJS_Named\";
import { numberValue3 as numVal3 } from \"CommonJS_Named\";
var k1: number = numVal3;
var k2: string = numVal3;
// Error: number ~> string
@@ -1056,7 +1056,7 @@ var m3: string = CJS_Named_NS.numberValue4;
//////////////////////////////
// == ES6 Default -> ES6 == //
//////////////////////////////
import {doesntExist4} from \"ES6_Default_AnonFunction1\";
import { doesntExist4 } from \"ES6_Default_AnonFunction1\";
// Error: Not an exported binding
import ES6_Def_AnonFunc1 from \"ES6_Default_AnonFunction1\";
var n1: number = ES6_Def_AnonFunc1();
@@ -1079,57 +1079,57 @@ var q2: string = new ES6_Def_NamedClass1().givesANum();
////////////////////////////
import doesntExist5 from \"ES6_Named1\";
// Error: Not an exported binding
import {specifierNumber1 as specifierNumber1_1} from \"ES6_Named1\";
import { specifierNumber1 as specifierNumber1_1 } from \"ES6_Named1\";
var r1: number = specifierNumber1_1;
var r2: string = specifierNumber1_1;
// Error: number ~> string
import {specifierNumber2Renamed} from \"ES6_Named1\";
import { specifierNumber2Renamed } from \"ES6_Named1\";
var s1: number = specifierNumber2Renamed;
var s2: string = specifierNumber2Renamed;
// Error: number ~> string
import {specifierNumber3 as specifierNumber3Renamed} from \"ES6_Named1\";
import { specifierNumber3 as specifierNumber3Renamed } from \"ES6_Named1\";
var t1: number = specifierNumber3Renamed;
var t2: string = specifierNumber3Renamed;
// Error: number ~> string
import {groupedSpecifierNumber1, groupedSpecifierNumber2} from \"ES6_Named1\";
import { groupedSpecifierNumber1, groupedSpecifierNumber2 } from \"ES6_Named1\";
var u1: number = groupedSpecifierNumber1;
var u2: number = groupedSpecifierNumber2;
var u3: string = groupedSpecifierNumber1;
// Error: number ~> string
var u4: string = groupedSpecifierNumber2;
// Error: number ~> string
import {givesANumber} from \"ES6_Named1\";
import { givesANumber } from \"ES6_Named1\";
var v1: number = givesANumber();
var v2: string = givesANumber();
// Error: number ~> string
import {NumberGenerator} from \"ES6_Named1\";
import { NumberGenerator } from \"ES6_Named1\";
var w1: number = new NumberGenerator().givesANumber();
var w2: string = new NumberGenerator().givesANumber();
// Error: number ~> string
import {varDeclNumber1, varDeclNumber2} from \"ES6_Named1\";
import { varDeclNumber1, varDeclNumber2 } from \"ES6_Named1\";
var x1: number = varDeclNumber1;
var x2: number = varDeclNumber2;
var x3: string = varDeclNumber1;
// Error: number ~> string
var x4: string = varDeclNumber2;
// Error: number ~> string
import {destructuredObjNumber} from \"ES6_Named1\";
import { destructuredObjNumber } from \"ES6_Named1\";
var y1: number = destructuredObjNumber;
var y2: string = destructuredObjNumber;
// Error: number ~> string
import {destructuredArrNumber} from \"ES6_Named1\";
import { destructuredArrNumber } from \"ES6_Named1\";
var z1: number = destructuredArrNumber;
var z2: string = destructuredArrNumber;
// Error: number ~> string
import {numberValue1 as numberValue4} from \"ES6_ExportFrom_Intermediary1\";
import { numberValue1 as numberValue4 } from \"ES6_ExportFrom_Intermediary1\";
var aa1: number = numberValue4;
var aa2: string = numberValue4;
// Error: number ~> string
import {numberValue2_renamed} from \"ES6_ExportFrom_Intermediary1\";
import { numberValue2_renamed } from \"ES6_ExportFrom_Intermediary1\";
var ab1: number = numberValue2_renamed;
var ab2: string = numberValue2_renamed;
// Error: number ~> string
import {numberValue1 as numberValue5} from \"ES6_ExportAllFrom_Intermediary1\";
import { numberValue1 as numberValue5 } from \"ES6_ExportAllFrom_Intermediary1\";
var ac1: number = numberValue5;
var ac2: string = numberValue5;
// Error: number ~> string
@@ -1214,7 +1214,7 @@ var ar2: string = numberValue7;
////////////////////////////////////////////////////////
// == ES6 Default+Named -> ES6 import Default+Named== //
////////////////////////////////////////////////////////
import defaultNum, {str as namedStr} from \"./ES6_DefaultAndNamed\";
import defaultNum, { str as namedStr } from \"./ES6_DefaultAndNamed\";
var as1: number = defaultNum;
var as2: string = defaultNum;
@@ -1232,12 +1232,12 @@ import \"./SideEffects\";
//////////////////////////////////////////////
import specifierNumber1 from \"ES6_Named1\";
// Error: Did you mean \`import {specifierNumber1} from ...\`?
import {specifierNumber} from \"ES6_Named1\";
import { specifierNumber } from \"ES6_Named1\";
// Error: Did you mean \`specifierNumber1\`?
///////////////////////////////////////////////////
// == Multi \`export *\` should combine exports == //
///////////////////////////////////////////////////
import {numberValue1 as numberValue8, numberValue2 as numberValue9} from \"./ES6_ExportAllFromMulti\";
import { numberValue1 as numberValue8, numberValue2 as numberValue9 } from \"./ES6_ExportAllFromMulti\";
var at1: number = numberValue8;
var at2: string = numberValue8;
@@ -1248,7 +1248,7 @@ var at4: string = numberValue9;
/////////////////////////////////////////////////////////////
// == Vanilla \`import\` cannot import a type-only export == //
/////////////////////////////////////////////////////////////
import {typeAlias} from \"./ExportType\"; // Error: Cannot vanilla-import a type alias!"
import { typeAlias } from \"./ExportType\"; // Error: Cannot vanilla-import a type alias!"
`;
exports[`test test_imports_are_frozen.js 1`] = `
@@ -43,7 +43,7 @@ import {exports as nope} from \"ES\"; // Error: Not an export
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {num1, str1} from \"CJS_Named\";
import { num1, str1 } from \"CJS_Named\";
import CJS_Named from \"CJS_Named\";
(num1: number);
(num1: string);
@@ -54,39 +54,39 @@ import CJS_Named from \"CJS_Named\";
(CJS_Named: { num1: number, str1: string });
(CJS_Named: number);
// Error: Module ~> number
import {num2} from \"CJS_Clobbered\";
import { num2 } from \"CJS_Clobbered\";
// Error: No such export!
import {numExport} from \"CJS_Clobbered\";
import { numExport } from \"CJS_Clobbered\";
(numExport: number);
(numExport: string);
// Error: number ~> string
import type {numType} from \"CJS_Clobbered\";
import type { numType } from \"CJS_Clobbered\";
(42: numType);
(\"asdf\": numType);
// Error: string ~> number
import {strHidden} from \"ES\";
import { strHidden } from \"ES\";
// Error: No such export!
import {str3} from \"ES\";
import { str3 } from \"ES\";
(str3: string);
(str3: number);
// Error: string ~> number
import {num3} from \"ES\";
import { num3 } from \"ES\";
(num3: number);
(num3: string);
// Error: number ~> string
import {C} from \"ES\";
import type {C as CType} from \"ES\";
import { C } from \"ES\";
import type { C as CType } from \"ES\";
(new C(): C);
(42: C);
// Error: number ~> C
(new C(): CType);
(42: CType);
// Error: number ~> CType
import {T} from \"ES\";
import { T } from \"ES\";
// Error: T is a type import, not a value
import type {T as T2} from \"ES\";
import type { T as T2 } from \"ES\";
(42: T2);
(\"asdf\": T2);
// Error: string ~> number
import {exports as nope} from \"ES\"; // Error: Not an export"
import { exports as nope } from \"ES\"; // Error: Not an export"
`;
@@ -32,7 +32,7 @@ declare module \"CJS_Clobbered\" {
}
declare module \"ES\" {
declare var strHidden: string;
declare export {strHidden as str3}
declare export { strHidden as str3 }
declare export var num3: number;
declare export class C {}
declare export type T = number;
@@ -11,7 +11,7 @@ var d: number = source.str; // Error: num ~> string
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {source} from \"./test\";
import { source } from \"./test\";
var a: number = source.num;
var b: string = source.num;
@@ -11,7 +11,7 @@ var d: number = source.str; // Ignored error: num ~> string
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {source} from \"./test\";
import { source } from \"./test\";
var a: number = source.num;
var b: string = source.num;
@@ -50,7 +50,7 @@ var n: IFoo2 = {prop: 42}; // Error: {prop:number} ~> {prop:string}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* @flow */
import type {inlinedType1, standaloneType1, talias1, talias3} from \"./types_only\";
import type { inlinedType1, standaloneType1, talias1, talias3 } from \"./types_only\";
var a: inlinedType1 = 42;
var b: inlinedType1 = \"asdf\";
@@ -64,11 +64,11 @@ var f: talias1 = \"asdf\";
var g: talias3 = 42;
var h: talias3 = \"asdf\";
// Error: string ~> number
import type {talias4} from \"./cjs_with_types\";
import type { talias4 } from \"./cjs_with_types\";
var i: talias4 = 42;
var j: talias4 = \"asdf\";
// Error: string ~> number
import {IFoo, IFoo2} from \"./types_only\";
import { IFoo, IFoo2 } from \"./types_only\";
var k: IFoo = { prop: 42 };
var l: IFoo = { prop: \"asdf\" };
@@ -101,12 +101,12 @@ var a: inlinedType1 = 42;
var b: inlinedType1 = \"asdf\";
// Error: string ~> number
type standaloneType1 = number;
export type {standaloneType1}
export type { standaloneType1 }
type standaloneType2 = number;
export {standaloneType2}
export { standaloneType2 }
// Error: Missing \`type\` keyword
export type {talias1, talias2 as talias3, IFoo2} from \"./types_only2\"
export type { talias1, talias2 as talias3, IFoo2 } from \"./types_only2\"
export interface IFoo { prop: number }
"
@@ -50,7 +50,7 @@ things;
import thing from \"./helpers/exports_default.js\";
thing;
import {foo, bar as baz} from \"./helpers/exports_named.js\";
import { foo, bar as baz } from \"./helpers/exports_named.js\";
foo;
baz;
@@ -57,7 +57,7 @@ ParentFoo3;
let foo = require(\"./Parent\").ParentFoo.foo;
foo;
import type {Foo} from \"./types\";"
import type { Foo } from \"./types\";"
`;
exports[`test override.js 1`] = `
@@ -155,7 +155,7 @@ class ClassFoo2 {
}
}
export {ClassFoo2}
export { ClassFoo2 }
export var foo2Inst = new ClassFoo2();"
`;
@@ -262,7 +262,7 @@ function foo() {
/////////////////////////////////////////////////
import type ClassFoo1 from \"./ExportDefault_Class\";
import {foo1Inst} from \"./ExportDefault_Class\";
import { foo1Inst } from \"./ExportDefault_Class\";
var a1: ClassFoo1 = foo1Inst;
var a2: number = foo1Inst;
@@ -272,8 +272,8 @@ new ClassFoo1();
///////////////////////////////////////////////
// == Importing Class Type (Named Export) == //
///////////////////////////////////////////////
import type {ClassFoo2} from \"./ExportNamed_Class\";
import {foo2Inst} from \"./ExportNamed_Class\";
import type { ClassFoo2 } from \"./ExportNamed_Class\";
import { foo2Inst } from \"./ExportNamed_Class\";
var b1: ClassFoo2 = foo2Inst;
var b2: number = foo2Inst;
@@ -291,8 +291,8 @@ new ClassFoo3T();
///////////////////////////////////////////////////
// == Importing Class Type (CJS Named Export) == //
///////////////////////////////////////////////////
import type {ClassFoo4, ClassFoo5} from \"./ExportCJSNamed_Class\";
import {foo4Inst, foo5Inst} from \"./ExportCJSNamed_Class\";
import type { ClassFoo4, ClassFoo5 } from \"./ExportCJSNamed_Class\";
import { foo4Inst, foo5Inst } from \"./ExportCJSNamed_Class\";
var d1: ClassFoo4 = foo4Inst;
var d2: number = foo4Inst;
@@ -305,8 +305,8 @@ var d3: typeof ClassFoo5 = foo5Inst;
////////////////////////////////////////////
// == Import Type Alias (Named Export) == //
////////////////////////////////////////////
import type {AliasFoo3} from \"./ExportNamed_Alias\";
import {givesAFoo3Obj} from \"./ExportNamed_Alias\";
import type { AliasFoo3 } from \"./ExportNamed_Alias\";
import { givesAFoo3Obj } from \"./ExportNamed_Alias\";
var e1: AliasFoo3 = givesAFoo3Obj();
var e2: number = givesAFoo3Obj();
// Error: AliasFoo3 ~> number
@@ -321,7 +321,7 @@ var e3: typeof AliasFoo3 = givesAFoo3Obj();
///////////////////////////////////////////////////////
// == Import Type With Non-Alias Compatible Value == //
///////////////////////////////////////////////////////
import type {numValue} from \"./ExportsANumber\";
import type { numValue } from \"./ExportsANumber\";
// Error: Cannot import-type a number value
////////////////////////////////////////////////////////////////////////
// == Regression Test: https://github.com/facebook/flow/issues/359 == //
@@ -150,7 +150,7 @@ class ClassFoo2 {
}
}
export {ClassFoo2}"
export { ClassFoo2 }"
`;
exports[`test ExportNamed_Multi.js 1`] = `
@@ -299,8 +299,8 @@ new ClassFoo1T();
/////////////////////////////////////////////////
// == Importing Class Typeof (Named Export) == //
/////////////////////////////////////////////////
import typeof {ClassFoo2 as ClassFoo2T} from \"./ExportNamed_Class\";
import {ClassFoo2} from \"./ExportNamed_Class\";
import typeof { ClassFoo2 as ClassFoo2T } from \"./ExportNamed_Class\";
import { ClassFoo2 } from \"./ExportNamed_Class\";
var b1: ClassFoo2T = ClassFoo2;
var b2: ClassFoo2T = new ClassFoo2();
@@ -319,8 +319,8 @@ var c2: ClassFoo3T = new ClassFoo3();
/////////////////////////////////////////////////////
// == Importing Class Typeof (CJS Named Export) == //
/////////////////////////////////////////////////////
import typeof {ClassFoo4 as ClassFoo4T} from \"./ExportCJSNamed_Class\";
import {ClassFoo4} from \"./ExportCJSNamed_Class\";
import typeof { ClassFoo4 as ClassFoo4T } from \"./ExportCJSNamed_Class\";
import { ClassFoo4 } from \"./ExportCJSNamed_Class\";
var d1: ClassFoo4T = ClassFoo4;
var d2: ClassFoo4T = new ClassFoo4();
@@ -328,7 +328,7 @@ var d2: ClassFoo4T = new ClassFoo4();
//////////////////////////////////////////////
// == Import Typeof Alias (Named Export) == //
//////////////////////////////////////////////
import typeof {AliasFoo3} from \"./ExportNamed_Alias\";
import typeof { AliasFoo3 } from \"./ExportNamed_Alias\";
// Error: Can\'t \`import typeof\` type aliases!
////////////////////////////////////////////////
// == Import Typeof Alias (Default Export) == //
@@ -347,7 +347,7 @@ var f2: num_default = \"asdf\";
/////////////////////////////////////////////////////////////
// == Import Typeof With Non-Class Value (Named Export) == //
/////////////////////////////////////////////////////////////
import typeof {num as num_named} from \"./ExportNamed_Number\";
import typeof { num as num_named } from \"./ExportNamed_Number\";
var g1: num_named = 42;
var g2: num_named = \"asdf\";
@@ -363,7 +363,7 @@ var h2: num_cjs_default = \"asdf\";
/////////////////////////////////////////////////////////////////
// == Import Typeof With Non-Class Value (CJS Named Export) == //
/////////////////////////////////////////////////////////////////
import typeof {num as num_cjs_named} from \"./ExportCJSNamed_Number\";
import typeof { num as num_cjs_named } from \"./ExportCJSNamed_Number\";
var i1: num_cjs_named = 42;
var i2: num_cjs_named = \"asdf\";
@@ -25,7 +25,7 @@ module.exports = C;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
var A = require(\"./A\");
import type {B} from \"./B\";
import type { B } from \"./B\";
class C extends A {
b: B;
@@ -121,7 +121,7 @@ type M = { y: string } & J & { z: boolean }
function bar(m: M) { m.x; m.y; m.z; } // OK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import type {J} from \"./import\";
import type { J } from \"./import\";
interface K {}
interface L extends J, K { y: string }
@@ -11,7 +11,7 @@ export {Foo};
declare class Foo { bar?: () => string }
export {Foo}"
export { Foo }"
`;
exports[`test test.js 1`] = `
@@ -46,7 +46,7 @@ C.x;
new C().foo.x;
C.bar.x;
import {Foo} from \"./exports_optional_prop\";
import { Foo } from \"./exports_optional_prop\";
const foo = new Foo();
(foo.bar(): string);
// error, could be undefined
@@ -7,7 +7,7 @@ bar(5);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {bar} from \"foo\";
import { bar } from \"foo\";
bar(5);"
`;
@@ -17,7 +17,7 @@ import type { ObjectType } from \'./test\';
function subtypeCheck(x: Interface): ObjectType { return x; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
interface Interface { m(): void }
import type {ObjectType} from \"./test\";
import type { ObjectType } from \"./test\";
function subtypeCheck(x: Interface): ObjectType {
return x;
+1 -1
View File
@@ -108,7 +108,7 @@ var b: number = new react.Component(); // Error: ReactComponent ~> number
/* @flow */
import react from \"react\";
import {Component} from \"react\";
import { Component } from \"react\";
var a: Component<*, *, *> = new react.Component();
var b: number = new react.Component(); // Error: ReactComponent ~> number"
+11 -11
View File
@@ -79,7 +79,7 @@ module.exports = { C, D };
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {C, E} from \"./b0\";
import { C, E } from \"./b0\";
function foo() {
return C;
}
@@ -111,7 +111,7 @@ import { C, D } from \"./b2\";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {C, D} from \"./b2\";
import { C, D } from \"./b2\";
(new D(): C);"
`;
@@ -137,7 +137,7 @@ export function bar(props: { x: number }) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {foo} from \"./c1\";
import { foo } from \"./c1\";
export function bar(props: { x: number }) {
foo({ x: 0 });
@@ -153,7 +153,7 @@ bar({ x: 0 });
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {bar} from \"./c2\";
import { bar } from \"./c2\";
bar({ x: 0 });"
`;
@@ -180,7 +180,7 @@ export var y: A = x;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {A, x} from \"./d1\";
import { A, x } from \"./d1\";
export var y: A = x;"
`;
@@ -216,13 +216,13 @@ import { LIFE } from \'./e1\';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import type {Action} from \"./e1\";
import type { Action } from \"./e1\";
const f = (): Action => {
return { type: \"FOO\" };
};
import {LIFE} from \"./e1\";
import { LIFE } from \"./e1\";
(LIFE: 42);"
`;
@@ -284,7 +284,7 @@ module.exports = { D };
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {C} from \"./g1\";
import { C } from \"./g1\";
class D extends C {}
@@ -301,8 +301,8 @@ import { D } from \'./g2\';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {C} from \"./g1\";
import {D} from \"./g2\";
import { C } from \"./g1\";
import { D } from \"./g2\";
(new D(): C);"
`;
@@ -324,5 +324,5 @@ import type { Foo } from \'./h1\';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import type {Foo} from \"./h1\";"
import type { Foo } from \"./h1\";"
`;
@@ -11,7 +11,7 @@ module.exports = { C, D };
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {C, E} from \"./b0\";
import { C, E } from \"./b0\";
function foo() {
return C;
}
@@ -9,7 +9,7 @@ export function bar(props: { y: number }) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import {foo} from \"./c1\";
import { foo } from \"./c1\";
export function bar(props: { y: number }) {
foo({ y: 0 });
@@ -13,13 +13,13 @@ import { LIFE } from \'./e1\';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import type {Action} from \"./e1\";
import type { Action } from \"./e1\";
const f = (): Action => {
return { type: \"QUX\" };
};
import {LIFE} from \"./e1\";
import { LIFE } from \"./e1\";
(LIFE: 42);"
`;
@@ -30,13 +30,13 @@ import { LIFE } from \'./e1\';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// @flow
import type {Action} from \"./e1\";
import type { Action } from \"./e1\";
const f = (): Action => {
return { type: \"QUX\" };
};
import {LIFE} from \"./e1\";
import { LIFE } from \"./e1\";
(LIFE: 0);"
`;
@@ -2422,7 +2422,7 @@ function getTypeASTName(typeAST: Type): string {
}
// example 2
import type {ASTNode} from \"./ast_node\";
import type { ASTNode } from \"./ast_node\";
var Node = require(\"./node1\");
// Node = \"Node1\"
function foo(x: ASTNode) {
@@ -2696,7 +2696,7 @@ function handleStatus(status: Success | Error) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* @flow */
import {SUCCESS, ERROR} from \"./constants\";
import { SUCCESS, ERROR } from \"./constants\";
type Success = { type: typeof SUCCESS, message: string };
@@ -14,6 +14,6 @@ exports[`test qux.js 1`] = `
"import type { Foo } from \'./bar.js\';
({ x: \"\" }: Foo);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import type {Foo} from \"./bar.js\";
import type { Foo } from \"./bar.js\";
({ x: \"\" }: Foo);"
`;
@@ -227,9 +227,9 @@ class B3<X> extends A3<X> {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Check that imports are handled properly with this types
import {A1} from \"./export\";
import type {A2} from \"./export\";
import {A3} from \"./export\";
import { A1 } from \"./export\";
import type { A2 } from \"./export\";
import { A3 } from \"./export\";
class B1 extends A1 {
foo(): B1 {
@@ -29,7 +29,7 @@ module.exports = printBinaryExpression;
* This source code is licensed under the license found in the LICENSE file in
* the root directory of this source tree.
*/
import type {BinaryExpression} from \"./types\";
import type { BinaryExpression } from \"./types\";
function printBinaryExpression(node: BinaryExpression) {
console.log(node);
@@ -50,7 +50,7 @@ var duck: string = \"quack\";
*/
import typeof A from \"./A.js\";
import type {Foo, Bar as Baz} from \"./A.js\";
import type { Foo, Bar as Baz } from \"./A.js\";
type duck = { quack(): string };
@@ -90,7 +90,7 @@ var b: Foo = new A.Foo();
*/
import typeof A from \"./A.js\";
import type {Foo, Bar as Baz} from \"./A.js\";
import type { Foo, Bar as Baz } from \"./A.js\";
var A = require(\"./A.js\");
var Foo = A.Foo;
@@ -131,7 +131,7 @@ var a: Foo = new actualA.Foo();
*/
import typeof A from \"./A.js\";
import type {Foo, Bar as Baz} from \"./A.js\";
import type { Foo, Bar as Baz } from \"./A.js\";
var actualA = require(\"./A.js\");
@@ -62,7 +62,7 @@ export default class A {
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import {B, C} from \"./issue-824-helper\";
import { B, C } from \"./issue-824-helper\";
type K = B | C;
@@ -150,7 +150,7 @@ function node(content: ?Foobar | String | Array<String>) {
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* @flow */
import type {Foobar} from \"./issue-1455-helper\";
import type { Foobar } from \"./issue-1455-helper\";
function create(content: ?Foobar | String | Array<String>) {}