From 4ca35ef8b9a3570db699fdefe352ed7acef92895 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Wed, 5 Dec 2018 12:30:30 -0800 Subject: [PATCH] Fix running flow on travis and update flow (#9128) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix running flow on travis and update flow - ensure bootstrap is run before running flow as we need some generated files for correctly doing typechecks - ensure that we only ignore the build directory inside the babel folder as currently we ignore everything because travis checks out into ‘/home/travis/build/’ * Fix all flow errors --- .flowconfig | 13 ++++++------- .travis.yml | 15 ++++++++------- package.json | 2 +- packages/babel-core/src/config/caching.js | 2 ++ .../babel-core/src/config/validation/options.js | 2 +- packages/babel-parser/src/parser/expression.js | 2 +- packages/babel-parser/src/parser/statement.js | 6 +++--- packages/babel-parser/src/plugins/estree.js | 2 +- packages/babel-parser/src/plugins/flow.js | 4 +++- packages/babel-parser/src/tokenizer/state.js | 5 ++++- packages/babel-template/src/index.js | 10 +++++----- yarn.lock | 8 ++++---- 12 files changed, 39 insertions(+), 32 deletions(-) diff --git a/.flowconfig b/.flowconfig index 9aacaf35ebdd..694811e55964 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,11 +1,10 @@ [ignore] -.*/build/.* -.*/packages/.*/lib -.*/packages/.*/test -.*/codemods/.*/lib -.*/codemods/.*/test -.*/node_modules/conventional-changelog-core/ -.*/node_modules/module-deps/ +/build/.* +/packages/.*/lib +/packages/.*/test +/codemods/.*/lib +/codemods/.*/test +/node_modules/module-deps/ [include] packages/*/src diff --git a/.travis.yml b/.travis.yml index 7b2d47fde7e3..6c83171ac2a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,17 +20,18 @@ before_install: install: # the `make test-ci` script runs this command already - - if [ "$JOB" != "test" ]; then yarn install; fi + - if [ "$JOB" != "test" ] && [ "$JOB" != "lint" ]; then yarn install; fi + - if [ "$JOB" = "lint" ]; then make bootstrap; fi before_script: - - 'if [ "$JOB" = "babel-parser-flow-tests" ]; then make bootstrap-flow; fi' - - 'if [ "$JOB" = "babel-parser-test262-tests" ]; then make bootstrap-test262; fi' + - if [ "$JOB" = "babel-parser-flow-tests" ]; then make bootstrap-flow; fi + - if [ "$JOB" = "babel-parser-test262-tests" ]; then make bootstrap-test262; fi script: - - 'if [ "$JOB" = "test" ]; then make test-ci; fi' - - 'if [ "$JOB" = "lint" ]; then make lint && make flow; fi' - - 'if [ "$JOB" = "babel-parser-flow-tests" ]; then make test-flow-ci; fi' - - 'if [ "$JOB" = "babel-parser-test262-tests" ]; then make test-test262-ci; fi' + - if [ "$JOB" = "test" ]; then make test-ci; fi + - if [ "$JOB" = "lint" ]; then make lint && make flow; fi + - if [ "$JOB" = "babel-parser-flow-tests" ]; then make test-flow-ci; fi + - if [ "$JOB" = "babel-parser-test262-tests" ]; then make test-test262-ci; fi matrix: fast_finish: true diff --git a/package.json b/package.json index 6f5e974d98c6..e40200a4e5d4 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "eslint-plugin-flowtype": "^3.2.0", "eslint-plugin-local-rules": "0.1.0", "eslint-plugin-prettier": "^3.0.0", - "flow-bin": "^0.82.0", + "flow-bin": "^0.87.0", "graceful-fs": "^4.1.11", "gulp": "^4.0.0", "gulp-babel": "^8.0.0", diff --git a/packages/babel-core/src/config/caching.js b/packages/babel-core/src/config/caching.js index c8db5a166c71..54b6260f734a 100644 --- a/packages/babel-core/src/config/caching.js +++ b/packages/babel-core/src/config/caching.js @@ -43,6 +43,7 @@ export function makeWeakCache< >( handler: (ArgT, CacheConfigurator) => ResultT, ): (ArgT, SideChannel) => ResultT { + // $FlowIssue https://github.com/facebook/flow/issues/4528 return makeCachedFunction(new WeakMap(), handler); } @@ -54,6 +55,7 @@ function makeCachedFunction< ArgT, ResultT, SideChannel, + // $FlowIssue https://github.com/facebook/flow/issues/4528 Cache: CacheMap, >( callCache: Cache, diff --git a/packages/babel-core/src/config/validation/options.js b/packages/babel-core/src/config/validation/options.js index c790adfac9f9..3ee072ae344f 100644 --- a/packages/babel-core/src/config/validation/options.js +++ b/packages/babel-core/src/config/validation/options.js @@ -350,7 +350,7 @@ function validateNested(loc: NestingPath, opts: {}) { NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || - throwUnknownError; + (throwUnknownError: Validator); validator(optLoc, opts[key]); }); diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 4388305d81bc..07fad7964f7c 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1759,7 +1759,7 @@ export default class ExpressionParser extends LValParser { parseArrowExpression( node: N.ArrowFunctionExpression, params?: ?(N.Expression[]), - isAsync?: boolean, + isAsync?: boolean = false, ): N.ArrowFunctionExpression { // if we got there, it's no more "yield in possible arrow parameters"; // it's just "yield in arrow parameters" diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 8c457c63398c..553da03d6167 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -896,9 +896,9 @@ export default class StatementParser extends ExpressionParser { parseFunction( node: T, isStatement: boolean, - allowExpressionBody?: boolean, - isAsync?: boolean, - optionalId?: boolean, + allowExpressionBody?: boolean = false, + isAsync?: boolean = false, + optionalId?: boolean = false, ): T { const oldInFunc = this.state.inFunction; const oldInMethod = this.state.inMethod; diff --git a/packages/babel-parser/src/plugins/estree.js b/packages/babel-parser/src/plugins/estree.js index 3da593f7d9f3..ae859107b066 100644 --- a/packages/babel-parser/src/plugins/estree.js +++ b/packages/babel-parser/src/plugins/estree.js @@ -300,7 +300,7 @@ export default (superClass: Class): Class => if (node) { node.type = "Property"; - if (node.kind === "method") node.kind = "init"; + if (((node: any): N.ClassMethod).kind === "method") node.kind = "init"; node.shorthand = false; } diff --git a/packages/babel-parser/src/plugins/flow.js b/packages/babel-parser/src/plugins/flow.js index a536bb3d06e5..bbf4378a7ac0 100644 --- a/packages/babel-parser/src/plugins/flow.js +++ b/packages/babel-parser/src/plugins/flow.js @@ -1842,7 +1842,9 @@ export default (superClass: Class): Class => super.assertModuleNodeAllowed(node); } - parseExport(node: N.ExportNamedDeclaration): N.ExportNamedDeclaration { + parseExport( + node: N.ExportNamedDeclaration | N.ExportAllDeclaration, + ): N.ExportNamedDeclaration | N.ExportAllDeclaration { node = super.parseExport(node); if ( node.type === "ExportNamedDeclaration" || diff --git a/packages/babel-parser/src/tokenizer/state.js b/packages/babel-parser/src/tokenizer/state.js index 55968f581bd1..debcaacbf1bc 100644 --- a/packages/babel-parser/src/tokenizer/state.js +++ b/packages/babel-parser/src/tokenizer/state.js @@ -140,7 +140,10 @@ export default class State { // The first yield or await expression inside parenthesized expressions // and arrow function parameters. It is used to disallow yield and await in // arrow function parameters. - yieldOrAwaitInPossibleArrowParameters: ?N.YieldExpression; + yieldOrAwaitInPossibleArrowParameters: + | N.YieldExpression + | N.AwaitExpression + | null; // Token store. tokens: Array; diff --git a/packages/babel-template/src/index.js b/packages/babel-template/src/index.js index d3946dfb59e4..7322d9ab99f2 100644 --- a/packages/babel-template/src/index.js +++ b/packages/babel-template/src/index.js @@ -3,11 +3,11 @@ import * as formatters from "./formatters"; import createTemplateBuilder from "./builder"; -export const smart = createTemplateBuilder(formatters.smart); -export const statement = createTemplateBuilder(formatters.statement); -export const statements = createTemplateBuilder(formatters.statements); -export const expression = createTemplateBuilder(formatters.expression); -export const program = createTemplateBuilder(formatters.program); +export const smart = createTemplateBuilder<*>(formatters.smart); +export const statement = createTemplateBuilder<*>(formatters.statement); +export const statements = createTemplateBuilder<*>(formatters.statements); +export const expression = createTemplateBuilder<*>(formatters.expression); +export const program = createTemplateBuilder<*>(formatters.program); type DefaultTemplateBuilder = typeof smart & { smart: typeof smart, diff --git a/yarn.lock b/yarn.lock index 769ac3f60018..4391248ece61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4028,10 +4028,10 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flow-bin@^0.82.0: - version "0.82.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.82.0.tgz#fbec84c0d6cab7877565eca8214d655f3aefb8db" - integrity sha512-D7ViTCVJSVv19CB6dFWS9k2iKQlavtkRXn9el0ofVTTpGuybe+EPE8DZwdyohzEt6wRhHV8gwkteWvxdcVuOzg== +flow-bin@^0.87.0: + version "0.87.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.87.0.tgz#fab7f984d8cc767e93fa9eb01cf7d57ed744f19d" + integrity sha512-mnvBXXZkUp4y6A96bR5BHa3q1ioIIN2L10w5osxJqagAakTXFYZwjl0t9cT3y2aCEf1wnK6n91xgYypQS/Dqbw== flush-write-stream@^1.0.2: version "1.0.3"