use crate::errors::{InvalidMetaItem, SuffixedLiteralInAttribute};
+use crate::fluent_generated as fluent;
use super::{AttrWrapper, Capturing, FnParseMode, ForceCollect, Parser, PathStyle};
use rustc_ast as ast;
use rustc_ast::attr;
use rustc_ast::token::{self, Delimiter, Nonterminal};
-use rustc_errors::{error_code, fluent, Diagnostic, IntoDiagnostic, PResult};
+use rustc_errors::{error_code, Diagnostic, IntoDiagnostic, PResult};
use rustc_span::{sym, BytePos, Span};
+use std::convert::TryInto;
+use thin_vec::ThinVec;
+use tracing::debug;
// Public for rustfmt usage
#[derive(Debug)]
token::CommentKind::Block => OuterAttributeType::DocBlockComment,
},
) {
- err.note(fluent::note);
+ err.note(fluent::parse_note);
err.span_suggestion_verbose(
replacement_span,
- fluent::suggestion,
+ fluent::parse_suggestion,
"",
rustc_errors::Applicability::MachineApplicable,
);
Ok(Some(item)) => {
// FIXME(#100717)
err.set_arg("item", item.kind.descr());
- err.span_label(item.span, fluent::label_does_not_annotate_this);
+ err.span_label(item.span, fluent::parse_label_does_not_annotate_this);
err.span_suggestion_verbose(
replacement_span,
- fluent::sugg_change_inner_to_outer,
+ fluent::parse_sugg_change_inner_to_outer,
match attr_type {
OuterAttributeType::Attribute => "",
OuterAttributeType::DocBlockComment => "*",
attr_sp,
fluent::parse_inner_attr_not_permitted_after_outer_doc_comment,
);
- diag.span_label(attr_sp, fluent::label_attr)
- .span_label(prev_doc_comment_span, fluent::label_prev_doc_comment);
+ diag.span_label(attr_sp, fluent::parse_label_attr)
+ .span_label(prev_doc_comment_span, fluent::parse_label_prev_doc_comment);
diag
}
Some(InnerAttrForbiddenReason::AfterOuterAttribute { prev_outer_attr_sp }) => {
attr_sp,
fluent::parse_inner_attr_not_permitted_after_outer_attr,
);
- diag.span_label(attr_sp, fluent::label_attr)
- .span_label(prev_outer_attr_sp, fluent::label_prev_attr);
+ diag.span_label(attr_sp, fluent::parse_label_attr)
+ .span_label(prev_outer_attr_sp, fluent::parse_label_prev_attr);
diag
}
Some(InnerAttrForbiddenReason::InCodeBlock) | None => {
}
/// Matches `COMMASEP(meta_item_inner)`.
- pub(crate) fn parse_meta_seq_top(&mut self) -> PResult<'a, Vec<ast::NestedMetaItem>> {
+ pub(crate) fn parse_meta_seq_top(&mut self) -> PResult<'a, ThinVec<ast::NestedMetaItem>> {
// Presumably, the majority of the time there will only be one attr.
- let mut nmis = Vec::with_capacity(1);
+ let mut nmis = ThinVec::with_capacity(1);
while self.token.kind != token::Eof {
nmis.push(self.parse_meta_item_inner()?);
if !self.eat(&token::Comma) {