From a838eb5a3d7ac0f3ad009fd5c2a75a144eafd2fb Mon Sep 17 00:00:00 2001 From: nic <139033898+dicnunz@users.noreply.github.com> Date: Sat, 9 May 2026 02:14:28 -0400 Subject: [PATCH] Fix assert false type parameter variables --- .../bugs/180-assert-false-type-parameter.js | 30 +++++++++++++++++++ .../src/transformVisitors.js | 13 ++++---- 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 packages/babel-plugin-flow-runtime/src/__tests__/__fixtures__/bugs/180-assert-false-type-parameter.js diff --git a/packages/babel-plugin-flow-runtime/src/__tests__/__fixtures__/bugs/180-assert-false-type-parameter.js b/packages/babel-plugin-flow-runtime/src/__tests__/__fixtures__/bugs/180-assert-false-type-parameter.js new file mode 100644 index 0000000..71ece04 --- /dev/null +++ b/packages/babel-plugin-flow-runtime/src/__tests__/__fixtures__/bugs/180-assert-false-type-parameter.js @@ -0,0 +1,30 @@ +/* @flow */ + +export const input = ` +function foo() { + let bar: X; +} +`; + +export const expected = ` +import t from "flow-runtime"; + +function foo() { + const X = t.typeParameter("X"); + let _barType = X, + bar; +} +`; + +export const annotated = ` +import t from "flow-runtime"; + +function foo() { + let bar; +} + +t.annotate(foo, t.function(_fn => { + const X = _fn.typeParameter("X"); + return []; +})); +`; diff --git a/packages/babel-plugin-flow-runtime/src/transformVisitors.js b/packages/babel-plugin-flow-runtime/src/transformVisitors.js index e88d0f7..d0e31b0 100644 --- a/packages/babel-plugin-flow-runtime/src/transformVisitors.js +++ b/packages/babel-plugin-flow-runtime/src/transformVisitors.js @@ -216,16 +216,17 @@ export default function transformVisitors (context: ConversionContext): Object { if (!id.has('typeAnnotation')) { return; } + if (!shouldCheck) { + return; + } if (!id.isIdentifier()) { invariant(id.isArrayPattern() || id.isObjectPattern()); const init = path.get('init'); let wrapped = init.node; - if (shouldCheck) { - wrapped = context.assert( - convert(context, id.get('typeAnnotation')), - wrapped - ); - } + wrapped = context.assert( + convert(context, id.get('typeAnnotation')), + wrapped + ); if (wrapped !== init.node) { context.replacePath(init, wrapped); }