Rollup merge of #138111 - estebank:use-dfv, r=nnethercote
Use `default_field_values` for `rustc_errors::Context`, `rustc_session::config::NextSolverConfig` and `rustc_session::config::ErrorOutputType` Wanted to see where `#![feature(default_field_values)]` could be used in the codebase. These three seemed like no-brainers. There are a bunch of more places where we could remove manual `Default` impls, but they `derive` other traits that rely on `syn`, which [doesn't yet support `default_field_values`](https://github.com/dtolnay/syn/issues/1774).
This commit is contained in:
commit
acc7de6c77
7 changed files with 37 additions and 49 deletions
|
@ -14,6 +14,7 @@
|
|||
#![feature(associated_type_defaults)]
|
||||
#![feature(box_into_inner)]
|
||||
#![feature(box_patterns)]
|
||||
#![feature(default_field_values)]
|
||||
#![feature(error_reporter)]
|
||||
#![feature(if_let_guard)]
|
||||
#![feature(let_chains)]
|
||||
|
|
|
@ -40,11 +40,13 @@ type ParseResult<'a> = Option<Parsed<'a>>;
|
|||
|
||||
/// Parsing context
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
// The default values are the most common setting for non top-level parsing: not top block, not at
|
||||
// line start (yes leading whitespace, not escaped).
|
||||
struct Context {
|
||||
/// If true, we are at a the topmost level (not recursing a nested tt)
|
||||
top_block: bool,
|
||||
top_block: bool = false,
|
||||
/// Previous character
|
||||
prev: Prev,
|
||||
prev: Prev = Prev::Whitespace,
|
||||
}
|
||||
|
||||
/// Character class preceding this one
|
||||
|
@ -57,14 +59,6 @@ enum Prev {
|
|||
Any,
|
||||
}
|
||||
|
||||
impl Default for Context {
|
||||
/// Most common setting for non top-level parsing: not top block, not at
|
||||
/// line start (yes leading whitespace, not escaped)
|
||||
fn default() -> Self {
|
||||
Self { top_block: false, prev: Prev::Whitespace }
|
||||
}
|
||||
}
|
||||
|
||||
/// Flags to simple parser function
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
enum ParseOpt {
|
||||
|
@ -248,7 +242,7 @@ fn parse_heading(buf: &[u8]) -> ParseResult<'_> {
|
|||
}
|
||||
|
||||
let (txt, rest) = parse_to_newline(&buf[1..]);
|
||||
let ctx = Context { top_block: false, prev: Prev::Whitespace };
|
||||
let ctx = Context { .. };
|
||||
let stream = parse_recursive(txt, ctx);
|
||||
|
||||
Some((MdTree::Heading(level.try_into().unwrap(), stream), rest))
|
||||
|
@ -257,7 +251,7 @@ fn parse_heading(buf: &[u8]) -> ParseResult<'_> {
|
|||
/// Bulleted list
|
||||
fn parse_unordered_li(buf: &[u8]) -> Parsed<'_> {
|
||||
let (txt, rest) = get_indented_section(&buf[2..]);
|
||||
let ctx = Context { top_block: false, prev: Prev::Whitespace };
|
||||
let ctx = Context { .. };
|
||||
let stream = parse_recursive(trim_ascii_start(txt), ctx);
|
||||
(MdTree::UnorderedListItem(stream), rest)
|
||||
}
|
||||
|
@ -266,7 +260,7 @@ fn parse_unordered_li(buf: &[u8]) -> Parsed<'_> {
|
|||
fn parse_ordered_li(buf: &[u8]) -> Parsed<'_> {
|
||||
let (num, pos) = ord_list_start(buf).unwrap(); // success tested in caller
|
||||
let (txt, rest) = get_indented_section(&buf[pos..]);
|
||||
let ctx = Context { top_block: false, prev: Prev::Whitespace };
|
||||
let ctx = Context { .. };
|
||||
let stream = parse_recursive(trim_ascii_start(txt), ctx);
|
||||
(MdTree::OrderedListItem(num, stream), rest)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue