From 998a273ae744f01a5d6a1904e3870e0f0cc3b01f Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Thu, 10 Nov 2016 16:01:40 -0600 Subject: [PATCH 1/7] Implement jsFuncAssignment --- syntax/javascript.vim | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 22733c78..4974980b 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -29,7 +29,7 @@ syntax match jsFuncCall /\k\+\%(\s*(\)\@=/ syntax match jsParensError /[)}\]]/ " Program Keywords -syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef +syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef,jsFuncAssignment syntax match jsVariableDef contained /\k\+/ nextgroup=jsFlowDefinition syntax keyword jsOperator delete instanceof typeof void new in of syntax match jsOperator /[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}/ @@ -166,6 +166,11 @@ syntax match jsFuncArgCommas contained ',' syntax keyword jsArguments contained arguments syntax keyword jsForAwait contained await skipwhite skipempty nextgroup=jsParenRepeat +syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*([^()]*)\s*\(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern nextgroup=jsFuncAssignmentPattern +syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern nextgroup=jsFuncAssignmentPattern +syntax match jsFuncAssignmentPattern contained /=\s*([^()]*)\s*\(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs nextgroup=jsArrowFunction +syntax match jsFuncAssignmentPattern contained /=\s*\k\+\s*\%(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs nextgroup=jsArrowFunction + " Matches a single keyword argument with no parens syntax match jsArrowFuncArgs /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend " Matches a series of arguments surrounded in parens @@ -282,6 +287,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsGenerator jsFunction HiLink jsArrowFuncArgs jsFuncArgs HiLink jsFuncName Function + HiLink jsFuncAssignment Function HiLink jsClassFuncName jsFuncName HiLink jsObjectFuncName Function HiLink jsArguments Special From a42bca3499ea381f0fd1c404c20f5a634cb38a7f Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Wed, 25 Jan 2017 11:09:30 -0600 Subject: [PATCH 2/7] Add async arrow function support --- syntax/javascript.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 4229586a..d271791e 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -170,10 +170,10 @@ syntax match jsFuncArgCommas contained ',' syntax keyword jsArguments contained arguments syntax keyword jsForAwait contained await skipwhite skipempty nextgroup=jsParenRepeat -syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*([^()]*)\s*\(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern nextgroup=jsFuncAssignmentPattern -syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern nextgroup=jsFuncAssignmentPattern -syntax match jsFuncAssignmentPattern contained /=\s*([^()]*)\s*\(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs nextgroup=jsArrowFunction -syntax match jsFuncAssignmentPattern contained /=\s*\k\+\s*\%(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs nextgroup=jsArrowFunction +syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*\%(async\s*\)\?([^()]*)\s*\(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern,jsAsyncKeyword nextgroup=jsFuncAssignmentPattern +syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*\%(async\s*\)\?\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern,jsAsyncKeyword nextgroup=jsFuncAssignmentPattern +syntax match jsFuncAssignmentPattern contained /=\s*\%(async\s*\)\?([^()]*)\s*\(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs,jsAsyncKeyword nextgroup=jsArrowFunction +syntax match jsFuncAssignmentPattern contained /=\s*\%(async\s*\)\?\k\+\s*\%(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs,jsAsyncKeyword nextgroup=jsArrowFunction " Matches a single keyword argument with no parens syntax match jsArrowFuncArgs /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend From 67fcee6de77dc0034fb300c652fe64039520bc36 Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Wed, 31 Jan 2018 10:42:02 -0600 Subject: [PATCH 3/7] Remove jsFuncCall --- syntax/javascript.vim | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index e25bca2c..9a0dbdc2 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -25,9 +25,8 @@ syntax sync fromstart syntax case match syntax match jsNoise /[:,\;]\{1}/ -syntax match jsNoise /[\.]\{1}/ skipwhite skipempty nextgroup=jsObjectProp,jsFuncCall,jsPrototype +syntax match jsNoise /[\.]\{1}/ skipwhite skipempty nextgroup=jsObjectProp,jsPrototype syntax match jsObjectProp contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/ -syntax match jsFuncCall /\k\+\%(\s*(\)\@=/ syntax match jsParensError /[)}\]]/ " Program Keywords @@ -119,7 +118,7 @@ syntax match jsSwitchColon contained /::\@!/ skipwhite skipempty nextg " Keywords syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat fetch syntax keyword jsGlobalNodeObjects module exports global process __dirname __filename -syntax match jsGlobalNodeObjects /\/ containedin=jsFuncCall +syntax match jsGlobalNodeObjects /\/ syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval " DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved? @@ -242,7 +241,7 @@ if exists("javascript_plugin_flow") runtime extras/flow.vim endif -syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo,jsForAwait +syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo,jsForAwait syntax cluster jsAll contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword,jsNoise,jsBlockLabel " Define the default highlighting. From 723fb1f85f6879986df1c136415aba0af7c6b5ee Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Fri, 9 Mar 2018 18:39:57 -0600 Subject: [PATCH 4/7] Add arrow function assignment highlighting to objects and classes --- syntax/javascript.vim | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index f727f78a..68f95335 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -141,7 +141,7 @@ syntax region jsParenRepeat contained matchgroup=jsParensRepeat s syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold syntax region jsParenCatch contained matchgroup=jsParensCatch start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold -syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise extend fold +syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise,jsFuncAssignment,@jsExpression extend fold syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll,jsBlock extend fold syntax region jsIfElseBlock contained matchgroup=jsIfElseBraces start=/{/ end=/}/ contains=@jsAll,jsBlock extend fold syntax region jsTryCatchBlock contained matchgroup=jsTryCatchBraces start=/{/ end=/}/ contains=@jsAll,jsBlock skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold @@ -150,7 +150,7 @@ syntax region jsSwitchBlock contained matchgroup=jsSwitchBraces s syntax region jsRepeatBlock contained matchgroup=jsRepeatBraces start=/{/ end=/}/ contains=@jsAll,jsBlock extend fold syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression,jsComment extend fold syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression,jsComment extend fold -syntax region jsObject contained matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword extend fold +syntax region jsObject contained matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword,jsPropFuncAssignment,@jsExpression extend fold syntax region jsBlock matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsSpreadExpression extend fold syntax region jsModuleGroup contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment,jsFlowTypeKeyword skipwhite skipempty nextgroup=jsFrom fold syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression @@ -165,20 +165,13 @@ syntax match jsFuncArgCommas contained ',' syntax keyword jsArguments contained arguments syntax keyword jsForAwait contained await skipwhite skipempty nextgroup=jsParenRepeat -syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*\%(async\s*\)\?([^()]*)\s*\(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern,jsAsyncKeyword nextgroup=jsFuncAssignmentPattern -syntax match jsFuncAssignment contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\s*=\s*\%(async\s*\)\?\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncAssignmentPattern,jsAsyncKeyword nextgroup=jsFuncAssignmentPattern -syntax match jsFuncAssignmentPattern contained /=\s*\%(async\s*\)\?([^()]*)\s*\(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs,jsAsyncKeyword nextgroup=jsArrowFunction -syntax match jsFuncAssignmentPattern contained /=\s*\%(async\s*\)\?\k\+\s*\%(=>\)\@=/ skipwhite skipempty contains=jsArrowFuncArgs,jsAsyncKeyword nextgroup=jsArrowFunction - " Matches a single keyword argument with no parens syntax match jsArrowFuncArgs /\<\K\k*\ze\s*=>/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend " Matches a series of arguments surrounded in parens syntax match jsArrowFuncArgs /([^()]*)\ze\s*=>/ contains=jsFuncArgs skipempty skipwhite nextgroup=jsArrowFunction extend exe 'syntax match jsFunction /\/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs,jsFlowFunctionGroup skipwhite '.(exists('g:javascript_conceal_function') ? 'conceal cchar='.g:javascript_conceal_function : '') -exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') -exe 'syntax match jsArrowFunction /()\ze\s*=>/ skipwhite skipempty nextgroup=jsArrowFunction '.(exists('g:javascript_conceal_noarg_arrow_function') ? 'conceal cchar='.g:javascript_conceal_noarg_arrow_function : '') -exe 'syntax match jsArrowFunction /_\ze\s*=>/ skipwhite skipempty nextgroup=jsArrowFunction '.(exists('g:javascript_conceal_underscore_arrow_function') ? 'conceal cchar='.g:javascript_conceal_underscore_arrow_function : '') +exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction,@jsExpression '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') " Classes syntax keyword jsClassKeyword contained class @@ -192,6 +185,11 @@ syntax region jsClassPropertyComputed contained matchgroup=jsBrackets start=/\ syntax match jsClassFuncName contained /\<\K\k*\ze\s*(/ skipwhite skipempty nextgroup=jsFuncArgs syntax region jsClassStringKey contained start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs +syntax match jsFuncAssignment contained /\<\K\k*\>\(\s*=\s*\%(async\s*\)\?(.*)\s*\%(=>\)\@=\)\@=/ skipwhite +syntax match jsFuncAssignment contained /\<\K\k*\>\(\s*=\s*\%(async\s*\)\?\k\+\s*\%(=>\)\@=\)\@=/ skipwhite +syntax match jsPropFuncAssignment contained /\<\K\k*\>\(\s*:\s*\%(async\s*\)\?(.*)\s*\%(=>\)\@=\)\@=/ skipwhite +syntax match jsPropFuncAssignment contained /\<\K\k*\>\(\s*:\s*\%(async\s*\)\?\k\+\s*\%(=>\)\@=\)\@=/ skipwhite + " Destructuring syntax match jsDestructuringPropertyValue contained /\k\+/ syntax match jsDestructuringProperty contained /\k\+\ze\s*=/ skipwhite skipempty nextgroup=jsDestructuringValue @@ -291,6 +289,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsArrowFuncArgs jsFuncArgs HiLink jsFuncName Function HiLink jsFuncAssignment Function + HiLink jsPropFuncAssignment Function HiLink jsClassFuncName jsFuncName HiLink jsObjectFuncName Function HiLink jsArguments Special From 40f8fb386448777d61f01e8252c0d8027c1655f1 Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Fri, 9 Mar 2018 19:07:24 -0600 Subject: [PATCH 5/7] Fix highlighting within function blocks --- syntax/javascript.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index a2c2344c..d78e62d0 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -171,7 +171,8 @@ syntax match jsArrowFuncArgs /\<\K\k*\ze\s*=>/ skipwhite contains=jsFuncArgs syntax match jsArrowFuncArgs /([^()]*)\ze\s*=>/ contains=jsFuncArgs skipempty skipwhite nextgroup=jsArrowFunction extend exe 'syntax match jsFunction /\/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs,jsFlowFunctionGroup skipwhite '.(exists('g:javascript_conceal_function') ? 'conceal cchar='.g:javascript_conceal_function : '') -exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction,@jsExpression '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') +exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=@jsExpression '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') +exe 'syntax match jsArrowFunction /=>\%(\s*{\)\@=/ skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') " Classes syntax keyword jsClassKeyword contained class From 6d2d31a251c170dc1ef14a210695372688f4a83d Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Sat, 10 Mar 2018 12:09:41 -0600 Subject: [PATCH 6/7] Fix improperly merged line --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index d78e62d0..9e23ce51 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -112,7 +112,7 @@ syntax match jsSwitchColon contained /::\@!/ skipwhite skipempty next " Keywords syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set WeakSet RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat fetch syntax keyword jsGlobalNodeObjects module exports global process __dirname __filename -syntax match jsGlobalNodeObjects /\/ +syntax match jsGlobalNodeObjects /\/ containedin=jsFuncCall syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval " DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved? From 4f6b2e961a8b7a1163d0bab703f5864c432ed935 Mon Sep 17 00:00:00 2001 From: Andre Azzolini Date: Fri, 6 Jul 2018 09:26:36 -0500 Subject: [PATCH 7/7] Add test file for arrow function scenarios --- test.js | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 test.js diff --git a/test.js b/test.js new file mode 100644 index 00000000..f4092926 --- /dev/null +++ b/test.js @@ -0,0 +1,72 @@ +class C { + no = 123; + no = 'asdf'; + yes() {}; + async yes() {}; + yes = () => {}; + yes = x => {}; + yes = (a,b) => {}; + yes = async () => {}; + yes = async x => {}; + yes = async (a,b) => {}; + yes = () => someFn(); + yes = x => someFn(x); + yes = (a,b) => someFn({ a, b }); + yes = _ => new Promise((res, rej) => {}); + yes = a => b => c; + yes = (a,b) => c => someFn({ a, b, c }); +} + +const no = 123; +const no = 'asdf'; +function yes() {}; +async function yes() {}; +const yes = () => {}; +const yes = x => {}; +const yes = (a,b) => {}; +const yes = async () => {}; +const yes = async x => {}; +const yes = async (a,b) => {}; +const yes = () => someFn(); +const yes = x => someFn(x); +const yes = (a,b) => someFn({ a, b }); +const yes = _ => new Promise((res, rej) => {}); +const yes = a => b => c; +const yes = (a,b) => c => someFn({ a, b, c }); + +const obj = { + no: 123, + no: 'asdf', + yes() {}, + async yes() {}, + yes: () => {}, + yes: x => {}, + yes: (a,b) => {}, + yes: async () => {}, + yes: async x => {}, + yes: async (a,b) => {}, + yes: () => someFn(), + yes: x => someFn(x), + yes: (a,b) => someFn({ a, b }), + yes: _ => new Promise((res, rej):> {}), + yes: a => b => c, + yes: (a,b) => c => someFn({ a, b, c }), + no: { + no: 123, + no: 'asdf', + yes() {}, + async yes() {}, + yes: () => {}, + yes: x => {}, + yes: (a,b) => {}, + yes: async () => {}, + yes: async x => {}, + yes: async (a,b) => {}, + yes: () => someFn(), + yes: x => someFn(x), + yes: (a,b) => someFn({ a, b }), + yes: _ => new Promise((res, rej):> {}), + yes: a => b => c, + yes: (a,b) => c => someFn({ a, b, c }), + } +}