@codingame/monaco-editor-wrapper 16.2.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/dist/_virtual/_.vsix.js +17 -17
  2. package/dist/_virtual/_commonjsHelpers.js +5 -1
  3. package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/CHANGELOG.md +21 -0
  4. package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/package.json +11 -11
  5. package/dist/assets/{Dart-Code.dart-code-3.109.20250404.vsix → Dart-Code.dart-code-3.117.20250731.vsix}/package.json +165 -59
  6. package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/changelog.md +11 -0
  7. package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/package.json +13 -11
  8. package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/package.json +2 -2
  9. package/dist/assets/REditorSupport.r-2.8.6.vsix/CHANGELOG.md +19 -0
  10. package/dist/assets/{REditorSupport.r-2.8.5.vsix/readme.md → REditorSupport.r-2.8.6.vsix/README.md} +3 -4
  11. package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/package.json +22 -111
  12. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/package.json +34 -12
  13. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/package.nls.ja.json +2 -1
  14. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/package.nls.json +2 -1
  15. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/package.nls.ru.json +2 -1
  16. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/package.nls.zh-CN.json +2 -1
  17. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/package.nls.zh-TW.json +2 -1
  18. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/vue-tsconfig.schema.json +8 -9
  19. package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/vue.tmLanguage.json +1 -1
  20. package/dist/assets/broadcomMFD.cobol-language-support-2.4.3.vsix/COBOL.tmLanguage.json +175 -0
  21. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/HP.COBOL.tmLanguage.json +2 -2
  22. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/SQL.tmLanguage.json +1 -1
  23. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/changelog.md +28 -0
  24. package/dist/assets/broadcomMFD.cobol-language-support-2.4.3.vsix/package.json +670 -0
  25. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/proc_grps.schema.json +2 -8
  26. package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/readme.md +99 -21
  27. package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/README.md +5 -5
  28. package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/package.json +840 -12
  29. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/CHANGELOG.md +235 -0
  30. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/README.md +2 -14
  31. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.json +76 -34
  32. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.cs.json +5 -2
  33. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.de.json +5 -2
  34. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.es.json +5 -2
  35. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.fr.json +5 -2
  36. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.it.json +5 -2
  37. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.ja.json +5 -2
  38. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.json +5 -2
  39. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.ko.json +5 -2
  40. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.pl.json +5 -2
  41. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.pt-br.json +5 -2
  42. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.ru.json +5 -2
  43. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.tr.json +5 -2
  44. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.zh-cn.json +5 -2
  45. package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/package.nls.zh-tw.json +5 -2
  46. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.json +1 -0
  47. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.cs.json +1 -0
  48. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.de.json +1 -0
  49. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.es.json +1 -0
  50. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.fr.json +1 -0
  51. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.it.json +1 -0
  52. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.ja.json +1 -0
  53. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.json +1 -0
  54. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.ko.json +1 -0
  55. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.pl.json +1 -0
  56. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.pt-br.json +1 -0
  57. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.qps-ploc.json +1 -0
  58. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.ru.json +1 -0
  59. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.tr.json +1 -0
  60. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.zh-cn.json +1 -0
  61. package/dist/assets/ms-python.python-2025.11.2025072901.vsix/package.nls.zh-tw.json +1 -0
  62. package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/readme.md +1 -1
  63. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/CHANGELOG.md +35 -1066
  64. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.json +20 -42
  65. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.cs.json +7 -9
  66. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.de.json +7 -9
  67. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.es.json +6 -8
  68. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.fr.json +6 -8
  69. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.it.json +8 -10
  70. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.ja.json +7 -9
  71. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.json +39 -11
  72. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.ko.json +3 -5
  73. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.pl.json +6 -8
  74. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.pt-br.json +6 -8
  75. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.ru.json +6 -8
  76. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.tr.json +9 -11
  77. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.zh-cn.json +6 -8
  78. package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/package.nls.zh-tw.json +6 -8
  79. package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/dune.json +304 -0
  80. package/dist/assets/ocamllabs.ocaml-platform-1.31.0.vsix/mlx.json +890 -0
  81. package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocaml.json +4 -4
  82. package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocaml2.json +3 -2
  83. package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/package.json +38 -9
  84. package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/readme.md +6 -1
  85. package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/Erlang.plist +212 -1
  86. package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/changelog.md +12 -0
  87. package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/package.json +1 -1
  88. package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/CHANGELOG.md +25 -0
  89. package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/README.md +3 -0
  90. package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/package.json +25 -7
  91. package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/package.json +83 -31
  92. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/changelog.md +12 -0
  93. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/package.json +13 -1
  94. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/package.nls.es-419.json +8 -6
  95. package/dist/assets/{sumneko.lua-3.14.0.vsix/package.nls.json → sumneko.lua-3.15.0.vsix/package.nls.ja-jp.json} +8 -6
  96. package/dist/assets/sumneko.lua-3.15.0.vsix/package.nls.json +249 -0
  97. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/package.nls.pt-br.json +8 -6
  98. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/package.nls.zh-cn.json +9 -7
  99. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/package.nls.zh-tw.json +94 -92
  100. package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/schema.json +23 -8
  101. package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/package.json +9 -2
  102. package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/svelte.tmLanguage.json +64 -1
  103. package/dist/extensions/Angular.ng-template-20.1.1.vsix.js +32 -0
  104. package/dist/extensions/Dart-Code.dart-code-3.117.20250731.vsix.js +20 -0
  105. package/dist/extensions/JakeBecker.elixir-ls-0.28.0.vsix.js +26 -0
  106. package/dist/extensions/{JuanBlanco.solidity-0.0.184.vsix.js → JuanBlanco.solidity-0.0.185.vsix.js} +8 -8
  107. package/dist/extensions/REditorSupport.r-2.8.6.vsix.js +38 -0
  108. package/dist/extensions/Vue.volar-3.0.4.vsix.js +46 -0
  109. package/dist/extensions/broadcomMFD.cobol-language-support-2.4.3.vsix.js +32 -0
  110. package/dist/extensions/golang.Go-0.49.0.vsix.js +24 -0
  111. package/dist/extensions/ms-dotnettools.csharp-2.87.26.vsix.js +58 -0
  112. package/dist/extensions/ms-python.python-2025.11.2025072901.vsix.js +56 -0
  113. package/dist/extensions/ms-vscode.cpptools-1.26.3.vsix.js +44 -0
  114. package/dist/extensions/{ocamllabs.ocaml-platform-1.29.0.vsix.js → ocamllabs.ocaml-platform-1.31.0.vsix.js} +42 -40
  115. package/dist/extensions/{pgourlain.erlang-1.1.2.vsix.js → pgourlain.erlang-1.1.3.vsix.js} +10 -10
  116. package/dist/extensions/redhat.java-1.44.2025073008.vsix.js +48 -0
  117. package/dist/extensions/scalameta.metals-1.52.4.vsix.js +36 -0
  118. package/dist/extensions/sumneko.lua-3.15.0.vsix.js +30 -0
  119. package/dist/extensions/svelte.svelte-vscode-109.10.0.vsix.js +44 -0
  120. package/package.json +105 -105
  121. package/stats.html +15 -15
  122. package/dist/assets/REditorSupport.r-2.8.5.vsix/Markdown Redcarpet.json +0 -146
  123. package/dist/assets/REditorSupport.r-2.8.5.vsix/RMarkdown.json +0 -13
  124. package/dist/assets/REditorSupport.r-2.8.5.vsix/changelog.md +0 -1011
  125. package/dist/assets/REditorSupport.r-2.8.5.vsix/r.json +0 -639
  126. package/dist/assets/REditorSupport.r-2.8.5.vsix/rmd-configuration.json +0 -27
  127. package/dist/assets/broadcomMFD.cobol-language-support-2.4.0.vsix/COBOL.tmLanguage.json +0 -175
  128. package/dist/assets/broadcomMFD.cobol-language-support-2.4.0.vsix/package.json +0 -660
  129. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.json +0 -1
  130. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.cs.json +0 -1
  131. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.de.json +0 -1
  132. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.es.json +0 -1
  133. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.fr.json +0 -1
  134. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.it.json +0 -1
  135. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.ja.json +0 -1
  136. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.json +0 -1
  137. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.ko.json +0 -1
  138. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.pl.json +0 -1
  139. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.pt-br.json +0 -1
  140. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.qps-ploc.json +0 -1
  141. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.ru.json +0 -1
  142. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.tr.json +0 -1
  143. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.zh-cn.json +0 -1
  144. package/dist/assets/ms-python.python-2025.5.2025042501.vsix/package.nls.zh-tw.json +0 -1
  145. package/dist/extensions/Angular.ng-template-19.2.4.vsix.js +0 -32
  146. package/dist/extensions/Dart-Code.dart-code-3.109.20250404.vsix.js +0 -20
  147. package/dist/extensions/JakeBecker.elixir-ls-0.27.2.vsix.js +0 -26
  148. package/dist/extensions/REditorSupport.r-2.8.5.vsix.js +0 -48
  149. package/dist/extensions/Vue.volar-3.0.1.vsix.js +0 -46
  150. package/dist/extensions/broadcomMFD.cobol-language-support-2.4.0.vsix.js +0 -32
  151. package/dist/extensions/golang.Go-0.47.2.vsix.js +0 -24
  152. package/dist/extensions/ms-dotnettools.csharp-2.74.24.vsix.js +0 -58
  153. package/dist/extensions/ms-python.python-2025.5.2025042501.vsix.js +0 -56
  154. package/dist/extensions/ms-vscode.cpptools-1.25.1.vsix.js +0 -44
  155. package/dist/extensions/redhat.java-1.42.2025041008.vsix.js +0 -48
  156. package/dist/extensions/scalameta.metals-1.49.2.vsix.js +0 -36
  157. package/dist/extensions/sumneko.lua-3.14.0.vsix.js +0 -30
  158. package/dist/extensions/svelte.svelte-vscode-109.5.4.vsix.js +0 -44
  159. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/README.md +0 -0
  160. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/angular.png +0 -0
  161. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/expression.json +0 -0
  162. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/host-object-literal.json +0 -0
  163. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/inline-styles.json +0 -0
  164. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/inline-template.json +0 -0
  165. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/let-declaration.json +0 -0
  166. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/template-blocks.json +0 -0
  167. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/template-tag.json +0 -0
  168. /package/dist/assets/{Angular.ng-template-19.2.4.vsix → Angular.ng-template-20.1.1.vsix}/template.json +0 -0
  169. /package/dist/assets/{Dart-Code.dart-code-3.109.20250404.vsix/CHANGELOG.md → Dart-Code.dart-code-3.117.20250731.vsix/changelog.md} +0 -0
  170. /package/dist/assets/{Dart-Code.dart-code-3.109.20250404.vsix → Dart-Code.dart-code-3.117.20250731.vsix}/dart-language-configuration.json +0 -0
  171. /package/dist/assets/{Dart-Code.dart-code-3.109.20250404.vsix → Dart-Code.dart-code-3.117.20250731.vsix}/dart.json +0 -0
  172. /package/dist/assets/{Dart-Code.dart-code-3.109.20250404.vsix → Dart-Code.dart-code-3.117.20250731.vsix}/dart.png +0 -0
  173. /package/dist/assets/{Dart-Code.dart-code-3.109.20250404.vsix/README.md → Dart-Code.dart-code-3.117.20250731.vsix/readme.md} +0 -0
  174. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/eex-language-configuration.json +0 -0
  175. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/eex.json +0 -0
  176. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/elixir-language-configuration.json +0 -0
  177. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/elixir.json +0 -0
  178. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/html-eex.json +0 -0
  179. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/logo.png +0 -0
  180. /package/dist/assets/{JakeBecker.elixir-ls-0.27.2.vsix → JakeBecker.elixir-ls-0.28.0.vsix}/readme.md +0 -0
  181. /package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/README.md +0 -0
  182. /package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/icon.png +0 -0
  183. /package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/solidity-markdown-injection.json +0 -0
  184. /package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/solidity.configuration.json +0 -0
  185. /package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/solidity.json +0 -0
  186. /package/dist/assets/{JuanBlanco.solidity-0.0.184.vsix → JuanBlanco.solidity-0.0.185.vsix}/solidity2.json +0 -0
  187. /package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/Rcpp.json +0 -0
  188. /package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/Rlogo.png +0 -0
  189. /package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/dcf.json +0 -0
  190. /package/dist/assets/{REditorSupport.r-2.8.5.vsix/dcf-configuration.json → REditorSupport.r-2.8.6.vsix/dcf2.json} +0 -0
  191. /package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/r-snippets.json +0 -0
  192. /package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/rbuildignore.json +0 -0
  193. /package/dist/assets/{REditorSupport.r-2.8.5.vsix/rbuildignore-configuration.json → REditorSupport.r-2.8.6.vsix/rbuildignore2.json} +0 -0
  194. /package/dist/assets/{REditorSupport.r-2.8.5.vsix/Rd (R Documentation).json → REditorSupport.r-2.8.6.vsix/rd.json} +0 -0
  195. /package/dist/assets/{REditorSupport.r-2.8.5.vsix/rd-configuration.json → REditorSupport.r-2.8.6.vsix/rd2.json} +0 -0
  196. /package/dist/assets/{REditorSupport.r-2.8.5.vsix/rmarkdown2.json → REditorSupport.r-2.8.6.vsix/rmarkdown.json} +0 -0
  197. /package/dist/assets/{REditorSupport.r-2.8.5.vsix → REditorSupport.r-2.8.6.vsix}/rnamespace.json +0 -0
  198. /package/dist/assets/{REditorSupport.r-2.8.5.vsix/r-configuration.json → REditorSupport.r-2.8.6.vsix/rnamespace2.json} +0 -0
  199. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/changelog.md +0 -0
  200. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/icon.png +0 -0
  201. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/markdown-language-configuration.json +0 -0
  202. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/markdown-vue.json +0 -0
  203. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/mdx-vue.json +0 -0
  204. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/readme.md +0 -0
  205. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/sfc-template-language-configuration.json +0 -0
  206. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/vue-directives.json +0 -0
  207. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/vue-interpolations.json +0 -0
  208. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/vue-language-configuration.json +0 -0
  209. /package/dist/assets/{Vue.volar-3.0.1.vsix → Vue.volar-3.0.4.vsix}/vue-sfc-style-variable-injection.json +0 -0
  210. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/CICS.tmLanguage.json +0 -0
  211. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/lang-config.json +0 -0
  212. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/logo.png +0 -0
  213. /package/dist/assets/{broadcomMFD.cobol-language-support-2.4.0.vsix → broadcomMFD.cobol-language-support-2.4.3.vsix}/pgm_conf.schema.json +0 -0
  214. /package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/CHANGELOG.md +0 -0
  215. /package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/go-logo-blue.png +0 -0
  216. /package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/go.json +0 -0
  217. /package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/go.mod.language-configuration.json +0 -0
  218. /package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/go.mod.tmGrammar.json +0 -0
  219. /package/dist/assets/{golang.Go-0.47.2.vsix → golang.Go-0.49.0.vsix}/go.sum.tmGrammar.json +0 -0
  220. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/aspnetcorerazor.tmLanguage.json +0 -0
  221. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/csharp.json +0 -0
  222. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/csharpIcon.png +0 -0
  223. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/language-configuration.json +0 -0
  224. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/language-configuration2.json +0 -0
  225. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/vs2019_dark.json +0 -0
  226. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/vs2019_light.json +0 -0
  227. /package/dist/assets/{ms-dotnettools.csharp-2.74.24.vsix → ms-dotnettools.csharp-2.87.26.vsix}/xaml.tmLanguage.json +0 -0
  228. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/changelog.md +0 -0
  229. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/conda-environment.json +0 -0
  230. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/conda-meta.json +0 -0
  231. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/condarc.json +0 -0
  232. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/icon.png +0 -0
  233. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/pip-requirements.json +0 -0
  234. /package/dist/assets/{ms-python.python-2025.5.2025042501.vsix → ms-python.python-2025.11.2025072901.vsix}/pip-requirements.tmLanguage.json +0 -0
  235. /package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/LanguageCCPP_color_128x.png +0 -0
  236. /package/dist/assets/{ms-vscode.cpptools-1.25.1.vsix → ms-vscode.cpptools-1.26.3.vsix}/README.md +0 -0
  237. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/META.json +0 -0
  238. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/META2.json +0 -0
  239. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/atd.json +0 -0
  240. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/cram.json +0 -0
  241. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/dune-project.json +0 -0
  242. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/dune-project2.json +0 -0
  243. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/dune-workspace.json +0 -0
  244. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/dune2.json +0 -0
  245. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/dune3.json +0 -0
  246. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/logo.png +0 -0
  247. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/menhir-action.json +0 -0
  248. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/menhir.json +0 -0
  249. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/menhir2.json +0 -0
  250. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/merlin.json +0 -0
  251. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/oasis.json +0 -0
  252. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/oasis2.json +0 -0
  253. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocaml-markdown-codeblock.json +0 -0
  254. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocaml.interface.json +0 -0
  255. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocaml3.json +0 -0
  256. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamlbuild.json +0 -0
  257. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamlbuild2.json +0 -0
  258. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamldoc.json +0 -0
  259. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamlformat.json +0 -0
  260. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamlformat2.json +0 -0
  261. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamllex.json +0 -0
  262. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamllex2.json +0 -0
  263. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/ocamllex3.json +0 -0
  264. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/opam-install.json +0 -0
  265. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/opam-install2.json +0 -0
  266. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/opam.json +0 -0
  267. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/opam2.json +0 -0
  268. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/reason-markdown-codeblock.json +0 -0
  269. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/reason.json +0 -0
  270. /package/dist/assets/{ocamllabs.ocaml-platform-1.29.0.vsix → ocamllabs.ocaml-platform-1.31.0.vsix}/reason2.json +0 -0
  271. /package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/erlang-fileicon-dark.png +0 -0
  272. /package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/erlang-fileicon-light.png +0 -0
  273. /package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/erlang.configuration.json +0 -0
  274. /package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/erlang.json +0 -0
  275. /package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/icon.png +0 -0
  276. /package/dist/assets/{pgourlain.erlang-1.1.2.vsix → pgourlain.erlang-1.1.3.vsix}/readme.md +0 -0
  277. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/JavaProperties.tmLanguage.json +0 -0
  278. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/icon128.png +0 -0
  279. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/inline-html.json +0 -0
  280. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/inline-json.json +0 -0
  281. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/inline-sql.json +0 -0
  282. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/inline-xml.json +0 -0
  283. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/inline-yaml.json +0 -0
  284. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/java-properties-configuration.json +0 -0
  285. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/java.tmLanguage.json +0 -0
  286. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/kotlin.tmLanguage.json +0 -0
  287. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/language-configuration.json +0 -0
  288. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/language-configuration2.json +0 -0
  289. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/package.nls.json +0 -0
  290. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/package.nls.ko.json +0 -0
  291. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/package.nls.zh-cn.json +0 -0
  292. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/package.nls.zh-tw.json +0 -0
  293. /package/dist/assets/{redhat.java-1.42.2025041008.vsix → redhat.java-1.44.2025073008.vsix}/package.schema.json +0 -0
  294. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/CHANGELOG.md +0 -0
  295. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/README.md +0 -0
  296. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/book-dark.svg +0 -0
  297. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/book-light.svg +0 -0
  298. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/buildtarget.json +0 -0
  299. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/file_type_java.svg +0 -0
  300. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/file_type_scala.svg +0 -0
  301. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/jvm-bytecode-verbose.json +0 -0
  302. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/jvm-bytecode.json +0 -0
  303. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/logo.png +0 -0
  304. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/scalameta-logo.png +0 -0
  305. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/semanticdb.json +0 -0
  306. /package/dist/assets/{scalameta.metals-1.49.2.vsix → scalameta.metals-1.52.4.vsix}/tasty.json +0 -0
  307. /package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/logo.png +0 -0
  308. /package/dist/assets/{sumneko.lua-3.14.0.vsix → sumneko.lua-3.15.0.vsix}/readme.md +0 -0
  309. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/CHANGELOG.md +0 -0
  310. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/README.md +0 -0
  311. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/javascript.json +0 -0
  312. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/language-configuration.json +0 -0
  313. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/logo.png +0 -0
  314. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/markdown-svelte-css.json +0 -0
  315. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/markdown-svelte-js.json +0 -0
  316. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/markdown-svelte.json +0 -0
  317. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/package-json-schema.json +0 -0
  318. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/postcss.json +0 -0
  319. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/prettier-options-schema.json +0 -0
  320. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/pug-svelte-dotblock.json +0 -0
  321. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/pug-svelte-tags.json +0 -0
  322. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/pug-svelte.json +0 -0
  323. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/svelte.json +0 -0
  324. /package/dist/assets/{svelte.svelte-vscode-109.5.4.vsix → svelte.svelte-vscode-109.10.0.vsix}/typescript.json +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "go",
3
3
  "displayName": "Go",
4
- "version": "0.47.2",
4
+ "version": "0.49.0",
5
5
  "publisher": "golang",
6
6
  "description": "Rich Go language support for Visual Studio Code",
7
7
  "author": {
@@ -74,9 +74,9 @@
74
74
  "@types/node-fetch": "2.6.9",
75
75
  "@types/semver": "7.3.4",
76
76
  "@types/sinon": "9.0.11",
77
- "@types/vscode": "1.75.0",
78
- "@vscode/debugadapter-testsupport": "1.58.0",
79
- "@vscode/test-electron": "2.3.8",
77
+ "@types/vscode": "1.90.0",
78
+ "@vscode/debugadapter-testsupport": "1.68.0",
79
+ "@vscode/test-electron": "2.5.2",
80
80
  "@vscode/vsce": "2.23.0",
81
81
  "adm-zip": "0.4.16",
82
82
  "esbuild": "0.17.10",
@@ -91,13 +91,14 @@
91
91
  "yarn": "1.22.22"
92
92
  },
93
93
  "engines": {
94
- "vscode": "^1.75.0",
94
+ "vscode": "^1.90.0",
95
95
  "node": ">=16.14.2"
96
96
  },
97
97
  "activationEvents": [
98
98
  "onLanguage:go",
99
99
  "onLanguage:go.sum",
100
100
  "onLanguage:gotmpl",
101
+ "onLanguage:go.asm",
101
102
  "onDebugInitialConfigurations",
102
103
  "onDebugResolve:go",
103
104
  "onWebviewPanel:welcomeGo"
@@ -129,6 +130,15 @@
129
130
  "Go"
130
131
  ]
131
132
  },
133
+ {
134
+ "id": "go.asm",
135
+ "extensions": [
136
+ ".s"
137
+ ],
138
+ "aliases": [
139
+ "Go Assembly"
140
+ ]
141
+ },
132
142
  {
133
143
  "id": "go.mod",
134
144
  "filenames": [
@@ -391,12 +401,12 @@
391
401
  {
392
402
  "command": "go.add.tags",
393
403
  "title": "Go: Add Tags To Struct Fields",
394
- "description": "Add tags configured in go.addTags setting to selected struct using gomodifytags"
404
+ "description": "Add tags configured in go.addTags setting to selected struct using gomodifytags (via gopls)"
395
405
  },
396
406
  {
397
407
  "command": "go.remove.tags",
398
408
  "title": "Go: Remove Tags From Struct Fields",
399
- "description": "Remove tags configured in go.removeTags setting from selected struct using gomodifytags"
409
+ "description": "Remove tags configured in go.removeTags setting from selected struct using gomodifytags (via gopls)"
400
410
  },
401
411
  {
402
412
  "command": "go.show.commands",
@@ -2033,7 +2043,7 @@
2033
2043
  },
2034
2044
  "run_govulncheck": {
2035
2045
  "type": "boolean",
2036
- "markdownDescription": "`\"run_govulncheck\"`: Run govulncheck (legacy)\n\nThis codelens source annotates the `module` directive in a go.mod file\nwith a command to run Govulncheck asynchronously.\n\n[Govulncheck](https://go.dev/blog/vuln) is a static analysis tool that\ncomputes the set of functions reachable within your application, including\ndependencies; queries a database of known security vulnerabilities; and\nreports any potential problems it finds.\n",
2046
+ "markdownDescription": "(Experimental) `\"run_govulncheck\"`: Run govulncheck (legacy)\n\nThis codelens source annotates the `module` directive in a go.mod file\nwith a command to run Govulncheck asynchronously.\n\n[Govulncheck](https://go.dev/blog/vuln) is a static analysis tool that\ncomputes the set of functions reachable within your application, including\ndependencies; queries a database of known security vulnerabilities; and\nreports any potential problems it finds.\n",
2037
2047
  "default": false
2038
2048
  },
2039
2049
  "test": {
@@ -2058,7 +2068,7 @@
2058
2068
  },
2059
2069
  "vulncheck": {
2060
2070
  "type": "boolean",
2061
- "markdownDescription": "`\"vulncheck\"`: Run govulncheck\n\nThis codelens source annotates the `module` directive in a go.mod file\nwith a command to run govulncheck synchronously.\n\n[Govulncheck](https://go.dev/blog/vuln) is a static analysis tool that\ncomputes the set of functions reachable within your application, including\ndependencies; queries a database of known security vulnerabilities; and\nreports any potential problems it finds.\n",
2071
+ "markdownDescription": "(Experimental) `\"vulncheck\"`: Run govulncheck\n\nThis codelens source annotates the `module` directive in a go.mod file\nwith a command to run govulncheck synchronously.\n\n[Govulncheck](https://go.dev/blog/vuln) is a static analysis tool that\ncomputes the set of functions reachable within your application, including\ndependencies; queries a database of known security vulnerabilities; and\nreports any potential problems it finds.\n",
2062
2072
  "default": false
2063
2073
  }
2064
2074
  }
@@ -2108,6 +2118,781 @@
2108
2118
  "markdownDescription": "analyses specify analyses that the user would like to enable or disable.\nA map of the names of analysis passes that should be enabled/disabled.\nA full list of analyzers that gopls uses can be found in\n[analyzers.md](https://github.com/golang/tools/blob/master/gopls/doc/analyzers.md).\n\nExample Usage:\n\n```json5\n...\n\"analyses\": {\n \"unreachable\": false, // Disable the unreachable analyzer.\n \"unusedvariable\": true // Enable the unusedvariable analyzer.\n}\n...\n```\n",
2109
2119
  "scope": "resource",
2110
2120
  "properties": {
2121
+ "QF1001": {
2122
+ "type": "boolean",
2123
+ "markdownDescription": "Apply De Morgan's law\n\nAvailable since\n 2021.1\n",
2124
+ "default": false
2125
+ },
2126
+ "QF1002": {
2127
+ "type": "boolean",
2128
+ "markdownDescription": "Convert untagged switch to tagged switch\n\nAn untagged switch that compares a single variable against a series of\nvalues can be replaced with a tagged switch.\n\nBefore:\n\n switch {\n case x == 1 || x == 2, x == 3:\n ...\n case x == 4:\n ...\n default:\n ...\n }\n\nAfter:\n\n switch x {\n case 1, 2, 3:\n ...\n case 4:\n ...\n default:\n ...\n }\n\nAvailable since\n 2021.1\n",
2129
+ "default": true
2130
+ },
2131
+ "QF1003": {
2132
+ "type": "boolean",
2133
+ "markdownDescription": "Convert if/else-if chain to tagged switch\n\nA series of if/else-if checks comparing the same variable against\nvalues can be replaced with a tagged switch.\n\nBefore:\n\n if x == 1 || x == 2 {\n ...\n } else if x == 3 {\n ...\n } else {\n ...\n }\n\nAfter:\n\n switch x {\n case 1, 2:\n ...\n case 3:\n ...\n default:\n ...\n }\n\nAvailable since\n 2021.1\n",
2134
+ "default": true
2135
+ },
2136
+ "QF1004": {
2137
+ "type": "boolean",
2138
+ "markdownDescription": "Use strings.ReplaceAll instead of strings.Replace with n == -1\n\nAvailable since\n 2021.1\n",
2139
+ "default": true
2140
+ },
2141
+ "QF1005": {
2142
+ "type": "boolean",
2143
+ "markdownDescription": "Expand call to math.Pow\n\nSome uses of math.Pow can be simplified to basic multiplication.\n\nBefore:\n\n math.Pow(x, 2)\n\nAfter:\n\n x * x\n\nAvailable since\n 2021.1\n",
2144
+ "default": false
2145
+ },
2146
+ "QF1006": {
2147
+ "type": "boolean",
2148
+ "markdownDescription": "Lift if+break into loop condition\n\nBefore:\n\n for {\n if done {\n break\n }\n ...\n }\n\nAfter:\n\n for !done {\n ...\n }\n\nAvailable since\n 2021.1\n",
2149
+ "default": false
2150
+ },
2151
+ "QF1007": {
2152
+ "type": "boolean",
2153
+ "markdownDescription": "Merge conditional assignment into variable declaration\n\nBefore:\n\n x := false\n if someCondition {\n x = true\n }\n\nAfter:\n\n x := someCondition\n\nAvailable since\n 2021.1\n",
2154
+ "default": false
2155
+ },
2156
+ "QF1008": {
2157
+ "type": "boolean",
2158
+ "markdownDescription": "Omit embedded fields from selector expression\n\nAvailable since\n 2021.1\n",
2159
+ "default": false
2160
+ },
2161
+ "QF1009": {
2162
+ "type": "boolean",
2163
+ "markdownDescription": "Use time.Time.Equal instead of == operator\n\nAvailable since\n 2021.1\n",
2164
+ "default": true
2165
+ },
2166
+ "QF1010": {
2167
+ "type": "boolean",
2168
+ "markdownDescription": "Convert slice of bytes to string when printing it\n\nAvailable since\n 2021.1\n",
2169
+ "default": true
2170
+ },
2171
+ "QF1011": {
2172
+ "type": "boolean",
2173
+ "markdownDescription": "Omit redundant type from variable declaration\n\nAvailable since\n 2021.1\n",
2174
+ "default": false
2175
+ },
2176
+ "QF1012": {
2177
+ "type": "boolean",
2178
+ "markdownDescription": "Use fmt.Fprintf(x, ...) instead of x.Write(fmt.Sprintf(...))\n\nAvailable since\n 2022.1\n",
2179
+ "default": true
2180
+ },
2181
+ "S1000": {
2182
+ "type": "boolean",
2183
+ "markdownDescription": "Use plain channel send or receive instead of single-case select\n\nSelect statements with a single case can be replaced with a simple\nsend or receive.\n\nBefore:\n\n select {\n case x := <-ch:\n fmt.Println(x)\n }\n\nAfter:\n\n x := <-ch\n fmt.Println(x)\n\nAvailable since\n 2017.1\n",
2184
+ "default": true
2185
+ },
2186
+ "S1001": {
2187
+ "type": "boolean",
2188
+ "markdownDescription": "Replace for loop with call to copy\n\nUse copy() for copying elements from one slice to another. For\narrays of identical size, you can use simple assignment.\n\nBefore:\n\n for i, x := range src {\n dst[i] = x\n }\n\nAfter:\n\n copy(dst, src)\n\nAvailable since\n 2017.1\n",
2189
+ "default": true
2190
+ },
2191
+ "S1002": {
2192
+ "type": "boolean",
2193
+ "markdownDescription": "Omit comparison with boolean constant\n\nBefore:\n\n if x == true {}\n\nAfter:\n\n if x {}\n\nAvailable since\n 2017.1\n",
2194
+ "default": false
2195
+ },
2196
+ "S1003": {
2197
+ "type": "boolean",
2198
+ "markdownDescription": "Replace call to strings.Index with strings.Contains\n\nBefore:\n\n if strings.Index(x, y) != -1 {}\n\nAfter:\n\n if strings.Contains(x, y) {}\n\nAvailable since\n 2017.1\n",
2199
+ "default": true
2200
+ },
2201
+ "S1004": {
2202
+ "type": "boolean",
2203
+ "markdownDescription": "Replace call to bytes.Compare with bytes.Equal\n\nBefore:\n\n if bytes.Compare(x, y) == 0 {}\n\nAfter:\n\n if bytes.Equal(x, y) {}\n\nAvailable since\n 2017.1\n",
2204
+ "default": true
2205
+ },
2206
+ "S1005": {
2207
+ "type": "boolean",
2208
+ "markdownDescription": "Drop unnecessary use of the blank identifier\n\nIn many cases, assigning to the blank identifier is unnecessary.\n\nBefore:\n\n for _ = range s {}\n x, _ = someMap[key]\n _ = <-ch\n\nAfter:\n\n for range s{}\n x = someMap[key]\n <-ch\n\nAvailable since\n 2017.1\n",
2209
+ "default": false
2210
+ },
2211
+ "S1006": {
2212
+ "type": "boolean",
2213
+ "markdownDescription": "Use 'for { ... }' for infinite loops\n\nFor infinite loops, using for { ... } is the most idiomatic choice.\n\nAvailable since\n 2017.1\n",
2214
+ "default": false
2215
+ },
2216
+ "S1007": {
2217
+ "type": "boolean",
2218
+ "markdownDescription": "Simplify regular expression by using raw string literal\n\nRaw string literals use backticks instead of quotation marks and do not support\nany escape sequences. This means that the backslash can be used\nfreely, without the need of escaping.\n\nSince regular expressions have their own escape sequences, raw strings\ncan improve their readability.\n\nBefore:\n\n regexp.Compile(\"\\\\A(\\\\w+) profile: total \\\\d+\\\\n\\\\z\")\n\nAfter:\n\n regexp.Compile(`\\A(\\w+) profile: total \\d+\\n\\z`)\n\nAvailable since\n 2017.1\n",
2219
+ "default": true
2220
+ },
2221
+ "S1008": {
2222
+ "type": "boolean",
2223
+ "markdownDescription": "Simplify returning boolean expression\n\nBefore:\n\n if <expr> {\n return true\n }\n return false\n\nAfter:\n\n return <expr>\n\nAvailable since\n 2017.1\n",
2224
+ "default": false
2225
+ },
2226
+ "S1009": {
2227
+ "type": "boolean",
2228
+ "markdownDescription": "Omit redundant nil check on slices, maps, and channels\n\nThe len function is defined for all slices, maps, and\nchannels, even nil ones, which have a length of zero. It is not necessary to\ncheck for nil before checking that their length is not zero.\n\nBefore:\n\n if x != nil && len(x) != 0 {}\n\nAfter:\n\n if len(x) != 0 {}\n\nAvailable since\n 2017.1\n",
2229
+ "default": true
2230
+ },
2231
+ "S1010": {
2232
+ "type": "boolean",
2233
+ "markdownDescription": "Omit default slice index\n\nWhen slicing, the second index defaults to the length of the value,\nmaking s[n:len(s)] and s[n:] equivalent.\n\nAvailable since\n 2017.1\n",
2234
+ "default": true
2235
+ },
2236
+ "S1011": {
2237
+ "type": "boolean",
2238
+ "markdownDescription": "Use a single append to concatenate two slices\n\nBefore:\n\n for _, e := range y {\n x = append(x, e)\n }\n \n for i := range y {\n x = append(x, y[i])\n }\n \n for i := range y {\n v := y[i]\n x = append(x, v)\n }\n\nAfter:\n\n x = append(x, y...)\n x = append(x, y...)\n x = append(x, y...)\n\nAvailable since\n 2017.1\n",
2239
+ "default": false
2240
+ },
2241
+ "S1012": {
2242
+ "type": "boolean",
2243
+ "markdownDescription": "Replace time.Now().Sub(x) with time.Since(x)\n\nThe time.Since helper has the same effect as using time.Now().Sub(x)\nbut is easier to read.\n\nBefore:\n\n time.Now().Sub(x)\n\nAfter:\n\n time.Since(x)\n\nAvailable since\n 2017.1\n",
2244
+ "default": true
2245
+ },
2246
+ "S1016": {
2247
+ "type": "boolean",
2248
+ "markdownDescription": "Use a type conversion instead of manually copying struct fields\n\nTwo struct types with identical fields can be converted between each\nother. In older versions of Go, the fields had to have identical\nstruct tags. Since Go 1.8, however, struct tags are ignored during\nconversions. It is thus not necessary to manually copy every field\nindividually.\n\nBefore:\n\n var x T1\n y := T2{\n Field1: x.Field1,\n Field2: x.Field2,\n }\n\nAfter:\n\n var x T1\n y := T2(x)\n\nAvailable since\n 2017.1\n",
2249
+ "default": false
2250
+ },
2251
+ "S1017": {
2252
+ "type": "boolean",
2253
+ "markdownDescription": "Replace manual trimming with strings.TrimPrefix\n\nInstead of using strings.HasPrefix and manual slicing, use the\nstrings.TrimPrefix function. If the string doesn't start with the\nprefix, the original string will be returned. Using strings.TrimPrefix\nreduces complexity, and avoids common bugs, such as off-by-one\nmistakes.\n\nBefore:\n\n if strings.HasPrefix(str, prefix) {\n str = str[len(prefix):]\n }\n\nAfter:\n\n str = strings.TrimPrefix(str, prefix)\n\nAvailable since\n 2017.1\n",
2254
+ "default": true
2255
+ },
2256
+ "S1018": {
2257
+ "type": "boolean",
2258
+ "markdownDescription": "Use 'copy' for sliding elements\n\ncopy() permits using the same source and destination slice, even with\noverlapping ranges. This makes it ideal for sliding elements in a\nslice.\n\nBefore:\n\n for i := 0; i < n; i++ {\n bs[i] = bs[offset+i]\n }\n\nAfter:\n\n copy(bs[:n], bs[offset:])\n\nAvailable since\n 2017.1\n",
2259
+ "default": true
2260
+ },
2261
+ "S1019": {
2262
+ "type": "boolean",
2263
+ "markdownDescription": "Simplify 'make' call by omitting redundant arguments\n\nThe 'make' function has default values for the length and capacity\narguments. For channels, the length defaults to zero, and for slices,\nthe capacity defaults to the length.\n\nAvailable since\n 2017.1\n",
2264
+ "default": true
2265
+ },
2266
+ "S1020": {
2267
+ "type": "boolean",
2268
+ "markdownDescription": "Omit redundant nil check in type assertion\n\nBefore:\n\n if _, ok := i.(T); ok && i != nil {}\n\nAfter:\n\n if _, ok := i.(T); ok {}\n\nAvailable since\n 2017.1\n",
2269
+ "default": true
2270
+ },
2271
+ "S1021": {
2272
+ "type": "boolean",
2273
+ "markdownDescription": "Merge variable declaration and assignment\n\nBefore:\n\n var x uint\n x = 1\n\nAfter:\n\n var x uint = 1\n\nAvailable since\n 2017.1\n",
2274
+ "default": false
2275
+ },
2276
+ "S1023": {
2277
+ "type": "boolean",
2278
+ "markdownDescription": "Omit redundant control flow\n\nFunctions that have no return value do not need a return statement as\nthe final statement of the function.\n\nSwitches in Go do not have automatic fallthrough, unlike languages\nlike C. It is not necessary to have a break statement as the final\nstatement in a case block.\n\nAvailable since\n 2017.1\n",
2279
+ "default": true
2280
+ },
2281
+ "S1024": {
2282
+ "type": "boolean",
2283
+ "markdownDescription": "Replace x.Sub(time.Now()) with time.Until(x)\n\nThe time.Until helper has the same effect as using x.Sub(time.Now())\nbut is easier to read.\n\nBefore:\n\n x.Sub(time.Now())\n\nAfter:\n\n time.Until(x)\n\nAvailable since\n 2017.1\n",
2284
+ "default": true
2285
+ },
2286
+ "S1025": {
2287
+ "type": "boolean",
2288
+ "markdownDescription": "Don't use fmt.Sprintf(\"%s\", x) unnecessarily\n\nIn many instances, there are easier and more efficient ways of getting\na value's string representation. Whenever a value's underlying type is\na string already, or the type has a String method, they should be used\ndirectly.\n\nGiven the following shared definitions\n\n type T1 string\n type T2 int\n\n func (T2) String() string { return \"Hello, world\" }\n\n var x string\n var y T1\n var z T2\n\nwe can simplify\n\n fmt.Sprintf(\"%s\", x)\n fmt.Sprintf(\"%s\", y)\n fmt.Sprintf(\"%s\", z)\n\nto\n\n x\n string(y)\n z.String()\n\nAvailable since\n 2017.1\n",
2289
+ "default": false
2290
+ },
2291
+ "S1028": {
2292
+ "type": "boolean",
2293
+ "markdownDescription": "Simplify error construction with fmt.Errorf\n\nBefore:\n\n errors.New(fmt.Sprintf(...))\n\nAfter:\n\n fmt.Errorf(...)\n\nAvailable since\n 2017.1\n",
2294
+ "default": true
2295
+ },
2296
+ "S1029": {
2297
+ "type": "boolean",
2298
+ "markdownDescription": "Range over the string directly\n\nRanging over a string will yield byte offsets and runes. If the offset\nisn't used, this is functionally equivalent to converting the string\nto a slice of runes and ranging over that. Ranging directly over the\nstring will be more performant, however, as it avoids allocating a new\nslice, the size of which depends on the length of the string.\n\nBefore:\n\n for _, r := range []rune(s) {}\n\nAfter:\n\n for _, r := range s {}\n\nAvailable since\n 2017.1\n",
2299
+ "default": false
2300
+ },
2301
+ "S1030": {
2302
+ "type": "boolean",
2303
+ "markdownDescription": "Use bytes.Buffer.String or bytes.Buffer.Bytes\n\nbytes.Buffer has both a String and a Bytes method. It is almost never\nnecessary to use string(buf.Bytes()) or []byte(buf.String()) – simply\nuse the other method.\n\nThe only exception to this are map lookups. Due to a compiler optimization,\nm[string(buf.Bytes())] is more efficient than m[buf.String()].\n\nAvailable since\n 2017.1\n",
2304
+ "default": true
2305
+ },
2306
+ "S1031": {
2307
+ "type": "boolean",
2308
+ "markdownDescription": "Omit redundant nil check around loop\n\nYou can use range on nil slices and maps, the loop will simply never\nexecute. This makes an additional nil check around the loop\nunnecessary.\n\nBefore:\n\n if s != nil {\n for _, x := range s {\n ...\n }\n }\n\nAfter:\n\n for _, x := range s {\n ...\n }\n\nAvailable since\n 2017.1\n",
2309
+ "default": true
2310
+ },
2311
+ "S1032": {
2312
+ "type": "boolean",
2313
+ "markdownDescription": "Use sort.Ints(x), sort.Float64s(x), and sort.Strings(x)\n\nThe sort.Ints, sort.Float64s and sort.Strings functions are easier to\nread than sort.Sort(sort.IntSlice(x)), sort.Sort(sort.Float64Slice(x))\nand sort.Sort(sort.StringSlice(x)).\n\nBefore:\n\n sort.Sort(sort.StringSlice(x))\n\nAfter:\n\n sort.Strings(x)\n\nAvailable since\n 2019.1\n",
2314
+ "default": true
2315
+ },
2316
+ "S1033": {
2317
+ "type": "boolean",
2318
+ "markdownDescription": "Unnecessary guard around call to 'delete'\n\nCalling delete on a nil map is a no-op.\n\nAvailable since\n 2019.2\n",
2319
+ "default": true
2320
+ },
2321
+ "S1034": {
2322
+ "type": "boolean",
2323
+ "markdownDescription": "Use result of type assertion to simplify cases\n\nAvailable since\n 2019.2\n",
2324
+ "default": true
2325
+ },
2326
+ "S1035": {
2327
+ "type": "boolean",
2328
+ "markdownDescription": "Redundant call to net/http.CanonicalHeaderKey in method call on net/http.Header\n\nThe methods on net/http.Header, namely Add, Del, Get\nand Set, already canonicalize the given header name.\n\nAvailable since\n 2020.1\n",
2329
+ "default": true
2330
+ },
2331
+ "S1036": {
2332
+ "type": "boolean",
2333
+ "markdownDescription": "Unnecessary guard around map access\n\nWhen accessing a map key that doesn't exist yet, one receives a zero\nvalue. Often, the zero value is a suitable value, for example when\nusing append or doing integer math.\n\nThe following\n\n if _, ok := m[\"foo\"]; ok {\n m[\"foo\"] = append(m[\"foo\"], \"bar\")\n } else {\n m[\"foo\"] = []string{\"bar\"}\n }\n\ncan be simplified to\n\n m[\"foo\"] = append(m[\"foo\"], \"bar\")\n\nand\n\n if _, ok := m2[\"k\"]; ok {\n m2[\"k\"] += 4\n } else {\n m2[\"k\"] = 4\n }\n\ncan be simplified to\n\n m[\"k\"] += 4\n\nAvailable since\n 2020.1\n",
2334
+ "default": true
2335
+ },
2336
+ "S1037": {
2337
+ "type": "boolean",
2338
+ "markdownDescription": "Elaborate way of sleeping\n\nUsing a select statement with a single case receiving\nfrom the result of time.After is a very elaborate way of sleeping that\ncan much simpler be expressed with a simple call to time.Sleep.\n\nAvailable since\n 2020.1\n",
2339
+ "default": true
2340
+ },
2341
+ "S1038": {
2342
+ "type": "boolean",
2343
+ "markdownDescription": "Unnecessarily complex way of printing formatted string\n\nInstead of using fmt.Print(fmt.Sprintf(...)), one can use fmt.Printf(...).\n\nAvailable since\n 2020.1\n",
2344
+ "default": true
2345
+ },
2346
+ "S1039": {
2347
+ "type": "boolean",
2348
+ "markdownDescription": "Unnecessary use of fmt.Sprint\n\nCalling fmt.Sprint with a single string argument is unnecessary\nand identical to using the string directly.\n\nAvailable since\n 2020.1\n",
2349
+ "default": true
2350
+ },
2351
+ "S1040": {
2352
+ "type": "boolean",
2353
+ "markdownDescription": "Type assertion to current type\n\nThe type assertion x.(SomeInterface), when x already has type\nSomeInterface, can only fail if x is nil. Usually, this is\nleft-over code from when x had a different type and you can safely\ndelete the type assertion. If you want to check that x is not nil,\nconsider being explicit and using an actual if x == nil comparison\ninstead of relying on the type assertion panicking.\n\nAvailable since\n 2021.1\n",
2354
+ "default": true
2355
+ },
2356
+ "SA1000": {
2357
+ "type": "boolean",
2358
+ "markdownDescription": "Invalid regular expression\n\nAvailable since\n 2017.1\n",
2359
+ "default": false
2360
+ },
2361
+ "SA1001": {
2362
+ "type": "boolean",
2363
+ "markdownDescription": "Invalid template\n\nAvailable since\n 2017.1\n",
2364
+ "default": true
2365
+ },
2366
+ "SA1002": {
2367
+ "type": "boolean",
2368
+ "markdownDescription": "Invalid format in time.Parse\n\nAvailable since\n 2017.1\n",
2369
+ "default": false
2370
+ },
2371
+ "SA1003": {
2372
+ "type": "boolean",
2373
+ "markdownDescription": "Unsupported argument to functions in encoding/binary\n\nThe encoding/binary package can only serialize types with known sizes.\nThis precludes the use of the int and uint types, as their sizes\ndiffer on different architectures. Furthermore, it doesn't support\nserializing maps, channels, strings, or functions.\n\nBefore Go 1.8, bool wasn't supported, either.\n\nAvailable since\n 2017.1\n",
2374
+ "default": false
2375
+ },
2376
+ "SA1004": {
2377
+ "type": "boolean",
2378
+ "markdownDescription": "Suspiciously small untyped constant in time.Sleep\n\nThe time.Sleep function takes a time.Duration as its only argument.\nDurations are expressed in nanoseconds. Thus, calling time.Sleep(1)\nwill sleep for 1 nanosecond. This is a common source of bugs, as sleep\nfunctions in other languages often accept seconds or milliseconds.\n\nThe time package provides constants such as time.Second to express\nlarge durations. These can be combined with arithmetic to express\narbitrary durations, for example 5 * time.Second for 5 seconds.\n\nIf you truly meant to sleep for a tiny amount of time, use\nn * time.Nanosecond to signal to Staticcheck that you did mean to sleep\nfor some amount of nanoseconds.\n\nAvailable since\n 2017.1\n",
2379
+ "default": true
2380
+ },
2381
+ "SA1005": {
2382
+ "type": "boolean",
2383
+ "markdownDescription": "Invalid first argument to exec.Command\n\nos/exec runs programs directly (using variants of the fork and exec\nsystem calls on Unix systems). This shouldn't be confused with running\na command in a shell. The shell will allow for features such as input\nredirection, pipes, and general scripting. The shell is also\nresponsible for splitting the user's input into a program name and its\narguments. For example, the equivalent to\n\n ls / /tmp\n\nwould be\n\n exec.Command(\"ls\", \"/\", \"/tmp\")\n\nIf you want to run a command in a shell, consider using something like\nthe following – but be aware that not all systems, particularly\nWindows, will have a /bin/sh program:\n\n exec.Command(\"/bin/sh\", \"-c\", \"ls | grep Awesome\")\n\nAvailable since\n 2017.1\n",
2384
+ "default": true
2385
+ },
2386
+ "SA1007": {
2387
+ "type": "boolean",
2388
+ "markdownDescription": "Invalid URL in net/url.Parse\n\nAvailable since\n 2017.1\n",
2389
+ "default": false
2390
+ },
2391
+ "SA1008": {
2392
+ "type": "boolean",
2393
+ "markdownDescription": "Non-canonical key in http.Header map\n\nKeys in http.Header maps are canonical, meaning they follow a specific\ncombination of uppercase and lowercase letters. Methods such as\nhttp.Header.Add and http.Header.Del convert inputs into this canonical\nform before manipulating the map.\n\nWhen manipulating http.Header maps directly, as opposed to using the\nprovided methods, care should be taken to stick to canonical form in\norder to avoid inconsistencies. The following piece of code\ndemonstrates one such inconsistency:\n\n h := http.Header{}\n h[\"etag\"] = []string{\"1234\"}\n h.Add(\"etag\", \"5678\")\n fmt.Println(h)\n\n // Output:\n // map[Etag:[5678] etag:[1234]]\n\nThe easiest way of obtaining the canonical form of a key is to use\nhttp.CanonicalHeaderKey.\n\nAvailable since\n 2017.1\n",
2394
+ "default": true
2395
+ },
2396
+ "SA1010": {
2397
+ "type": "boolean",
2398
+ "markdownDescription": "(*regexp.Regexp).FindAll called with n == 0, which will always return zero results\n\nIf n >= 0, the function returns at most n matches/submatches. To\nreturn all results, specify a negative number.\n\nAvailable since\n 2017.1\n",
2399
+ "default": false
2400
+ },
2401
+ "SA1011": {
2402
+ "type": "boolean",
2403
+ "markdownDescription": "Various methods in the 'strings' package expect valid UTF-8, but invalid input is provided\n\nAvailable since\n 2017.1\n",
2404
+ "default": false
2405
+ },
2406
+ "SA1012": {
2407
+ "type": "boolean",
2408
+ "markdownDescription": "A nil context.Context is being passed to a function, consider using context.TODO instead\n\nAvailable since\n 2017.1\n",
2409
+ "default": true
2410
+ },
2411
+ "SA1013": {
2412
+ "type": "boolean",
2413
+ "markdownDescription": "io.Seeker.Seek is being called with the whence constant as the first argument, but it should be the second\n\nAvailable since\n 2017.1\n",
2414
+ "default": true
2415
+ },
2416
+ "SA1014": {
2417
+ "type": "boolean",
2418
+ "markdownDescription": "Non-pointer value passed to Unmarshal or Decode\n\nAvailable since\n 2017.1\n",
2419
+ "default": false
2420
+ },
2421
+ "SA1015": {
2422
+ "type": "boolean",
2423
+ "markdownDescription": "Using time.Tick in a way that will leak. Consider using time.NewTicker, and only use time.Tick in tests, commands and endless functions\n\nBefore Go 1.23, time.Tickers had to be closed to be able to be garbage\ncollected. Since time.Tick doesn't make it possible to close the underlying\nticker, using it repeatedly would leak memory.\n\nGo 1.23 fixes this by allowing tickers to be collected even if they weren't closed.\n\nAvailable since\n 2017.1\n",
2424
+ "default": false
2425
+ },
2426
+ "SA1016": {
2427
+ "type": "boolean",
2428
+ "markdownDescription": "Trapping a signal that cannot be trapped\n\nNot all signals can be intercepted by a process. Specifically, on\nUNIX-like systems, the syscall.SIGKILL and syscall.SIGSTOP signals are\nnever passed to the process, but instead handled directly by the\nkernel. It is therefore pointless to try and handle these signals.\n\nAvailable since\n 2017.1\n",
2429
+ "default": true
2430
+ },
2431
+ "SA1017": {
2432
+ "type": "boolean",
2433
+ "markdownDescription": "Channels used with os/signal.Notify should be buffered\n\nThe os/signal package uses non-blocking channel sends when delivering\nsignals. If the receiving end of the channel isn't ready and the\nchannel is either unbuffered or full, the signal will be dropped. To\navoid missing signals, the channel should be buffered and of the\nappropriate size. For a channel used for notification of just one\nsignal value, a buffer of size 1 is sufficient.\n\nAvailable since\n 2017.1\n",
2434
+ "default": false
2435
+ },
2436
+ "SA1018": {
2437
+ "type": "boolean",
2438
+ "markdownDescription": "strings.Replace called with n == 0, which does nothing\n\nWith n == 0, zero instances will be replaced. To replace all\ninstances, use a negative number, or use strings.ReplaceAll.\n\nAvailable since\n 2017.1\n",
2439
+ "default": false
2440
+ },
2441
+ "SA1020": {
2442
+ "type": "boolean",
2443
+ "markdownDescription": "Using an invalid host:port pair with a net.Listen-related function\n\nAvailable since\n 2017.1\n",
2444
+ "default": false
2445
+ },
2446
+ "SA1021": {
2447
+ "type": "boolean",
2448
+ "markdownDescription": "Using bytes.Equal to compare two net.IP\n\nA net.IP stores an IPv4 or IPv6 address as a slice of bytes. The\nlength of the slice for an IPv4 address, however, can be either 4 or\n16 bytes long, using different ways of representing IPv4 addresses. In\norder to correctly compare two net.IPs, the net.IP.Equal method should\nbe used, as it takes both representations into account.\n\nAvailable since\n 2017.1\n",
2449
+ "default": false
2450
+ },
2451
+ "SA1023": {
2452
+ "type": "boolean",
2453
+ "markdownDescription": "Modifying the buffer in an io.Writer implementation\n\nWrite must not modify the slice data, even temporarily.\n\nAvailable since\n 2017.1\n",
2454
+ "default": false
2455
+ },
2456
+ "SA1024": {
2457
+ "type": "boolean",
2458
+ "markdownDescription": "A string cutset contains duplicate characters\n\nThe strings.TrimLeft and strings.TrimRight functions take cutsets, not\nprefixes. A cutset is treated as a set of characters to remove from a\nstring. For example,\n\n strings.TrimLeft(\"42133word\", \"1234\")\n\nwill result in the string \"word\" – any characters that are 1, 2, 3 or\n4 are cut from the left of the string.\n\nIn order to remove one string from another, use strings.TrimPrefix instead.\n\nAvailable since\n 2017.1\n",
2459
+ "default": false
2460
+ },
2461
+ "SA1025": {
2462
+ "type": "boolean",
2463
+ "markdownDescription": "It is not possible to use (*time.Timer).Reset's return value correctly\n\nAvailable since\n 2019.1\n",
2464
+ "default": false
2465
+ },
2466
+ "SA1026": {
2467
+ "type": "boolean",
2468
+ "markdownDescription": "Cannot marshal channels or functions\n\nAvailable since\n 2019.2\n",
2469
+ "default": false
2470
+ },
2471
+ "SA1027": {
2472
+ "type": "boolean",
2473
+ "markdownDescription": "Atomic access to 64-bit variable must be 64-bit aligned\n\nOn ARM, x86-32, and 32-bit MIPS, it is the caller's responsibility to\narrange for 64-bit alignment of 64-bit words accessed atomically. The\nfirst word in a variable or in an allocated struct, array, or slice\ncan be relied upon to be 64-bit aligned.\n\nYou can use the structlayout tool to inspect the alignment of fields\nin a struct.\n\nAvailable since\n 2019.2\n",
2474
+ "default": false
2475
+ },
2476
+ "SA1028": {
2477
+ "type": "boolean",
2478
+ "markdownDescription": "sort.Slice can only be used on slices\n\nThe first argument of sort.Slice must be a slice.\n\nAvailable since\n 2020.1\n",
2479
+ "default": false
2480
+ },
2481
+ "SA1029": {
2482
+ "type": "boolean",
2483
+ "markdownDescription": "Inappropriate key in call to context.WithValue\n\nThe provided key must be comparable and should not be\nof type string or any other built-in type to avoid collisions between\npackages using context. Users of WithValue should define their own\ntypes for keys.\n\nTo avoid allocating when assigning to an interface{},\ncontext keys often have concrete type struct{}. Alternatively,\nexported context key variables' static type should be a pointer or\ninterface.\n\nAvailable since\n 2020.1\n",
2484
+ "default": false
2485
+ },
2486
+ "SA1030": {
2487
+ "type": "boolean",
2488
+ "markdownDescription": "Invalid argument in call to a strconv function\n\nThis check validates the format, number base and bit size arguments of\nthe various parsing and formatting functions in strconv.\n\nAvailable since\n 2021.1\n",
2489
+ "default": false
2490
+ },
2491
+ "SA1031": {
2492
+ "type": "boolean",
2493
+ "markdownDescription": "Overlapping byte slices passed to an encoder\n\nIn an encoding function of the form Encode(dst, src), dst and\nsrc were found to reference the same memory. This can result in\nsrc bytes being overwritten before they are read, when the encoder\nwrites more than one byte per src byte.\n\nAvailable since\n 2024.1\n",
2494
+ "default": false
2495
+ },
2496
+ "SA1032": {
2497
+ "type": "boolean",
2498
+ "markdownDescription": "Wrong order of arguments to errors.Is\n\nThe first argument of the function errors.Is is the error\nthat we have and the second argument is the error we're trying to match against.\nFor example:\n\n\tif errors.Is(err, io.EOF) { ... }\n\nThis check detects some cases where the two arguments have been swapped. It\nflags any calls where the first argument is referring to a package-level error\nvariable, such as\n\n\tif errors.Is(io.EOF, err) { /* this is wrong */ }\n\nAvailable since\n 2024.1\n",
2499
+ "default": false
2500
+ },
2501
+ "SA2001": {
2502
+ "type": "boolean",
2503
+ "markdownDescription": "Empty critical section, did you mean to defer the unlock?\n\nEmpty critical sections of the kind\n\n mu.Lock()\n mu.Unlock()\n\nare very often a typo, and the following was intended instead:\n\n mu.Lock()\n defer mu.Unlock()\n\nDo note that sometimes empty critical sections can be useful, as a\nform of signaling to wait on another goroutine. Many times, there are\nsimpler ways of achieving the same effect. When that isn't the case,\nthe code should be amply commented to avoid confusion. Combining such\ncomments with a //lint:ignore directive can be used to suppress this\nrare false positive.\n\nAvailable since\n 2017.1\n",
2504
+ "default": true
2505
+ },
2506
+ "SA2002": {
2507
+ "type": "boolean",
2508
+ "markdownDescription": "Called testing.T.FailNow or SkipNow in a goroutine, which isn't allowed\n\nAvailable since\n 2017.1\n",
2509
+ "default": false
2510
+ },
2511
+ "SA2003": {
2512
+ "type": "boolean",
2513
+ "markdownDescription": "Deferred Lock right after locking, likely meant to defer Unlock instead\n\nAvailable since\n 2017.1\n",
2514
+ "default": false
2515
+ },
2516
+ "SA3000": {
2517
+ "type": "boolean",
2518
+ "markdownDescription": "TestMain doesn't call os.Exit, hiding test failures\n\nTest executables (and in turn 'go test') exit with a non-zero status\ncode if any tests failed. When specifying your own TestMain function,\nit is your responsibility to arrange for this, by calling os.Exit with\nthe correct code. The correct code is returned by (*testing.M).Run, so\nthe usual way of implementing TestMain is to end it with\nos.Exit(m.Run()).\n\nAvailable since\n 2017.1\n",
2519
+ "default": true
2520
+ },
2521
+ "SA3001": {
2522
+ "type": "boolean",
2523
+ "markdownDescription": "Assigning to b.N in benchmarks distorts the results\n\nThe testing package dynamically sets b.N to improve the reliability of\nbenchmarks and uses it in computations to determine the duration of a\nsingle operation. Benchmark code must not alter b.N as this would\nfalsify results.\n\nAvailable since\n 2017.1\n",
2524
+ "default": true
2525
+ },
2526
+ "SA4000": {
2527
+ "type": "boolean",
2528
+ "markdownDescription": "Binary operator has identical expressions on both sides\n\nAvailable since\n 2017.1\n",
2529
+ "default": true
2530
+ },
2531
+ "SA4001": {
2532
+ "type": "boolean",
2533
+ "markdownDescription": "&*x gets simplified to x, it does not copy x\n\nAvailable since\n 2017.1\n",
2534
+ "default": true
2535
+ },
2536
+ "SA4003": {
2537
+ "type": "boolean",
2538
+ "markdownDescription": "Comparing unsigned values against negative values is pointless\n\nAvailable since\n 2017.1\n",
2539
+ "default": true
2540
+ },
2541
+ "SA4004": {
2542
+ "type": "boolean",
2543
+ "markdownDescription": "The loop exits unconditionally after one iteration\n\nAvailable since\n 2017.1\n",
2544
+ "default": true
2545
+ },
2546
+ "SA4005": {
2547
+ "type": "boolean",
2548
+ "markdownDescription": "Field assignment that will never be observed. Did you mean to use a pointer receiver?\n\nAvailable since\n 2021.1\n",
2549
+ "default": false
2550
+ },
2551
+ "SA4006": {
2552
+ "type": "boolean",
2553
+ "markdownDescription": "A value assigned to a variable is never read before being overwritten. Forgotten error check or dead code?\n\nAvailable since\n 2017.1\n",
2554
+ "default": false
2555
+ },
2556
+ "SA4008": {
2557
+ "type": "boolean",
2558
+ "markdownDescription": "The variable in the loop condition never changes, are you incrementing the wrong variable?\n\nFor example:\n\n\tfor i := 0; i < 10; j++ { ... }\n\nThis may also occur when a loop can only execute once because of unconditional\ncontrol flow that terminates the loop. For example, when a loop body contains an\nunconditional break, return, or panic:\n\n\tfunc f() {\n\t\tpanic(\"oops\")\n\t}\n\tfunc g() {\n\t\tfor i := 0; i < 10; i++ {\n\t\t\t// f unconditionally calls panic, which means \"i\" is\n\t\t\t// never incremented.\n\t\t\tf()\n\t\t}\n\t}\n\nAvailable since\n 2017.1\n",
2559
+ "default": false
2560
+ },
2561
+ "SA4009": {
2562
+ "type": "boolean",
2563
+ "markdownDescription": "A function argument is overwritten before its first use\n\nAvailable since\n 2017.1\n",
2564
+ "default": false
2565
+ },
2566
+ "SA4010": {
2567
+ "type": "boolean",
2568
+ "markdownDescription": "The result of append will never be observed anywhere\n\nAvailable since\n 2017.1\n",
2569
+ "default": false
2570
+ },
2571
+ "SA4011": {
2572
+ "type": "boolean",
2573
+ "markdownDescription": "Break statement with no effect. Did you mean to break out of an outer loop?\n\nAvailable since\n 2017.1\n",
2574
+ "default": true
2575
+ },
2576
+ "SA4012": {
2577
+ "type": "boolean",
2578
+ "markdownDescription": "Comparing a value against NaN even though no value is equal to NaN\n\nAvailable since\n 2017.1\n",
2579
+ "default": false
2580
+ },
2581
+ "SA4013": {
2582
+ "type": "boolean",
2583
+ "markdownDescription": "Negating a boolean twice (!!b) is the same as writing b. This is either redundant, or a typo.\n\nAvailable since\n 2017.1\n",
2584
+ "default": true
2585
+ },
2586
+ "SA4014": {
2587
+ "type": "boolean",
2588
+ "markdownDescription": "An if/else if chain has repeated conditions and no side-effects; if the condition didn't match the first time, it won't match the second time, either\n\nAvailable since\n 2017.1\n",
2589
+ "default": true
2590
+ },
2591
+ "SA4015": {
2592
+ "type": "boolean",
2593
+ "markdownDescription": "Calling functions like math.Ceil on floats converted from integers doesn't do anything useful\n\nAvailable since\n 2017.1\n",
2594
+ "default": false
2595
+ },
2596
+ "SA4016": {
2597
+ "type": "boolean",
2598
+ "markdownDescription": "Certain bitwise operations, such as x ^ 0, do not do anything useful\n\nAvailable since\n 2017.1\n",
2599
+ "default": true
2600
+ },
2601
+ "SA4017": {
2602
+ "type": "boolean",
2603
+ "markdownDescription": "Discarding the return values of a function without side effects, making the call pointless\n\nAvailable since\n 2017.1\n",
2604
+ "default": false
2605
+ },
2606
+ "SA4018": {
2607
+ "type": "boolean",
2608
+ "markdownDescription": "Self-assignment of variables\n\nAvailable since\n 2017.1\n",
2609
+ "default": false
2610
+ },
2611
+ "SA4019": {
2612
+ "type": "boolean",
2613
+ "markdownDescription": "Multiple, identical build constraints in the same file\n\nAvailable since\n 2017.1\n",
2614
+ "default": true
2615
+ },
2616
+ "SA4020": {
2617
+ "type": "boolean",
2618
+ "markdownDescription": "Unreachable case clause in a type switch\n\nIn a type switch like the following\n\n type T struct{}\n func (T) Read(b []byte) (int, error) { return 0, nil }\n\n var v any = T{}\n\n switch v.(type) {\n case io.Reader:\n // ...\n case T:\n // unreachable\n }\n\nthe second case clause can never be reached because T implements\nio.Reader and case clauses are evaluated in source order.\n\nAnother example:\n\n type T struct{}\n func (T) Read(b []byte) (int, error) { return 0, nil }\n func (T) Close() error { return nil }\n\n var v any = T{}\n\n switch v.(type) {\n case io.Reader:\n // ...\n case io.ReadCloser:\n // unreachable\n }\n\nEven though T has a Close method and thus implements io.ReadCloser,\nio.Reader will always match first. The method set of io.Reader is a\nsubset of io.ReadCloser. Thus it is impossible to match the second\ncase without matching the first case.\n\n\nStructurally equivalent interfaces\n\nA special case of the previous example are structurally identical\ninterfaces. Given these declarations\n\n type T error\n type V error\n\n func doSomething() error {\n err, ok := doAnotherThing()\n if ok {\n return T(err)\n }\n\n return U(err)\n }\n\nthe following type switch will have an unreachable case clause:\n\n switch doSomething().(type) {\n case T:\n // ...\n case V:\n // unreachable\n }\n\nT will always match before V because they are structurally equivalent\nand therefore doSomething()'s return value implements both.\n\nAvailable since\n 2019.2\n",
2619
+ "default": true
2620
+ },
2621
+ "SA4022": {
2622
+ "type": "boolean",
2623
+ "markdownDescription": "Comparing the address of a variable against nil\n\nCode such as 'if &x == nil' is meaningless, because taking the address of a variable always yields a non-nil pointer.\n\nAvailable since\n 2020.1\n",
2624
+ "default": true
2625
+ },
2626
+ "SA4023": {
2627
+ "type": "boolean",
2628
+ "markdownDescription": "Impossible comparison of interface value with untyped nil\n\nUnder the covers, interfaces are implemented as two elements, a\ntype T and a value V. V is a concrete value such as an int,\nstruct or pointer, never an interface itself, and has type T. For\ninstance, if we store the int value 3 in an interface, the\nresulting interface value has, schematically, (T=int, V=3). The\nvalue V is also known as the interface's dynamic value, since a\ngiven interface variable might hold different values V (and\ncorresponding types T) during the execution of the program.\n\nAn interface value is nil only if the V and T are both\nunset, (T=nil, V is not set), In particular, a nil interface will\nalways hold a nil type. If we store a nil pointer of type *int\ninside an interface value, the inner type will be *int regardless\nof the value of the pointer: (T=*int, V=nil). Such an interface\nvalue will therefore be non-nil even when the pointer value V\ninside is nil.\n\nThis situation can be confusing, and arises when a nil value is\nstored inside an interface value such as an error return:\n\n func returnsError() error {\n var p *MyError = nil\n if bad() {\n p = ErrBad\n }\n return p // Will always return a non-nil error.\n }\n\nIf all goes well, the function returns a nil p, so the return\nvalue is an error interface value holding (T=*MyError, V=nil).\nThis means that if the caller compares the returned error to nil,\nit will always look as if there was an error even if nothing bad\nhappened. To return a proper nil error to the caller, the\nfunction must return an explicit nil:\n\n func returnsError() error {\n if bad() {\n return ErrBad\n }\n return nil\n }\n\nIt's a good idea for functions that return errors always to use\nthe error type in their signature (as we did above) rather than a\nconcrete type such as *MyError, to help guarantee the error is\ncreated correctly. As an example, os.Open returns an error even\nthough, if not nil, it's always of concrete type *os.PathError.\n\nSimilar situations to those described here can arise whenever\ninterfaces are used. Just keep in mind that if any concrete value\nhas been stored in the interface, the interface will not be nil.\nFor more information, see The Laws of\nReflection at https://golang.org/doc/articles/laws_of_reflection.html.\n\nThis text has been copied from\nhttps://golang.org/doc/faq#nil_error, licensed under the Creative\nCommons Attribution 3.0 License.\n\nAvailable since\n 2020.2\n",
2629
+ "default": false
2630
+ },
2631
+ "SA4024": {
2632
+ "type": "boolean",
2633
+ "markdownDescription": "Checking for impossible return value from a builtin function\n\nReturn values of the len and cap builtins cannot be negative.\n\nSee https://golang.org/pkg/builtin/#len and https://golang.org/pkg/builtin/#cap.\n\nExample:\n\n if len(slice) < 0 {\n fmt.Println(\"unreachable code\")\n }\n\nAvailable since\n 2021.1\n",
2634
+ "default": true
2635
+ },
2636
+ "SA4025": {
2637
+ "type": "boolean",
2638
+ "markdownDescription": "Integer division of literals that results in zero\n\nWhen dividing two integer constants, the result will\nalso be an integer. Thus, a division such as 2 / 3 results in 0.\nThis is true for all of the following examples:\n\n\t_ = 2 / 3\n\tconst _ = 2 / 3\n\tconst _ float64 = 2 / 3\n\t_ = float64(2 / 3)\n\nStaticcheck will flag such divisions if both sides of the division are\ninteger literals, as it is highly unlikely that the division was\nintended to truncate to zero. Staticcheck will not flag integer\ndivision involving named constants, to avoid noisy positives.\n\nAvailable since\n 2021.1\n",
2639
+ "default": true
2640
+ },
2641
+ "SA4026": {
2642
+ "type": "boolean",
2643
+ "markdownDescription": "Go constants cannot express negative zero\n\nIn IEEE 754 floating point math, zero has a sign and can be positive\nor negative. This can be useful in certain numerical code.\n\nGo constants, however, cannot express negative zero. This means that\nthe literals -0.0 and 0.0 have the same ideal value (zero) and\nwill both represent positive zero at runtime.\n\nTo explicitly and reliably create a negative zero, you can use the\nmath.Copysign function: math.Copysign(0, -1).\n\nAvailable since\n 2021.1\n",
2644
+ "default": true
2645
+ },
2646
+ "SA4027": {
2647
+ "type": "boolean",
2648
+ "markdownDescription": "(*net/url.URL).Query returns a copy, modifying it doesn't change the URL\n\n(*net/url.URL).Query parses the current value of net/url.URL.RawQuery\nand returns it as a map of type net/url.Values. Subsequent changes to\nthis map will not affect the URL unless the map gets encoded and\nassigned to the URL's RawQuery.\n\nAs a consequence, the following code pattern is an expensive no-op:\nu.Query().Add(key, value).\n\nAvailable since\n 2021.1\n",
2649
+ "default": true
2650
+ },
2651
+ "SA4028": {
2652
+ "type": "boolean",
2653
+ "markdownDescription": "x % 1 is always zero\n\nAvailable since\n 2022.1\n",
2654
+ "default": true
2655
+ },
2656
+ "SA4029": {
2657
+ "type": "boolean",
2658
+ "markdownDescription": "Ineffective attempt at sorting slice\n\nsort.Float64Slice, sort.IntSlice, and sort.StringSlice are\ntypes, not functions. Doing x = sort.StringSlice(x) does nothing,\nespecially not sort any values. The correct usage is\nsort.Sort(sort.StringSlice(x)) or sort.StringSlice(x).Sort(),\nbut there are more convenient helpers, namely sort.Float64s,\nsort.Ints, and sort.Strings.\n\nAvailable since\n 2022.1\n",
2659
+ "default": true
2660
+ },
2661
+ "SA4030": {
2662
+ "type": "boolean",
2663
+ "markdownDescription": "Ineffective attempt at generating random number\n\nFunctions in the math/rand package that accept upper limits, such\nas Intn, generate random numbers in the half-open interval [0,n). In\nother words, the generated numbers will be >= 0 and < n – they\ndon't include n. rand.Intn(1) therefore doesn't generate 0\nor 1, it always generates 0.\n\nAvailable since\n 2022.1\n",
2664
+ "default": true
2665
+ },
2666
+ "SA4031": {
2667
+ "type": "boolean",
2668
+ "markdownDescription": "Checking never-nil value against nil\n\nAvailable since\n 2022.1\n",
2669
+ "default": false
2670
+ },
2671
+ "SA4032": {
2672
+ "type": "boolean",
2673
+ "markdownDescription": "Comparing runtime.GOOS or runtime.GOARCH against impossible value\n\nAvailable since\n 2024.1\n",
2674
+ "default": true
2675
+ },
2676
+ "SA5000": {
2677
+ "type": "boolean",
2678
+ "markdownDescription": "Assignment to nil map\n\nAvailable since\n 2017.1\n",
2679
+ "default": false
2680
+ },
2681
+ "SA5001": {
2682
+ "type": "boolean",
2683
+ "markdownDescription": "Deferring Close before checking for a possible error\n\nAvailable since\n 2017.1\n",
2684
+ "default": true
2685
+ },
2686
+ "SA5002": {
2687
+ "type": "boolean",
2688
+ "markdownDescription": "The empty for loop ('for {}') spins and can block the scheduler\n\nAvailable since\n 2017.1\n",
2689
+ "default": false
2690
+ },
2691
+ "SA5003": {
2692
+ "type": "boolean",
2693
+ "markdownDescription": "Defers in infinite loops will never execute\n\nDefers are scoped to the surrounding function, not the surrounding\nblock. In a function that never returns, i.e. one containing an\ninfinite loop, defers will never execute.\n\nAvailable since\n 2017.1\n",
2694
+ "default": true
2695
+ },
2696
+ "SA5004": {
2697
+ "type": "boolean",
2698
+ "markdownDescription": "'for { select { ...' with an empty default branch spins\n\nAvailable since\n 2017.1\n",
2699
+ "default": true
2700
+ },
2701
+ "SA5005": {
2702
+ "type": "boolean",
2703
+ "markdownDescription": "The finalizer references the finalized object, preventing garbage collection\n\nA finalizer is a function associated with an object that runs when the\ngarbage collector is ready to collect said object, that is when the\nobject is no longer referenced by anything.\n\nIf the finalizer references the object, however, it will always remain\nas the final reference to that object, preventing the garbage\ncollector from collecting the object. The finalizer will never run,\nand the object will never be collected, leading to a memory leak. That\nis why the finalizer should instead use its first argument to operate\non the object. That way, the number of references can temporarily go\nto zero before the object is being passed to the finalizer.\n\nAvailable since\n 2017.1\n",
2704
+ "default": false
2705
+ },
2706
+ "SA5007": {
2707
+ "type": "boolean",
2708
+ "markdownDescription": "Infinite recursive call\n\nA function that calls itself recursively needs to have an exit\ncondition. Otherwise it will recurse forever, until the system runs\nout of memory.\n\nThis issue can be caused by simple bugs such as forgetting to add an\nexit condition. It can also happen \"on purpose\". Some languages have\ntail call optimization which makes certain infinite recursive calls\nsafe to use. Go, however, does not implement TCO, and as such a loop\nshould be used instead.\n\nAvailable since\n 2017.1\n",
2709
+ "default": false
2710
+ },
2711
+ "SA5008": {
2712
+ "type": "boolean",
2713
+ "markdownDescription": "Invalid struct tag\n\nAvailable since\n 2019.2\n",
2714
+ "default": true
2715
+ },
2716
+ "SA5010": {
2717
+ "type": "boolean",
2718
+ "markdownDescription": "Impossible type assertion\n\nSome type assertions can be statically proven to be\nimpossible. This is the case when the method sets of both\narguments of the type assertion conflict with each other, for\nexample by containing the same method with different\nsignatures.\n\nThe Go compiler already applies this check when asserting from an\ninterface value to a concrete type. If the concrete type misses\nmethods from the interface, or if function signatures don't match,\nthen the type assertion can never succeed.\n\nThis check applies the same logic when asserting from one interface to\nanother. If both interface types contain the same method but with\ndifferent signatures, then the type assertion can never succeed,\neither.\n\nAvailable since\n 2020.1\n",
2719
+ "default": false
2720
+ },
2721
+ "SA5011": {
2722
+ "type": "boolean",
2723
+ "markdownDescription": "Possible nil pointer dereference\n\nA pointer is being dereferenced unconditionally, while\nalso being checked against nil in another place. This suggests that\nthe pointer may be nil and dereferencing it may panic. This is\ncommonly a result of improperly ordered code or missing return\nstatements. Consider the following examples:\n\n func fn(x *int) {\n fmt.Println(*x)\n\n // This nil check is equally important for the previous dereference\n if x != nil {\n foo(*x)\n }\n }\n\n func TestFoo(t *testing.T) {\n x := compute()\n if x == nil {\n t.Errorf(\"nil pointer received\")\n }\n\n // t.Errorf does not abort the test, so if x is nil, the next line will panic.\n foo(*x)\n }\n\nStaticcheck tries to deduce which functions abort control flow.\nFor example, it is aware that a function will not continue\nexecution after a call to panic or log.Fatal. However, sometimes\nthis detection fails, in particular in the presence of\nconditionals. Consider the following example:\n\n func Log(msg string, level int) {\n fmt.Println(msg)\n if level == levelFatal {\n os.Exit(1)\n }\n }\n\n func Fatal(msg string) {\n Log(msg, levelFatal)\n }\n\n func fn(x *int) {\n if x == nil {\n Fatal(\"unexpected nil pointer\")\n }\n fmt.Println(*x)\n }\n\nStaticcheck will flag the dereference of x, even though it is perfectly\nsafe. Staticcheck is not able to deduce that a call to\nFatal will exit the program. For the time being, the easiest\nworkaround is to modify the definition of Fatal like so:\n\n func Fatal(msg string) {\n Log(msg, levelFatal)\n panic(\"unreachable\")\n }\n\nWe also hard-code functions from common logging packages such as\nlogrus. Please file an issue if we're missing support for a\npopular package.\n\nAvailable since\n 2020.1\n",
2724
+ "default": false
2725
+ },
2726
+ "SA5012": {
2727
+ "type": "boolean",
2728
+ "markdownDescription": "Passing odd-sized slice to function expecting even size\n\nSome functions that take slices as parameters expect the slices to have an even number of elements. \nOften, these functions treat elements in a slice as pairs. \nFor example, strings.NewReplacer takes pairs of old and new strings, \nand calling it with an odd number of elements would be an error.\n\nAvailable since\n 2020.2\n",
2729
+ "default": false
2730
+ },
2731
+ "SA6000": {
2732
+ "type": "boolean",
2733
+ "markdownDescription": "Using regexp.Match or related in a loop, should use regexp.Compile\n\nAvailable since\n 2017.1\n",
2734
+ "default": false
2735
+ },
2736
+ "SA6001": {
2737
+ "type": "boolean",
2738
+ "markdownDescription": "Missing an optimization opportunity when indexing maps by byte slices\n\nMap keys must be comparable, which precludes the use of byte slices.\nThis usually leads to using string keys and converting byte slices to\nstrings.\n\nNormally, a conversion of a byte slice to a string needs to copy the data and\ncauses allocations. The compiler, however, recognizes m[string(b)] and\nuses the data of b directly, without copying it, because it knows that\nthe data can't change during the map lookup. This leads to the\ncounter-intuitive situation that\n\n k := string(b)\n println(m[k])\n println(m[k])\n\nwill be less efficient than\n\n println(m[string(b)])\n println(m[string(b)])\n\nbecause the first version needs to copy and allocate, while the second\none does not.\n\nFor some history on this optimization, check out commit\nf5f5a8b6209f84961687d993b93ea0d397f5d5bf in the Go repository.\n\nAvailable since\n 2017.1\n",
2739
+ "default": false
2740
+ },
2741
+ "SA6002": {
2742
+ "type": "boolean",
2743
+ "markdownDescription": "Storing non-pointer values in sync.Pool allocates memory\n\nA sync.Pool is used to avoid unnecessary allocations and reduce the\namount of work the garbage collector has to do.\n\nWhen passing a value that is not a pointer to a function that accepts\nan interface, the value needs to be placed on the heap, which means an\nadditional allocation. Slices are a common thing to put in sync.Pools,\nand they're structs with 3 fields (length, capacity, and a pointer to\nan array). In order to avoid the extra allocation, one should store a\npointer to the slice instead.\n\nSee the comments on https://go-review.googlesource.com/c/go/+/24371\nthat discuss this problem.\n\nAvailable since\n 2017.1\n",
2744
+ "default": false
2745
+ },
2746
+ "SA6003": {
2747
+ "type": "boolean",
2748
+ "markdownDescription": "Converting a string to a slice of runes before ranging over it\n\nYou may want to loop over the runes in a string. Instead of converting\nthe string to a slice of runes and looping over that, you can loop\nover the string itself. That is,\n\n for _, r := range s {}\n\nand\n\n for _, r := range []rune(s) {}\n\nwill yield the same values. The first version, however, will be faster\nand avoid unnecessary memory allocations.\n\nDo note that if you are interested in the indices, ranging over a\nstring and over a slice of runes will yield different indices. The\nfirst one yields byte offsets, while the second one yields indices in\nthe slice of runes.\n\nAvailable since\n 2017.1\n",
2749
+ "default": false
2750
+ },
2751
+ "SA6005": {
2752
+ "type": "boolean",
2753
+ "markdownDescription": "Inefficient string comparison with strings.ToLower or strings.ToUpper\n\nConverting two strings to the same case and comparing them like so\n\n if strings.ToLower(s1) == strings.ToLower(s2) {\n ...\n }\n\nis significantly more expensive than comparing them with\nstrings.EqualFold(s1, s2). This is due to memory usage as well as\ncomputational complexity.\n\nstrings.ToLower will have to allocate memory for the new strings, as\nwell as convert both strings fully, even if they differ on the very\nfirst byte. strings.EqualFold, on the other hand, compares the strings\none character at a time. It doesn't need to create two intermediate\nstrings and can return as soon as the first non-matching character has\nbeen found.\n\nFor a more in-depth explanation of this issue, see\nhttps://blog.digitalocean.com/how-to-efficiently-compare-strings-in-go/\n\nAvailable since\n 2019.2\n",
2754
+ "default": true
2755
+ },
2756
+ "SA6006": {
2757
+ "type": "boolean",
2758
+ "markdownDescription": "Using io.WriteString to write []byte\n\nUsing io.WriteString to write a slice of bytes, as in\n\n io.WriteString(w, string(b))\n\nis both unnecessary and inefficient. Converting from []byte to string\nhas to allocate and copy the data, and we could simply use w.Write(b)\ninstead.\n\nAvailable since\n 2024.1\n",
2759
+ "default": true
2760
+ },
2761
+ "SA9001": {
2762
+ "type": "boolean",
2763
+ "markdownDescription": "Defers in range loops may not run when you expect them to\n\nAvailable since\n 2017.1\n",
2764
+ "default": false
2765
+ },
2766
+ "SA9002": {
2767
+ "type": "boolean",
2768
+ "markdownDescription": "Using a non-octal os.FileMode that looks like it was meant to be in octal.\n\nAvailable since\n 2017.1\n",
2769
+ "default": true
2770
+ },
2771
+ "SA9003": {
2772
+ "type": "boolean",
2773
+ "markdownDescription": "Empty body in an if or else branch\n\nAvailable since\n 2017.1, non-default\n",
2774
+ "default": false
2775
+ },
2776
+ "SA9004": {
2777
+ "type": "boolean",
2778
+ "markdownDescription": "Only the first constant has an explicit type\n\nIn a constant declaration such as the following:\n\n const (\n First byte = 1\n Second = 2\n )\n\nthe constant Second does not have the same type as the constant First.\nThis construct shouldn't be confused with\n\n const (\n First byte = iota\n Second\n )\n\nwhere First and Second do indeed have the same type. The type is only\npassed on when no explicit value is assigned to the constant.\n\nWhen declaring enumerations with explicit values it is therefore\nimportant not to write\n\n const (\n EnumFirst EnumType = 1\n EnumSecond = 2\n EnumThird = 3\n )\n\nThis discrepancy in types can cause various confusing behaviors and\nbugs.\n\n\nWrong type in variable declarations\n\nThe most obvious issue with such incorrect enumerations expresses\nitself as a compile error:\n\n package pkg\n\n const (\n EnumFirst uint8 = 1\n EnumSecond = 2\n )\n\n func fn(useFirst bool) {\n x := EnumSecond\n if useFirst {\n x = EnumFirst\n }\n }\n\nfails to compile with\n\n ./const.go:11:5: cannot use EnumFirst (type uint8) as type int in assignment\n\n\nLosing method sets\n\nA more subtle issue occurs with types that have methods and optional\ninterfaces. Consider the following:\n\n package main\n\n import \"fmt\"\n\n type Enum int\n\n func (e Enum) String() string {\n return \"an enum\"\n }\n\n const (\n EnumFirst Enum = 1\n EnumSecond = 2\n )\n\n func main() {\n fmt.Println(EnumFirst)\n fmt.Println(EnumSecond)\n }\n\nThis code will output\n\n an enum\n 2\n\nas EnumSecond has no explicit type, and thus defaults to int.\n\nAvailable since\n 2019.1\n",
2779
+ "default": true
2780
+ },
2781
+ "SA9005": {
2782
+ "type": "boolean",
2783
+ "markdownDescription": "Trying to marshal a struct with no public fields nor custom marshaling\n\nThe encoding/json and encoding/xml packages only operate on exported\nfields in structs, not unexported ones. It is usually an error to try\nto (un)marshal structs that only consist of unexported fields.\n\nThis check will not flag calls involving types that define custom\nmarshaling behavior, e.g. via MarshalJSON methods. It will also not\nflag empty structs.\n\nAvailable since\n 2019.2\n",
2784
+ "default": false
2785
+ },
2786
+ "SA9006": {
2787
+ "type": "boolean",
2788
+ "markdownDescription": "Dubious bit shifting of a fixed size integer value\n\nBit shifting a value past its size will always clear the value.\n\nFor instance:\n\n v := int8(42)\n v >>= 8\n\nwill always result in 0.\n\nThis check flags bit shifting operations on fixed size integer values only.\nThat is, int, uint and uintptr are never flagged to avoid potential false\npositives in somewhat exotic but valid bit twiddling tricks:\n\n // Clear any value above 32 bits if integers are more than 32 bits.\n func f(i int) int {\n v := i >> 32\n v = v << 32\n return i-v\n }\n\nAvailable since\n 2020.2\n",
2789
+ "default": true
2790
+ },
2791
+ "SA9007": {
2792
+ "type": "boolean",
2793
+ "markdownDescription": "Deleting a directory that shouldn't be deleted\n\nIt is virtually never correct to delete system directories such as\n/tmp or the user's home directory. However, it can be fairly easy to\ndo by mistake, for example by mistakenly using os.TempDir instead\nof ioutil.TempDir, or by forgetting to add a suffix to the result\nof os.UserHomeDir.\n\nWriting\n\n d := os.TempDir()\n defer os.RemoveAll(d)\n\nin your unit tests will have a devastating effect on the stability of your system.\n\nThis check flags attempts at deleting the following directories:\n\n- os.TempDir\n- os.UserCacheDir\n- os.UserConfigDir\n- os.UserHomeDir\n\nAvailable since\n 2022.1\n",
2794
+ "default": false
2795
+ },
2796
+ "SA9008": {
2797
+ "type": "boolean",
2798
+ "markdownDescription": "else branch of a type assertion is probably not reading the right value\n\nWhen declaring variables as part of an if statement (like in 'if\nfoo := ...; foo {'), the same variables will also be in the scope of\nthe else branch. This means that in the following example\n\n if x, ok := x.(int); ok {\n // ...\n } else {\n fmt.Printf(\"unexpected type %T\", x)\n }\n\nx in the else branch will refer to the x from x, ok\n:=; it will not refer to the x that is being type-asserted. The\nresult of a failed type assertion is the zero value of the type that\nis being asserted to, so x in the else branch will always have the\nvalue 0 and the type int.\n\nAvailable since\n 2022.1\n",
2799
+ "default": false
2800
+ },
2801
+ "SA9009": {
2802
+ "type": "boolean",
2803
+ "markdownDescription": "Ineffectual Go compiler directive\n\nA potential Go compiler directive was found, but is ineffectual as it begins\nwith whitespace.\n\nAvailable since\n 2024.1\n",
2804
+ "default": true
2805
+ },
2806
+ "ST1000": {
2807
+ "type": "boolean",
2808
+ "markdownDescription": "Incorrect or missing package comment\n\nPackages must have a package comment that is formatted according to\nthe guidelines laid out in\nhttps://go.dev/wiki/CodeReviewComments#package-comments.\n\nAvailable since\n 2019.1, non-default\n",
2809
+ "default": false
2810
+ },
2811
+ "ST1001": {
2812
+ "type": "boolean",
2813
+ "markdownDescription": "Dot imports are discouraged\n\nDot imports that aren't in external test packages are discouraged.\n\nThe dot_import_whitelist option can be used to whitelist certain\nimports.\n\nQuoting Go Code Review Comments:\n\n> The import . form can be useful in tests that, due to circular\n> dependencies, cannot be made part of the package being tested:\n> \n> package foo_test\n> \n> import (\n> \"bar/testutil\" // also imports \"foo\"\n> . \"foo\"\n> )\n> \n> In this case, the test file cannot be in package foo because it\n> uses bar/testutil, which imports foo. So we use the import .\n> form to let the file pretend to be part of package foo even though\n> it is not. Except for this one case, do not use import . in your\n> programs. It makes the programs much harder to read because it is\n> unclear whether a name like Quux is a top-level identifier in the\n> current package or in an imported package.\n\nAvailable since\n 2019.1\n\nOptions\n dot_import_whitelist\n",
2814
+ "default": false
2815
+ },
2816
+ "ST1003": {
2817
+ "type": "boolean",
2818
+ "markdownDescription": "Poorly chosen identifier\n\nIdentifiers, such as variable and package names, follow certain rules.\n\nSee the following links for details:\n\n- https://go.dev/doc/effective_go#package-names\n- https://go.dev/doc/effective_go#mixed-caps\n- https://go.dev/wiki/CodeReviewComments#initialisms\n- https://go.dev/wiki/CodeReviewComments#variable-names\n\nAvailable since\n 2019.1, non-default\n\nOptions\n initialisms\n",
2819
+ "default": false
2820
+ },
2821
+ "ST1005": {
2822
+ "type": "boolean",
2823
+ "markdownDescription": "Incorrectly formatted error string\n\nError strings follow a set of guidelines to ensure uniformity and good\ncomposability.\n\nQuoting Go Code Review Comments:\n\n> Error strings should not be capitalized (unless beginning with\n> proper nouns or acronyms) or end with punctuation, since they are\n> usually printed following other context. That is, use\n> fmt.Errorf(\"something bad\") not fmt.Errorf(\"Something bad\"), so\n> that log.Printf(\"Reading %s: %v\", filename, err) formats without a\n> spurious capital letter mid-message.\n\nAvailable since\n 2019.1\n",
2824
+ "default": false
2825
+ },
2826
+ "ST1006": {
2827
+ "type": "boolean",
2828
+ "markdownDescription": "Poorly chosen receiver name\n\nQuoting Go Code Review Comments:\n\n> The name of a method's receiver should be a reflection of its\n> identity; often a one or two letter abbreviation of its type\n> suffices (such as \"c\" or \"cl\" for \"Client\"). Don't use generic\n> names such as \"me\", \"this\" or \"self\", identifiers typical of\n> object-oriented languages that place more emphasis on methods as\n> opposed to functions. The name need not be as descriptive as that\n> of a method argument, as its role is obvious and serves no\n> documentary purpose. It can be very short as it will appear on\n> almost every line of every method of the type; familiarity admits\n> brevity. Be consistent, too: if you call the receiver \"c\" in one\n> method, don't call it \"cl\" in another.\n\nAvailable since\n 2019.1\n",
2829
+ "default": false
2830
+ },
2831
+ "ST1008": {
2832
+ "type": "boolean",
2833
+ "markdownDescription": "A function's error value should be its last return value\n\nA function's error value should be its last return value.\n\nAvailable since\n 2019.1\n",
2834
+ "default": false
2835
+ },
2836
+ "ST1011": {
2837
+ "type": "boolean",
2838
+ "markdownDescription": "Poorly chosen name for variable of type time.Duration\n\ntime.Duration values represent an amount of time, which is represented\nas a count of nanoseconds. An expression like 5 * time.Microsecond\nyields the value 5000. It is therefore not appropriate to suffix a\nvariable of type time.Duration with any time unit, such as Msec or\nMilli.\n\nAvailable since\n 2019.1\n",
2839
+ "default": false
2840
+ },
2841
+ "ST1012": {
2842
+ "type": "boolean",
2843
+ "markdownDescription": "Poorly chosen name for error variable\n\nError variables that are part of an API should be called errFoo or\nErrFoo.\n\nAvailable since\n 2019.1\n",
2844
+ "default": false
2845
+ },
2846
+ "ST1013": {
2847
+ "type": "boolean",
2848
+ "markdownDescription": "Should use constants for HTTP error codes, not magic numbers\n\nHTTP has a tremendous number of status codes. While some of those are\nwell known (200, 400, 404, 500), most of them are not. The net/http\npackage provides constants for all status codes that are part of the\nvarious specifications. It is recommended to use these constants\ninstead of hard-coding magic numbers, to vastly improve the\nreadability of your code.\n\nAvailable since\n 2019.1\n\nOptions\n http_status_code_whitelist\n",
2849
+ "default": false
2850
+ },
2851
+ "ST1015": {
2852
+ "type": "boolean",
2853
+ "markdownDescription": "A switch's default case should be the first or last case\n\nAvailable since\n 2019.1\n",
2854
+ "default": false
2855
+ },
2856
+ "ST1016": {
2857
+ "type": "boolean",
2858
+ "markdownDescription": "Use consistent method receiver names\n\nAvailable since\n 2019.1, non-default\n",
2859
+ "default": false
2860
+ },
2861
+ "ST1017": {
2862
+ "type": "boolean",
2863
+ "markdownDescription": "Don't use Yoda conditions\n\nYoda conditions are conditions of the kind 'if 42 == x', where the\nliteral is on the left side of the comparison. These are a common\nidiom in languages in which assignment is an expression, to avoid bugs\nof the kind 'if (x = 42)'. In Go, which doesn't allow for this kind of\nbug, we prefer the more idiomatic 'if x == 42'.\n\nAvailable since\n 2019.2\n",
2864
+ "default": false
2865
+ },
2866
+ "ST1018": {
2867
+ "type": "boolean",
2868
+ "markdownDescription": "Avoid zero-width and control characters in string literals\n\nAvailable since\n 2019.2\n",
2869
+ "default": false
2870
+ },
2871
+ "ST1019": {
2872
+ "type": "boolean",
2873
+ "markdownDescription": "Importing the same package multiple times\n\nGo allows importing the same package multiple times, as long as\ndifferent import aliases are being used. That is, the following\nbit of code is valid:\n\n import (\n \"fmt\"\n fumpt \"fmt\"\n format \"fmt\"\n _ \"fmt\"\n )\n\nHowever, this is very rarely done on purpose. Usually, it is a\nsign of code that got refactored, accidentally adding duplicate\nimport statements. It is also a rarely known feature, which may\ncontribute to confusion.\n\nDo note that sometimes, this feature may be used\nintentionally (see for example\nhttps://github.com/golang/go/commit/3409ce39bfd7584523b7a8c150a310cea92d879d)\n– if you want to allow this pattern in your code base, you're\nadvised to disable this check.\n\nAvailable since\n 2020.1\n",
2874
+ "default": false
2875
+ },
2876
+ "ST1020": {
2877
+ "type": "boolean",
2878
+ "markdownDescription": "The documentation of an exported function should start with the function's name\n\nDoc comments work best as complete sentences, which\nallow a wide variety of automated presentations. The first sentence\nshould be a one-sentence summary that starts with the name being\ndeclared.\n\nIf every doc comment begins with the name of the item it describes,\nyou can use the doc subcommand of the go tool and run the output\nthrough grep.\n\nSee https://go.dev/doc/effective_go#commentary for more\ninformation on how to write good documentation.\n\nAvailable since\n 2020.1, non-default\n",
2879
+ "default": false
2880
+ },
2881
+ "ST1021": {
2882
+ "type": "boolean",
2883
+ "markdownDescription": "The documentation of an exported type should start with type's name\n\nDoc comments work best as complete sentences, which\nallow a wide variety of automated presentations. The first sentence\nshould be a one-sentence summary that starts with the name being\ndeclared.\n\nIf every doc comment begins with the name of the item it describes,\nyou can use the doc subcommand of the go tool and run the output\nthrough grep.\n\nSee https://go.dev/doc/effective_go#commentary for more\ninformation on how to write good documentation.\n\nAvailable since\n 2020.1, non-default\n",
2884
+ "default": false
2885
+ },
2886
+ "ST1022": {
2887
+ "type": "boolean",
2888
+ "markdownDescription": "The documentation of an exported variable or constant should start with variable's name\n\nDoc comments work best as complete sentences, which\nallow a wide variety of automated presentations. The first sentence\nshould be a one-sentence summary that starts with the name being\ndeclared.\n\nIf every doc comment begins with the name of the item it describes,\nyou can use the doc subcommand of the go tool and run the output\nthrough grep.\n\nSee https://go.dev/doc/effective_go#commentary for more\ninformation on how to write good documentation.\n\nAvailable since\n 2020.1, non-default\n",
2889
+ "default": false
2890
+ },
2891
+ "ST1023": {
2892
+ "type": "boolean",
2893
+ "markdownDescription": "Redundant type in variable declaration\n\nAvailable since\n 2021.1, non-default\n",
2894
+ "default": false
2895
+ },
2111
2896
  "appends": {
2112
2897
  "type": "boolean",
2113
2898
  "markdownDescription": "check for missing values after append\n\nThis checker reports calls to append that pass\nno values to be appended to the slice.\n\n\ts := []string{\"a\", \"b\", \"c\"}\n\t_ = append(s)\n\nSuch calls are always no-ops and often indicate an\nunderlying mistake.",
@@ -2200,7 +2985,7 @@
2200
2985
  },
2201
2986
  "gofix": {
2202
2987
  "type": "boolean",
2203
- "markdownDescription": "apply fixes based on go:fix comment directives\n\nThe gofix analyzer inlines functions and constants that are marked for inlining.",
2988
+ "markdownDescription": "apply fixes based on go:fix comment directives\n\nThe gofix analyzer inlines functions and constants that are marked for inlining.\n\n## Functions\n\nGiven a function that is marked for inlining, like this one:\n\n\t//go:fix inline\n\tfunc Square(x int) int { return Pow(x, 2) }\n\nthis analyzer will recommend that calls to the function elsewhere, in the same\nor other packages, should be inlined.\n\nInlining can be used to move off of a deprecated function:\n\n\t// Deprecated: prefer Pow(x, 2).\n\t//go:fix inline\n\tfunc Square(x int) int { return Pow(x, 2) }\n\nIt can also be used to move off of an obsolete package,\nas when the import path has changed or a higher major version is available:\n\n\tpackage pkg\n\n\timport pkg2 \"pkg/v2\"\n\n\t//go:fix inline\n\tfunc F() { pkg2.F(nil) }\n\nReplacing a call pkg.F() by pkg2.F(nil) can have no effect on the program,\nso this mechanism provides a low-risk way to update large numbers of calls.\nWe recommend, where possible, expressing the old API in terms of the new one\nto enable automatic migration.\n\nThe inliner takes care to avoid behavior changes, even subtle ones,\nsuch as changes to the order in which argument expressions are\nevaluated. When it cannot safely eliminate all parameter variables,\nit may introduce a \"binding declaration\" of the form\n\n\tvar params = args\n\nto evaluate argument expressions in the correct order and bind them to\nparameter variables. Since the resulting code transformation may be\nstylistically suboptimal, such inlinings may be disabled by specifying\nthe -gofix.allow_binding_decl=false flag to the analyzer driver.\n\n(In cases where it is not safe to \"reduce\" a call—that is, to replace\na call f(x) by the body of function f, suitably substituted—the\ninliner machinery is capable of replacing f by a function literal,\nfunc(){...}(). However, the gofix analyzer discards all such\n\"literalizations\" unconditionally, again on grounds of style.)\n\n## Constants\n\nGiven a constant that is marked for inlining, like this one:\n\n\t//go:fix inline\n\tconst Ptr = Pointer\n\nthis analyzer will recommend that uses of Ptr should be replaced with Pointer.\n\nAs with functions, inlining can be used to replace deprecated constants and\nconstants in obsolete packages.\n\nA constant definition can be marked for inlining only if it refers to another\nnamed constant.\n\nThe \"//go:fix inline\" comment must appear before a single const declaration on its own,\nas above; before a const declaration that is part of a group, as in this case:\n\n\tconst (\n\t C = 1\n\t //go:fix inline\n\t Ptr = Pointer\n\t)\n\nor before a group, applying to every constant in the group:\n\n\t//go:fix inline\n\tconst (\n\t\tPtr = Pointer\n\t Val = Value\n\t)\n\nThe proposal https://go.dev/issue/32816 introduces the \"//go:fix\" directives.\n\nYou can use this (officially unsupported) command to apply gofix fixes en masse:\n\n\t$ go run golang.org/x/tools/internal/gofix/cmd/gofix@latest -test ./...\n\n(Do not use \"go get -tool\" to add gopls as a dependency of your\nmodule; gopls commands must be built from their release branch.)",
2204
2989
  "default": true
2205
2990
  },
2206
2991
  "hostport": {
@@ -2233,9 +3018,14 @@
2233
3018
  "markdownDescription": "check cancel func returned by context.WithCancel is called\n\nThe cancellation function returned by context.WithCancel, WithTimeout,\nWithDeadline and variants such as WithCancelCause must be called,\nor the new context will remain live until its parent context is cancelled.\n(The background context is never cancelled.)",
2234
3019
  "default": true
2235
3020
  },
3021
+ "maprange": {
3022
+ "type": "boolean",
3023
+ "markdownDescription": "checks for unnecessary calls to maps.Keys and maps.Values in range statements\n\nConsider a loop written like this:\n\n\tfor val := range maps.Values(m) {\n\t\tfmt.Println(val)\n\t}\n\nThis should instead be written without the call to maps.Values:\n\n\tfor _, val := range m {\n\t\tfmt.Println(val)\n\t}\n\ngolang.org/x/exp/maps returns slices for Keys/Values instead of iterators,\nbut unnecessary calls should similarly be removed:\n\n\tfor _, key := range maps.Keys(m) {\n\t\tfmt.Println(key)\n\t}\n\nshould be rewritten as:\n\n\tfor key := range m {\n\t\tfmt.Println(key)\n\t}",
3024
+ "default": true
3025
+ },
2236
3026
  "modernize": {
2237
3027
  "type": "boolean",
2238
- "markdownDescription": "simplify code by using modern constructs\n\nThis analyzer reports opportunities for simplifying and clarifying\nexisting code by using more modern features of Go, such as:\n\n - replacing an if/else conditional assignment by a call to the\n built-in min or max functions added in go1.21;\n - replacing sort.Slice(x, func(i, j int) bool) { return s[i] < s[j] }\n by a call to slices.Sort(s), added in go1.21;\n - replacing interface{} by the 'any' type added in go1.18;\n - replacing append([]T(nil), s...) by slices.Clone(s) or\n slices.Concat(s), added in go1.21;\n - replacing a loop around an m[k]=v map update by a call\n to one of the Collect, Copy, Clone, or Insert functions\n from the maps package, added in go1.21;\n - replacing []byte(fmt.Sprintf...) by fmt.Appendf(nil, ...),\n added in go1.19;\n - replacing uses of context.WithCancel in tests with t.Context, added in\n go1.24;\n - replacing omitempty by omitzero on structs, added in go1.24;\n - replacing append(s[:i], s[i+1]...) by slices.Delete(s, i, i+1),\n added in go1.21\n - replacing a 3-clause for i := 0; i < n; i++ {} loop by\n for i := range n {}, added in go1.22;\n - replacing Split in \"for range strings.Split(...)\" by go1.24's\n more efficient SplitSeq;\n\nTo apply all modernization fixes en masse, you can use the\nfollowing command:\n\n\t$ go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -test ./...\n\nIf the tool warns of conflicting fixes, you may need to run it more\nthan once until it has applied all fixes cleanly. This command is\nnot an officially supported interface and may change in the future.",
3028
+ "markdownDescription": "simplify code by using modern constructs\n\nThis analyzer reports opportunities for simplifying and clarifying\nexisting code by using more modern features of Go and its standard\nlibrary.\n\nEach diagnostic provides a fix. Our intent is that these fixes may\nbe safely applied en masse without changing the behavior of your\nprogram. In some cases the suggested fixes are imperfect and may\nlead to (for example) unused imports or unused local variables,\ncausing build breakage. However, these problems are generally\ntrivial to fix. We regard any modernizer whose fix changes program\nbehavior to have a serious bug and will endeavor to fix it.\n\nTo apply all modernization fixes en masse, you can use the\nfollowing command:\n\n\t$ go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...\n\n(Do not use \"go get -tool\" to add gopls as a dependency of your\nmodule; gopls commands must be built from their release branch.)\n\nIf the tool warns of conflicting fixes, you may need to run it more\nthan once until it has applied all fixes cleanly. This command is\nnot an officially supported interface and may change in the future.\n\nChanges produced by this tool should be reviewed as usual before\nbeing merged. In some cases, a loop may be replaced by a simple\nfunction call, causing comments within the loop to be discarded.\nHuman judgment may be required to avoid losing comments of value.\n\nEach diagnostic reported by modernize has a specific category. (The\ncategories are listed below.) Diagnostics in some categories, such\nas \"efaceany\" (which replaces \"interface{}\" with \"any\" where it is\nsafe to do so) are particularly numerous. It may ease the burden of\ncode review to apply fixes in two passes, the first change\nconsisting only of fixes of category \"efaceany\", the second\nconsisting of all others. This can be achieved using the -category flag:\n\n\t$ modernize -category=efaceany -fix -test ./...\n\t$ modernize -category=-efaceany -fix -test ./...\n\nCategories of modernize diagnostic:\n\n - forvar: remove x := x variable declarations made unnecessary by the new semantics of loops in go1.22.\n\n - slicescontains: replace 'for i, elem := range s { if elem == needle { ...; break }'\n by a call to slices.Contains, added in go1.21.\n\n - minmax: replace an if/else conditional assignment by a call to\n the built-in min or max functions added in go1.21.\n\n - sortslice: replace sort.Slice(x, func(i, j int) bool) { return s[i] < s[j] }\n by a call to slices.Sort(s), added in go1.21.\n\n - efaceany: replace interface{} by the 'any' type added in go1.18.\n\n - mapsloop: replace a loop around an m[k]=v map update by a call\n to one of the Collect, Copy, Clone, or Insert functions from\n the maps package, added in go1.21.\n\n - fmtappendf: replace []byte(fmt.Sprintf...) by fmt.Appendf(nil, ...),\n added in go1.19.\n\n - testingcontext: replace uses of context.WithCancel in tests\n with t.Context, added in go1.24.\n\n - omitzero: replace omitempty by omitzero on structs, added in go1.24.\n\n - bloop: replace \"for i := range b.N\" or \"for range b.N\" in a\n benchmark with \"for b.Loop()\", and remove any preceding calls\n to b.StopTimer, b.StartTimer, and b.ResetTimer.\n\n B.Loop intentionally defeats compiler optimizations such as\n inlining so that the benchmark is not entirely optimized away.\n Currently, however, it may cause benchmarks to become slower\n in some cases due to increased allocation; see\n https://go.dev/issue/73137.\n\n - rangeint: replace a 3-clause \"for i := 0; i < n; i++\" loop by\n \"for i := range n\", added in go1.22.\n\n - stringsseq: replace Split in \"for range strings.Split(...)\" by go1.24's\n more efficient SplitSeq, or Fields with FieldSeq.\n\n - stringscutprefix: replace some uses of HasPrefix followed by TrimPrefix with CutPrefix,\n added to the strings package in go1.20.\n\n - waitgroup: replace old complex usages of sync.WaitGroup by less complex WaitGroup.Go method in go1.25.",
2239
3029
  "default": true
2240
3030
  },
2241
3031
  "nilfunc": {
@@ -2263,6 +3053,11 @@
2263
3053
  "markdownDescription": "check consistency of Printf format strings and arguments\n\nThe check applies to calls of the formatting functions such as\n[fmt.Printf] and [fmt.Sprintf], as well as any detected wrappers of\nthose functions such as [log.Printf]. It reports a variety of\nmistakes such as syntax errors in the format string and mismatches\n(of number and type) between the verbs and their arguments.\n\nSee the documentation of the fmt package for the complete set of\nformat operators and their operand types.",
2264
3054
  "default": true
2265
3055
  },
3056
+ "recursiveiter": {
3057
+ "type": "boolean",
3058
+ "markdownDescription": "check for inefficient recursive iterators\n\nThis analyzer reports when a function that returns an iterator\n(iter.Seq or iter.Seq2) calls itself as the operand of a range\nstatement, as this is inefficient.\n\nWhen implementing an iterator (e.g. iter.Seq[T]) for a recursive\ndata type such as a tree or linked list, it is tempting to\nrecursively range over the iterator for each child element.\n\nHere's an example of a naive iterator over a binary tree:\n\n\ttype tree struct {\n\t\tvalue int\n\t\tleft, right *tree\n\t}\n\n\tfunc (t *tree) All() iter.Seq[int] {\n\t\treturn func(yield func(int) bool) {\n\t\t\tif t != nil {\n\t\t\t\tfor elem := range t.left.All() { // \"inefficient recursive iterator\"\n\t\t\t\t\tif !yield(elem) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !yield(t.value) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfor elem := range t.right.All() { // \"inefficient recursive iterator\"\n\t\t\t\t\tif !yield(elem) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\nThough it correctly enumerates the elements of the tree, it hides a\nsignificant performance problem--two, in fact. Consider a balanced\ntree of N nodes. Iterating the root node will cause All to be\ncalled once on every node of the tree. This results in a chain of\nnested active range-over-func statements when yield(t.value) is\ncalled on a leaf node.\n\nThe first performance problem is that each range-over-func\nstatement must typically heap-allocate a variable, so iteration of\nthe tree allocates as many variables as there are elements in the\ntree, for a total of O(N) allocations, all unnecessary.\n\nThe second problem is that each call to yield for a leaf of the\ntree causes each of the enclosing range loops to receive a value,\nwhich they then immediately pass on to their respective yield\nfunction. This results in a chain of log(N) dynamic yield calls per\nelement, a total of O(N*log N) dynamic calls overall, when only\nO(N) are necessary.\n\nA better implementation strategy for recursive iterators is to\nfirst define the \"every\" operator for your recursive data type,\nwhere every(f) reports whether f(x) is true for every element x in\nthe data type. For our tree, the every function would be:\n\n\tfunc (t *tree) every(f func(int) bool) bool {\n\t\treturn t == nil ||\n\t\t\tt.left.every(f) && f(t.value) && t.right.every(f)\n\t}\n\nThen the iterator can be simply expressed as a trivial wrapper\naround this function:\n\n\tfunc (t *tree) All() iter.Seq[int] {\n\t\treturn func(yield func(int) bool) {\n\t\t\t_ = t.every(yield)\n\t\t}\n\t}\n\nIn effect, tree.All computes whether yield returns true for each\nelement, short-circuiting if it every returns false, then discards\nthe final boolean result.\n\nThis has much better performance characteristics: it makes one\ndynamic call per element of the tree, and it doesn't heap-allocate\nanything. It is also clearer.",
3059
+ "default": true
3060
+ },
2266
3061
  "shadow": {
2267
3062
  "type": "boolean",
2268
3063
  "markdownDescription": "check for possible unintended shadowing of variables\n\nThis analyzer check for shadowed variables.\nA shadowed variable is a variable declared in an inner scope\nwith the same name and type as a variable in an outer scope,\nand where the outer variable is mentioned after the inner one\nis declared.\n\n(This definition can be refined; the module generates too many\nfalse positives and is not yet enabled by default.)\n\nFor example:\n\n\tfunc BadRead(f *os.File, buf []byte) error {\n\t\tvar err error\n\t\tfor {\n\t\t\tn, err := f.Read(buf) // shadows the function variable 'err'\n\t\t\tif err != nil {\n\t\t\t\tbreak // causes return of wrong value\n\t\t\t}\n\t\t\tfoo(buf)\n\t\t}\n\t\treturn err\n\t}",
@@ -2396,6 +3191,33 @@
2396
3191
  "default": true,
2397
3192
  "scope": "resource"
2398
3193
  },
3194
+ "ui.diagnostic.annotations": {
3195
+ "type": "object",
3196
+ "markdownDescription": "annotations specifies the various kinds of compiler\noptimization details that should be reported as diagnostics\nwhen enabled for a package by the \"Toggle compiler\noptimization details\" (`gopls.gc_details`) command.\n\n(Some users care only about one kind of annotation in their\nprofiling efforts. More importantly, in large packages, the\nnumber of annotations can sometimes overwhelm the user\ninterface and exceed the per-file diagnostic limit.)\n\nTODO(adonovan): rename this field to CompilerOptDetail.\n",
3197
+ "scope": "resource",
3198
+ "properties": {
3199
+ "bounds": {
3200
+ "type": "boolean",
3201
+ "markdownDescription": "`\"bounds\"` controls bounds checking diagnostics.\n",
3202
+ "default": true
3203
+ },
3204
+ "escape": {
3205
+ "type": "boolean",
3206
+ "markdownDescription": "`\"escape\"` controls diagnostics about escape choices.\n",
3207
+ "default": true
3208
+ },
3209
+ "inline": {
3210
+ "type": "boolean",
3211
+ "markdownDescription": "`\"inline\"` controls diagnostics about inlining choices.\n",
3212
+ "default": true
3213
+ },
3214
+ "nil": {
3215
+ "type": "boolean",
3216
+ "markdownDescription": "`\"nil\"` controls nil checks.\n",
3217
+ "default": true
3218
+ }
3219
+ }
3220
+ },
2399
3221
  "ui.diagnostic.diagnosticsDelay": {
2400
3222
  "type": "string",
2401
3223
  "markdownDescription": "(Advanced) diagnosticsDelay controls the amount of time that gopls waits\nafter the most recent file modification before computing deep diagnostics.\nSimple diagnostics (parsing and type-checking) are always run immediately\non recently modified packages.\n\nThis option must be set to a valid duration string, for example `\"250ms\"`.\n",
@@ -2418,7 +3240,13 @@
2418
3240
  },
2419
3241
  "ui.diagnostic.staticcheck": {
2420
3242
  "type": "boolean",
2421
- "markdownDescription": "(Experimental) staticcheck enables additional analyses from staticcheck.io.\nThese analyses are documented on\n[Staticcheck's website](https://staticcheck.io/docs/checks/).\n",
3243
+ "markdownDescription": "(Experimental) staticcheck configures the default set of analyses staticcheck.io.\nThese analyses are documented on\n[Staticcheck's website](https://staticcheck.io/docs/checks/).\n\nThe \"staticcheck\" option has three values:\n- false: disable all staticcheck analyzers\n- true: enable all staticcheck analyzers\n- unset: enable a subset of staticcheck analyzers\n selected by gopls maintainers for runtime efficiency\n and analytic precision.\n\nRegardless of this setting, individual analyzers can be\nselectively enabled or disabled using the `analyses` setting.\n",
3244
+ "default": false,
3245
+ "scope": "resource"
3246
+ },
3247
+ "ui.diagnostic.staticcheckProvided": {
3248
+ "type": "boolean",
3249
+ "markdownDescription": "(Experimental) ",
2422
3250
  "default": false,
2423
3251
  "scope": "resource"
2424
3252
  },