From daaa2063bb8755249d61bd3f5617336983bf4193 Mon Sep 17 00:00:00 2001 From: Jayen Ashar Date: Thu, 2 Jan 2020 01:36:20 +1100 Subject: [PATCH] Override toString in case this function is printed (#10949) * Override toString in case this function is printed Related to https://stackoverflow.com/questions/59543968/unexpected-return-value-from-visitor-method * Don't override `toString` if `wrapper` is true Override `toString` immediately before returning a newFn, otherwise it will be overridden if wrapper is true https://github.com/babel/babel/pull/10949#discussion_r362302625 * prettier --- packages/babel-traverse/src/visitors.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/babel-traverse/src/visitors.js b/packages/babel-traverse/src/visitors.js index 77c1488d5d55..eb8516a451fa 100644 --- a/packages/babel-traverse/src/visitors.js +++ b/packages/babel-traverse/src/visitors.js @@ -227,6 +227,11 @@ function wrapWithStateOrWrapper(oldVisitor, state, wrapper: ?Function) { newFn = wrapper(state.key, key, newFn); } + // Override toString in case this function is printed, we want to print the wrapped function, same as we do in `wrapCheck` + if (newFn !== fn) { + newFn.toString = () => fn.toString(); + } + return newFn; });