Ctags: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдЕрдзрд┐рдХ рдПрд╕рд┐рдВрдХреНрд╕ рдЯреИрдЧрд┐рдВрдЧ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдХреНрддреВре░ 2018  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: universal-ctags/ctags

рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдирд╛рдо: javascript

ctags рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЬрд┐рд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

$ ctags --options=NONE Units/parser-javascript.r/js-async2.d/input-more-async.js

рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА:

$ cat Units/parser-javascript.r/js-async2.d/input-more-async.js
class ES6Class {
  anotherAsyncMethod = async attrs => {}
}

рдЯреИрдЧ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЖрдк рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ:

$ cat tags
!_TAG_FILE_FORMAT       2       /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED       1       /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_OUTPUT_MODE       u-ctags /u-ctags or e-ctags/
!_TAG_PROGRAM_AUTHOR    Universal Ctags Team    //
!_TAG_PROGRAM_NAME      Universal Ctags /Derived from Exuberant Ctags/
!_TAG_PROGRAM_URL       https://ctags.io/       /official site/
!_TAG_PROGRAM_VERSION   0.0.0   /00be957/
ES6Class        Units/parser-javascript.r/js-async2.d/input-more-async.js       /^class ES6Clas
s {$/;" c

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЯреИрдЧ рдЖрдЙрдЯрдкреБрдЯ:

рдкрдХреНрдХрд╛ рдирд╣реАрдВ? рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд, рд▓реЗрдХрд┐рди async рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреИрдЧ рдХреЗ рд╕рд╛рде

ctags рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг:

$ ctags --version
Universal Ctags 0.0.0(00be957), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jul  8 2018, 17:27:03
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +case-inse
nsitive-filenames

рдЖрдк ctags рдмрд╛рдЗрдирд░реА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ: homebrew

рдореИрдВрдиреЗ рдЦреБрдж рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдЦреБрдж рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЪреИрдЯ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЧрдпрд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдВрд╡рд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛)ред

рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХреЛрд╢рд┐рд╢ рдХреА:

$ git diff --cached
diff --git a/Units/parser-javascript.r/js-async2.d/expected.tags b/Units/parser-javascript.r/js
-async2.d/expected.tags
index 18b00b08..8f058db6 100644
--- a/Units/parser-javascript.r/js-async2.d/expected.tags
+++ b/Units/parser-javascript.r/js-async2.d/expected.tags
@@ -7,3 +7,4 @@ method1 input.js        /^  method1 : function() {$/;"  m       class:Class
 method2        input.js        /^  method2 : async function() {$/;"    m       class:Class
 method3        input.js        /^  method3() {$/;"     m       class:Class
 method4        input.js        /^  async method4() {$/;"       m       class:Class
+anotherAsyncMethod     input.js        /^anotherAsyncMethod = async attrs => {}$/;"    m
       class:ES6Class
diff --git a/Units/parser-javascript.r/js-async2.d/input-more-async.js b/Units/parser-javascrip
t.r/js-async2.d/input-more-async.js
new file mode 100644
index 00000000..42fcfd36
--- /dev/null
+++ b/Units/parser-javascript.r/js-async2.d/input-more-async.js
@@ -0,0 +1,3 @@
+class ES6Class {
+  anotherAsyncMethod = async attrs => {}
+}

рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕ рдкрд░ рдХреЛрдИ рд▓реЗрдЦ рд╣реИ? рдореИрдВ рдПрд╕реА рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдЬреЗрдПрд╕ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрд╕рд┐рдВрдХ рдЯреИрдЧ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдкреАрдЖрд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ Units/ рдмрд╛рд╣рд░ рддрд░реНрдХ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдЖрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ expected.tags рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреИрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд▓реЗ рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ ?! рдореИрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдЗрд╕ рдкрд░ рдорджрдж рдХрд░реЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!

Parser buenhancement

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЛ attrs рд▓рд┐рдП рдЯреИрдЧ рди рдорд┐рд▓рдиреЗ рдХрд╛ рдХрд╛рд░рдг async , рдмрд▓реНрдХрд┐ рдпрд╣ рдХрд┐ JS рдкрд╛рд░реНрд╕рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдердб рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рднреА рдирд╣реАрдВ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реВрдБрдЧрд╛ред
рдЖрдк рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ async рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рдЯреИрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред

рдПрдХ рддрд░рдл рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕ рдкрд░ рдХреЛрдИ рд▓реЗрдЦ рд╣реИ? рдореИрдВ рдПрд╕реА рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдЬреЗрдПрд╕ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрд╕рд┐рдВрдХ рдЯреИрдЧ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдкреАрдЖрд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ Units/ рдмрд╛рд╣рд░ рддрд░реНрдХ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдЖрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ expected.tags рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреИрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд▓реЗ рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ ?! рдореИрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдЗрд╕ рдкрд░ рдорджрдж рдХрд░реЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рд╣реА, рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдпрд╣ рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рдХрд╛ рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ; async "рд╕рдорд░реНрдерди" (41c2c77ea6da1f42fcd891948de04d7b1ad2c958) рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдЬреЛрдбрд╝рд╛: рдЗрд╕рдиреЗ async рдХреЛ рдПрдХ рдХреАрд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛, рд╕рд╛рде рд╣реА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 4 рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ред

рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЧреИрд░-рдорд╛рдирдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред рд╕реНрдерд┐рд░/рдЖрд╡реГрддреНрддрд┐ рдЧреБрдг рдЕрднреА рддрдХ рдкрддреНрдерд░ рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХрдо рддреЛ рдХреБрдЫ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрдХ sap рдХреАрд╡рд░реНрдб рджреЗрдЦрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛, рдпрд╣ @b4n рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдБ

рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЧреИрд░-рдорд╛рдирдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИред рд╕реНрдерд┐рд░/рдЖрд╡реГрддреНрддрд┐ рдЧреБрдг рдЕрднреА рддрдХ рдкрддреНрдерд░ рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХрдо рддреЛ рдХреБрдЫ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЧреИрд░-рдорд╛рдирдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ?

LANG=JavaScript ; рд╣рдо, u-ctags рдбреЗрд╡рд▓рдкрд░, $LANG рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВред рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рд╖рд╛ рд╕рдВрджрд░реНрдн, рдорд╛рдирдХ/рдЧреИрд░-рдорд╛рдирдХ рдЬрд╛рдирдХрд╛рд░реА, рдорд╛рдирдХреАрдХрд░рдг рдХреА рд╕реНрдерд┐рддрд┐, рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдЗрдирдкреБрдЯ, рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдареЛрд╕ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЯреИрдЧ рдЖрдЙрдЯрдкреБрдЯ,
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рдХреЛрдбрдмреЗрд╕, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдЖрджрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдореБрдЭреЗ рдЪрд▓рд╛рддреА рд╣реИред
(рдореБрдЭреЗ рдЙрдкрд░реЛрдХреНрдд рд╡рд╛рдХреНрдпреЛрдВ рдХреЛ рдХрд╣реАрдВ .github/ISSUE_TEMPLATE.md рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред)

рдореИрдВрдиреЗ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрдХ рд╕реИрдк рдХреАрд╡рд░реНрдб рджреЗрдЦрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛, рдпрд╣ @ b4n рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рдмрд╣реБрдд рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдореБрд╕реНрдХрд╛рди рд╣реВрдБ

рд╣рдо Exuberant-ctags рд╕реЗ рдХреАрд╡рд░реНрдб рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕реЗ Universal-ctags рдХреЛ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореИрдВрдиреЗ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрдХ sap рдХреАрд╡рд░реНрдб рджреЗрдЦрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛, рдпрд╣ @b4n рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдБ

рдЬреИрд╕рд╛ рдХрд┐ @masatake рдиреЗ рдХрд╣рд╛, рдпрд╣ рдореЗрд░реЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ :) рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА, рдпрд╣ SAPUI5 рдврд╛рдВрдЪреЗ OpenUI5 рд▓рдЧрддрд╛ рд╣реИ)ред

рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░реНрд╕рд░ рдкрд░ OpenUI5 рдпрд╛ SAPUI5 рдЙрдк рдкрд╛рд░реНрд╕рд░ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
SAPUI5 рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдмрдкрд╛рд░реНрд╕рд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@jayceekay , рдореИрдВ async рд╕рдордЭрд╛рддреЗ рд╣реБрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдпрд╛ рдХреБрдЫ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдпрджрд┐ рдпрд╣ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рдирдХ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрдкрд╛рд░реНрд╕рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреВрдВрдЧрд╛ред

async рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ Class рдореЗрдВ get рдпрд╛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ set рд╣реЛред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

class Test {
    async before() { // ctags will recognize this
    }

    get xx() {
        return 1;
    }

    async after() { // ctags will NOT recognize this
    }

    set yy(val) {
        return 2;
    }

    async after2() { // ctags will NOT recognize this
    }
};

рдФрд░ async , xx рдФрд░ yy рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдмрд╛рдд рдХреЛ рднреА рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдирд╣реАрдВред

[jet@living]/tmp% u-ctags --version
u-ctags --version
Universal Ctags 0.0.0(0730e66d), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jul 25 2019, 03:06:32
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +debug, +option-directory, +xpath, +json, +interactive, +sandbox, +yaml, +aspell, +packcc
[jet@living]/tmp% cat /tmp/foo.js 
cat /tmp/foo.js 
class Test {
    async before() { // ctags will recognize this
    }

    get xx() {
        return 1;
    }

    async after() { // ctags will NOT recognize this
    }

    set yy(val) {
        return 2;
    }

    async after2() { // ctags will NOT recognize this
    }
};
[jet@living]/tmp% u-ctags -o - /tmp/foo.js 
u-ctags -o - /tmp/foo.js 
Test    /tmp/foo.js /^class Test {$/;"  c
after   /tmp/foo.js /^    async after() { \/\/ ctags will NOT recognize this$/;"    m   class:Test
after2  /tmp/foo.js /^    async after2() { \/\/ ctags will NOT recognize this$/;"   m   class:Test
before  /tmp/foo.js /^    async before() { \/\/ ctags will recognize this$/;"   m   class:Test
xx  /tmp/foo.js /^    get xx() {$/;"    G   class:Test
yy  /tmp/foo.js /^    set yy(val) {$/;" S   class:Test
[jet@living]/tmp% u-ctags --options=NONE  -o - /tmp/foo.js 
u-ctags --options=NONE  -o - /tmp/foo.js 
u-ctags: Notice: No options will be read from files or environment
Test    /tmp/foo.js /^class Test {$/;"  c
after   /tmp/foo.js /^    async after() { \/\/ ctags will NOT recognize this$/;"    m   class:Test
after2  /tmp/foo.js /^    async after2() { \/\/ ctags will NOT recognize this$/;"   m   class:Test
before  /tmp/foo.js /^    async before() { \/\/ ctags will recognize this$/;"   m   class:Test
xx  /tmp/foo.js /^    get xx() {$/;"    G   class:Test
yy  /tmp/foo.js /^    set yy(val) {$/;" S   class:Test
[jet@living]/tmp% 

image
Homebrew Universal-ctags рд╕рдВрд╕реНрдХрд░рдг рдкреБрд░рд╛рдирд╛ рд╣реИ, рдФрд░ рдЕрдм рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@KazuakiM , рдХреНрдпрд╛ рдЖрдк @ рдореЗрдкрд▓-рд▓реАрдл рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП Homebrew рдХреЗ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ?

@рдореЗрдкрд▓ рдХрд╛ рдкрддреНрддрд╛
рдореИрдВрдиреЗ рдпреВрдирд┐рд╡рд░реНрд╕рд▓-ctags рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рд╣реИред
рдпрд╛ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ brew reinstall universal-ctags ред

рдСрдк рд▓реЙрдЧ)
https://gist.github.com/KazuakiM/69f58a05f07e3f6dd6ea3d76bc977bea

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ?

@masatake @KazuakiM рдореИрдВ рдХреЛрд╢рд┐рд╢ brew reinstall universal-ctags , рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реЛрдордмреНрд░реЗ рд╣реЗрдб рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╕рдорд╕реНрдпрд╛: https://github.com/Homebrew/legacy-homebrew/issues/13197

@рдореЗрдкрд▓ рдХрд╛ рдкрддреНрддрд╛
рдзрдиреНрдпрд╡рд╛рдж, рдХреНрдпрд╛ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ uninstall & install --HEAD ?

$ brew uninstall universal-ctags
$ brew install --HEAD universal-ctags

@KazuakiM рдореИрдВрдиреЗ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдХрд╛рдо рднреА рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

liuchengxu picture liuchengxu  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

songouyang picture songouyang  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lvc picture lvc  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jespinal picture jespinal  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cweagans picture cweagans  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ