Actionable diagnostic support
eed3si9n opened this issue · 1 comments
eed3si9n commented
This is an imple proposal for @ckipp01's Roadmap for actionable diagnostics, which will enable Scala compiler to suggest (semi-automatic) code edits together with compilation errors and warnings, likely useful for things like deprecation and migration warnings.
What's been added to Zinc thus far
Problem#actions- https://github.com/sbt/sbt/blob/v1.9.0-RC3/internal/util-interface/src/main/java/xsbti/Problem.java#L81-L83 (Action contains WorkspaceEdit, which contains TextEdit)- Scala 2.x compiler bridge is now capable of sending
Problem#actionssince sbt/zinc#1186. As a toy example, it scans for"procedure syntax is deprecated:"in the error message to generate an action.
What I'd like to add to Scala 2.13
- Methods in Reporter (https://github.com/scala/scala/blob/v2.13.11-M1/src/reflect/scala/reflect/internal/Reporting.scala#L102) so compiler implementation can report structural code suggestion:
protected def doReport(pos: Position, msg: String, severity: Severity, force: Boolean, actions: List[Action]): Unit final def echo(pos: Position, msg: String, actions: List[Action]): Unit final def warning(pos: Position, msg: String, actions: List[Action]): Unit final def error(pos: Position, msg: String, actions: List[Action]): Unit
- Data structure for
Action,WorkspaceEdit, andTextEdit(trait in api + data type in internal). - Add a few actions to deprecations. For example:
- scala/scala#8833
- procedure syntax - scala/scala@1d4d901
valinforcomprehension scala/scala#6348- scala/scala#10320
Impact to existing users
Hopefully none. The errors and warning message should remain as-is including code examples. Actions will be additional information that compatible editors like IntelliJ and Metals can consume.
eed3si9n commented
here's my PR for this - scala/scala#10406