From 4c335cae0afd862e7d143b1cf8bd08f9ab8f932a Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 31 Jul 2017 15:40:14 -0500 Subject: [PATCH] Add support for printing optional catch binding (#2570) --- src/parser-babylon.js | 3 ++- src/printer.js | 5 ++--- .../__snapshots__/jsfmt.spec.js.snap | 19 +++++++++++++++++++ tests/optional_catch_binding/jsfmt.spec.js | 1 + .../optional_catch_binding.js | 9 +++++++++ 5 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 tests/optional_catch_binding/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/optional_catch_binding/jsfmt.spec.js create mode 100644 tests/optional_catch_binding/optional_catch_binding.js diff --git a/src/parser-babylon.js b/src/parser-babylon.js index 0adb9f65..72910136 100644 --- a/src/parser-babylon.js +++ b/src/parser-babylon.js @@ -23,7 +23,8 @@ function parse(text, parsers, opts) { "functionSent", "dynamicImport", "numericSeparator", - "importMeta" + "importMeta", + "optionalCatchBinding" ] }; diff --git a/src/printer.js b/src/printer.js index 1782cc2a..840fbe02 100644 --- a/src/printer.js +++ b/src/printer.js @@ -1552,9 +1552,8 @@ function genericPrintNoParens(path, options, print, args) { ]); case "CatchClause": return concat([ - "catch (", - path.call(print, "param"), - ") ", + "catch ", + n.param ? concat(["(", path.call(print, "param"), ") "]) : "", path.call(print, "body") ]); case "ThrowStatement": diff --git a/tests/optional_catch_binding/__snapshots__/jsfmt.spec.js.snap b/tests/optional_catch_binding/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 00000000..7253c29b --- /dev/null +++ b/tests/optional_catch_binding/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,19 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`optional_catch_binding.js 1`] = ` +try { + +} +catch { + +} +finally { + +} +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +try { +} catch { +} finally { +} + +`; diff --git a/tests/optional_catch_binding/jsfmt.spec.js b/tests/optional_catch_binding/jsfmt.spec.js new file mode 100644 index 00000000..f974ed6c --- /dev/null +++ b/tests/optional_catch_binding/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, { parser: "babylon" }); diff --git a/tests/optional_catch_binding/optional_catch_binding.js b/tests/optional_catch_binding/optional_catch_binding.js new file mode 100644 index 00000000..09fbc459 --- /dev/null +++ b/tests/optional_catch_binding/optional_catch_binding.js @@ -0,0 +1,9 @@ +try { + +} +catch { + +} +finally { + +}