KCL IDE 实时显示警告和错误功能来了!支持完整语法语义错误恢复

热乎的 PR:https://github.com/KusionStack/KCLVM/pull/460
效果展示:

1 个赞

这是做了一个IDE吗?厉害

嗯嗯,通过 LSP 接 vscode

请问有所有错误信息的文档说明吗?
另外,在信息风格上,是否考虑尽量一致,比如:expected int, got str 给了用户编译器的期望以及探知到的现状。而 unterminated string 或 name ‘name’ is not defined 就没有比较明显的给用户的期望或者修正方面的建议。
警告信息也类似,module … but unused 如果是建议用户删去,包含在信息中如何?

顺便问下,打算提供中文版信息吗?

感谢反馈。错误信息的文档说明在这里:KCL Errors and Warnings | KCL programming language. 。后面还会持续完善错误信息、Tips 提示和错误信息 i18n 等。

另外,在 IDE 层面会根据编译器 Tips 通过小灯泡:bulb:等方式提示用户修改。

刚开始看错误说明文档。1.1 KCL Syntax Error (E1xxx) 里,几个问题:

  • InvalidSyntaxError 听起来范围很大。看例子里用户看到的都是 error[E1001]: InvalidSyntax
  • KCLIndentationError 的例子里报错信息和 KCLTabError 相同
  • 报错信息有的是描述错误,如 positional argument follows keyword argument,有的是修改建议如 expected statement,打算把风格一致化吗?

关于 tab 和空格,你觉得设计允许两种风格的好处值得带来的麻烦吗?或者说如果只允许空格的话会有什么不便呢?

感谢反馈 :smiling_face_with_three_hearts:

  • 目前 KCL 报错是有一些问题(可能还不止这些),错误信息和错误代码还会在后续版本持续优化和统一,提升用户体验。
  • KCL 目前同时允许 tab 和空格这块是和 python 保持了一致,个人感觉 [收益 < 成本], 其实作为一个 DSL 应该尽可能统一 style, 也有计划将 tab/空格风格统一,不过大部分 IDE 目前已经能够智能将 tab 转换为空格。
1 个赞