rust/compiler
bors 331e74014a Auto merge of #79944 - sivadeilra:syms_proc_macro_testing, r=petrochenkov
Improve error handling in `symbols` proc-macro

This improves how the `symbols` proc-macro handles errors.
If it finds an error in its input, the macro does not panic.
Instead, it still produces an output token stream. That token
stream will contain `compile_error!(...)` macro invocations.
This will still cause compilation to fail (which is what we want),
but it will prevent meaningless errors caused by the output not
containing symbols that the macro normally generates.

This solves a small (but annoying) problem. When you're editing
rustc_span/src/symbol.rs, and you get something wrong (dup
symbol name, misordered symbol), you want to get only the errors
that are relevant, not a burst of errors that are irrelevant.
This change also uses the correct Span when reporting errors,
so you get errors that point to the correct place in
rustc_span/src/symbol.rs where something is wrong.

This also adds several unit tests which test the `symbols` proc-macro.

This commit also makes it easy to run the `symbols` proc-macro
as an ordinary Cargo test. Just run `cargo test`. This makes it
easier to do development on the macro itself, such as running it
under a debugger.

This commit also uses the `Punctuated` type in `syn` for parsing
comma-separated lists, rather than doing it manually.

The output of the macro is not changed at all by this commit,
so rustc should be completely unchanged. This just improves
quality of life during development.
2020-12-14 07:03:52 +00:00
..
rustc
rustc_apfloat
rustc_arena
rustc_ast Accept arbitrary expressions in key-value attributes at parse time 2020-12-09 21:37:32 +03:00
rustc_ast_lowering Retain assembly operands span when lowering AST to HIR 2020-12-06 20:48:08 +01:00
rustc_ast_passes Rollup merge of #79851 - camelid:better-error-for-default-fn, r=davidtwco 2020-12-10 21:33:10 -08:00
rustc_ast_pretty
rustc_attr
rustc_builtin_macros fix clippy::unnecessary_filter_map 2020-12-11 23:02:19 +01:00
rustc_codegen_cranelift Auto merge of #77611 - oli-obk:atomic_miri_leakage, r=nagisa 2020-12-09 19:53:23 +00:00
rustc_codegen_llvm use strip_prefix over slicing (clippy::manual_strip) 2020-12-11 23:02:17 +01:00
rustc_codegen_ssa Auto merge of #79801 - eddyb:scalar-transmute, r=nagisa 2020-12-10 12:55:12 +00:00
rustc_data_structures
rustc_driver
rustc_error_codes Rollup merge of #79639 - sasurau4:feature/add-long-explanation-E0212, r=GuillaumeGomez 2020-12-10 21:33:04 -08:00
rustc_errors
rustc_expand Remove some no longer necessary #[cfg(test)]s 2020-12-12 19:20:37 +03:00
rustc_feature tidy: Re-enable check for inline unit tests 2020-12-12 19:18:44 +03:00
rustc_fs_util
rustc_graphviz
rustc_hir Retain assembly operands span when lowering AST to HIR 2020-12-06 20:48:08 +01:00
rustc_hir_pretty Retain assembly operands span when lowering AST to HIR 2020-12-06 20:48:08 +01:00
rustc_incremental
rustc_index
rustc_infer simplify if let Some(_) = x to if x.is_some() (clippy::redundant_pattern_matching) 2020-12-08 20:27:49 +01:00
rustc_interface Auto merge of #79586 - jyn514:crate-name, r=davidtwco 2020-12-03 12:14:29 +00:00
rustc_lexer Fix some clippy lints 2020-12-03 17:08:19 -05:00
rustc_lint don't create owned values for comparison (clippy::cmp_owned) 2020-12-08 20:27:48 +01:00
rustc_lint_defs Validate naked functions definitions 2020-12-07 00:00:00 +00:00
rustc_llvm use strip_prefix over slicing (clippy::manual_strip) 2020-12-11 23:02:17 +01:00
rustc_macros ./x.py fmt 2020-12-13 13:36:01 -08:00
rustc_metadata Account for gaps in def path table during decoding 2020-12-08 13:02:53 -05:00
rustc_middle Auto merge of #79169 - LeSeulArtichaut:ty-lib, r=nikomatsakis 2020-12-12 12:36:18 +00:00
rustc_mir Rollup merge of #79984 - Nadrieril:remove-unused-dep, r=jyn514 2020-12-13 11:05:47 +09:00
rustc_mir_build Rollup merge of #79940 - matthiaskrgr:cl15ppy, r=Dylan-DPC 2020-12-13 11:05:36 +09:00
rustc_parse Auto merge of #79978 - Aaron1011:fix/capture-broken-token, r=petrochenkov 2020-12-13 19:31:06 +00:00
rustc_parse_format
rustc_passes Rollup merge of #79844 - tmiasko:rwu-table-mod, r=lcnr 2020-12-09 13:38:34 -08:00
rustc_plugin_impl
rustc_privacy
rustc_query_system Use def_path_hash_to_def_id when re-using a RawDefId 2020-12-10 16:04:19 -05:00
rustc_resolve Resolve enum field visibility correctly 2020-12-12 14:04:59 -08:00
rustc_save_analysis
rustc_serialize Fix some clippy lints 2020-12-03 17:08:19 -05:00
rustc_session fix clippy::{needless_bool, manual_unwrap_or} 2020-12-11 23:02:19 +01:00
rustc_span Use Symbol for inline asm register class names 2020-12-10 13:51:56 -08:00
rustc_symbol_mangling
rustc_target Rollup merge of #79917 - sivadeilra:asm_symbols, r=petrochenkov 2020-12-10 21:33:19 -08:00
rustc_trait_selection use if let Some(x) = .. instead of ...map(|x|) to conditionally run fns that return () (clippy::option_map_unit_fn) 2020-12-11 23:02:19 +01:00
rustc_traits
rustc_ty_utils
rustc_type_ir Fix typo in DebruijnIndex documentation 2020-12-12 16:13:06 +01:00
rustc_typeck Auto merge of #79956 - camelid:variant-field-vis, r=petrochenkov 2020-12-13 08:40:07 +00:00