rust/crates
bors[bot] c4ead49361 Merge #1034
1034: HIR diagnostics API r=matklad a=matklad

This PR introduces diagnostics API for HIR, so we can now start issuing errors and warnings! Here are requirements that this solution aims to fulfill:

* structured diagnostics: rather than immediately rendering error to string, we provide a well-typed blob of data with error-description. These data is used by IDE to provide fixes
* open set diagnostics: there's no single enum with all possible diagnostics, which hopefully should result in better modularity

The `Diagnostic` trait describes "a diagnostic", which can be downcast to a specific diagnostic kind. Diagnostics are expressed in terms of macro-expanded syntax tree: they store pointers to syntax nodes. Diagnostics are self-contained: you don't need any context, besides `db`, to fully understand the meaning of a diagnostic. 

Because diagnostics are tied to the source, we can't store them in salsa. So subsystems like type-checking produce subsystem-local diagnostic (which is a closed `enum`), which is expressed in therms of subsystem IR. A separate step converts these proto-diagnostics into `Diagnostic`, by merging them with source-maps.

Note that this PR stresses type-system quite a bit: we now type-check every function in open files to compute errors!

Discussion on Zulip: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Diagnostics.20API

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-03-25 11:38:46 +00:00
..
gen_lsp_server show message in client's UI if workspace fails to load 2019-03-05 16:33:05 +03:00
ra_arena
ra_assists Merge #1036 2019-03-25 07:04:47 +00:00
ra_batch rename persistent hir database -> def database 2019-03-23 15:44:24 +03:00
ra_cli structure moved to ra_ide_api 2019-03-25 11:41:21 +03:00
ra_db replace todo with fixme 2019-03-23 11:07:09 +03:00
ra_fmt
ra_hir move tests to where they belong 2019-03-25 14:29:24 +03:00
ra_ide_api Merge #1034 2019-03-25 11:38:46 +00:00
ra_lsp_server Move actual include logic to ProjectRoot 2019-03-21 10:43:47 +02:00
ra_mbe hack around non-terminating macro expansion 2019-03-17 12:52:52 +03:00
ra_parser Support references in higher-ranked trait bounds 2019-03-24 20:51:55 +02:00
ra_project_model replace todo with fixme 2019-03-23 11:07:09 +03:00
ra_syntax Merge #1034 2019-03-25 11:38:46 +00:00
ra_text_edit Disable fork feature for proptest 2019-03-23 08:57:07 +01:00
ra_tt
test_utils fix error on wrong path 2019-03-17 12:53:22 +03:00
thread_worker
tools forbid todo markers 2019-03-23 10:53:28 +03:00