diff --git a/packages/babel-generator/test/fixtures/types/Optional-CallExpression/actual.js b/packages/babel-generator/test/fixtures/types/Optional-CallExpression/actual.js new file mode 100644 index 0000000000..7bf538b249 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/Optional-CallExpression/actual.js @@ -0,0 +1,39 @@ +foo?.(); +foo?.("foo"); +foo?.("foo", "bar"); +foo?.(bar()); +foo?.(bar("test")); +foo(bar?.()); +foo(bar?.("test")); + +a.foo?.(); +a.foo?.("foo"); +a.foo?.("foo", "bar"); +a.foo?.(bar()); +a.foo?.(bar("test")); +a.foo(bar?.()); +a.foo(bar?.("test")); + +a?.foo?.(); +a?.foo?.("foo"); +a?.foo?.("foo", "bar"); +a?.foo?.(bar()); +a?.foo?.(bar("test")); +a?.foo(bar?.()); +a?.foo(bar?.("test")); + +a.foo?.().baz; +a.foo?.("foo").baz; +a.foo?.("foo", "bar").baz; +a.foo?.(bar()).baz; +a.foo?.(bar("test")).baz; +a.foo(bar?.()).baz; +a.foo(bar?.("test")).baz; + +a.foo?.()?.baz; +a.foo?.("foo")?.baz; +a.foo?.("foo", "bar")?.baz; +a.foo?.(bar())?.baz; +a.foo?.(bar("test"))?.baz; +a.foo(bar?.())?.baz; +a.foo(bar?.("test"))?.baz; diff --git a/packages/babel-generator/test/fixtures/types/Optional-CallExpression/expected.js b/packages/babel-generator/test/fixtures/types/Optional-CallExpression/expected.js new file mode 100644 index 0000000000..7bf538b249 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/Optional-CallExpression/expected.js @@ -0,0 +1,39 @@ +foo?.(); +foo?.("foo"); +foo?.("foo", "bar"); +foo?.(bar()); +foo?.(bar("test")); +foo(bar?.()); +foo(bar?.("test")); + +a.foo?.(); +a.foo?.("foo"); +a.foo?.("foo", "bar"); +a.foo?.(bar()); +a.foo?.(bar("test")); +a.foo(bar?.()); +a.foo(bar?.("test")); + +a?.foo?.(); +a?.foo?.("foo"); +a?.foo?.("foo", "bar"); +a?.foo?.(bar()); +a?.foo?.(bar("test")); +a?.foo(bar?.()); +a?.foo(bar?.("test")); + +a.foo?.().baz; +a.foo?.("foo").baz; +a.foo?.("foo", "bar").baz; +a.foo?.(bar()).baz; +a.foo?.(bar("test")).baz; +a.foo(bar?.()).baz; +a.foo(bar?.("test")).baz; + +a.foo?.()?.baz; +a.foo?.("foo")?.baz; +a.foo?.("foo", "bar")?.baz; +a.foo?.(bar())?.baz; +a.foo?.(bar("test"))?.baz; +a.foo(bar?.())?.baz; +a.foo(bar?.("test"))?.baz; diff --git a/packages/babel-generator/test/fixtures/types/Optional-MemberExpression/actual.js b/packages/babel-generator/test/fixtures/types/Optional-MemberExpression/actual.js new file mode 100644 index 0000000000..1c60f76870 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/Optional-MemberExpression/actual.js @@ -0,0 +1,16 @@ +foo?.["bar"]; +foo?.bar; + +foo.bar?.foo; +foo?.bar.foo; +foo?.bar?.foo; +foo.bar?.["foo"]; +foo?.bar["foo"]; +foo?.bar?.["foo"]; +foo["bar"]?.foo; +foo?.["bar"].foo; +foo?.["bar"]?.foo; + +0.?.toString(); +0.5?.toString(); +1.000?.toString(); diff --git a/packages/babel-generator/test/fixtures/types/Optional-MemberExpression/expected.js b/packages/babel-generator/test/fixtures/types/Optional-MemberExpression/expected.js new file mode 100644 index 0000000000..1c60f76870 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/Optional-MemberExpression/expected.js @@ -0,0 +1,16 @@ +foo?.["bar"]; +foo?.bar; + +foo.bar?.foo; +foo?.bar.foo; +foo?.bar?.foo; +foo.bar?.["foo"]; +foo?.bar["foo"]; +foo?.bar?.["foo"]; +foo["bar"]?.foo; +foo?.["bar"].foo; +foo?.["bar"]?.foo; + +0.?.toString(); +0.5?.toString(); +1.000?.toString(); diff --git a/packages/babel-generator/test/fixtures/types/Optional-NewExpression/actual.js b/packages/babel-generator/test/fixtures/types/Optional-NewExpression/actual.js new file mode 100644 index 0000000000..fe994af68f --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/Optional-NewExpression/actual.js @@ -0,0 +1,39 @@ +new foo?.(); +new foo?.("foo"); +new foo?.("foo", "bar"); +new foo?.(bar()); +new foo?.(bar("test")); +foo(new bar?.()); +foo(new bar?.("test")); + +new a.foo?.(); +new a.foo?.("foo"); +new a.foo?.("foo", "bar"); +new a.foo?.(bar()); +new a.foo?.(bar("test")); +a.foo(new bar?.()); +a.foo(new bar?.("test")); + +new a?.foo?.(); +new a?.foo?.("foo"); +new a?.foo?.("foo", "bar"); +new a?.foo?.(bar()); +new a?.foo?.(bar("test")); +a?.foo(new bar?.()); +a?.foo(new bar?.("test")); + +new a.foo?.().baz; +new a.foo?.("foo").baz; +new a.foo?.("foo", "bar").baz; +new a.foo?.(bar()).baz; +new a.foo?.(bar("test")).baz; +a.foo(new bar?.()).baz; +a.foo(new bar?.("test")).baz; + +new a.foo?.()?.baz; +new a.foo?.("foo")?.baz; +new a.foo?.("foo", "bar")?.baz; +new a.foo?.(bar())?.baz; +new a.foo?.(bar("test"))?.baz; +a.foo(new bar?.())?.baz; +a.foo(new bar?.("test"))?.baz; diff --git a/packages/babel-generator/test/fixtures/types/Optional-NewExpression/expected.js b/packages/babel-generator/test/fixtures/types/Optional-NewExpression/expected.js new file mode 100644 index 0000000000..fe994af68f --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/Optional-NewExpression/expected.js @@ -0,0 +1,39 @@ +new foo?.(); +new foo?.("foo"); +new foo?.("foo", "bar"); +new foo?.(bar()); +new foo?.(bar("test")); +foo(new bar?.()); +foo(new bar?.("test")); + +new a.foo?.(); +new a.foo?.("foo"); +new a.foo?.("foo", "bar"); +new a.foo?.(bar()); +new a.foo?.(bar("test")); +a.foo(new bar?.()); +a.foo(new bar?.("test")); + +new a?.foo?.(); +new a?.foo?.("foo"); +new a?.foo?.("foo", "bar"); +new a?.foo?.(bar()); +new a?.foo?.(bar("test")); +a?.foo(new bar?.()); +a?.foo(new bar?.("test")); + +new a.foo?.().baz; +new a.foo?.("foo").baz; +new a.foo?.("foo", "bar").baz; +new a.foo?.(bar()).baz; +new a.foo?.(bar("test")).baz; +a.foo(new bar?.()).baz; +a.foo(new bar?.("test")).baz; + +new a.foo?.()?.baz; +new a.foo?.("foo")?.baz; +new a.foo?.("foo", "bar")?.baz; +new a.foo?.(bar())?.baz; +new a.foo?.(bar("test"))?.baz; +a.foo(new bar?.())?.baz; +a.foo(new bar?.("test"))?.baz; diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index c0e0ec4584..54c107bcd5 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -318,6 +318,7 @@ suites.forEach(function (testSuite) { "functionSent", "jsx", "objectRestSpread", + "optionalChaining", ], strictMode: false, sourceType: "module",