pub struct AcceptContext<'f, 'sess, S: Stage> {
pub(crate) shared: SharedContext<'f, 'sess, S>,
pub(crate) attr_span: Span,
pub(crate) attr_style: AttrStyle,
pub(crate) template: &'f AttributeTemplate,
pub(crate) attr_path: AttrPath,
}
Expand description
Context given to every attribute parser when accepting
Gives AttributeParser
s enough information to create errors, for example.
Fields§
§attr_span: Span
The span of the attribute currently being parsed
attr_style: AttrStyle
Whether it is an inner or outer attribute
template: &'f AttributeTemplate
The expected structure of the attribute.
Used in reporting errors to give a hint to users what the attribute should look like.
attr_path: AttrPath
The name of the attribute we’re currently accepting.
Implementations§
Source§impl<S: Stage> AcceptContext<'_, '_, S>
impl<S: Stage> AcceptContext<'_, '_, S>
fn parse_limit_int(&self, nv: &NameValueParser) -> Option<Limit>
Source§impl<'f, 'sess: 'f, S: Stage> AcceptContext<'f, 'sess, S>
impl<'f, 'sess: 'f, S: Stage> AcceptContext<'f, 'sess, S>
pub(crate) fn unknown_key( &self, span: Span, found: String, options: &'static [&'static str], ) -> ErrorGuaranteed
Sourcepub(crate) fn expected_string_literal(
&self,
span: Span,
actual_literal: Option<&MetaItemLit>,
) -> ErrorGuaranteed
pub(crate) fn expected_string_literal( &self, span: Span, actual_literal: Option<&MetaItemLit>, ) -> ErrorGuaranteed
error that a string literal was expected.
You can optionally give the literal you did find (which you found not to be a string literal)
which can make better errors. For example, if the literal was a byte string it will suggest
removing the b
prefix.
pub(crate) fn expected_integer_literal(&self, span: Span) -> ErrorGuaranteed
pub(crate) fn expected_list(&self, span: Span) -> ErrorGuaranteed
pub(crate) fn expected_no_args(&self, args_span: Span) -> ErrorGuaranteed
Sourcepub(crate) fn expected_identifier(&self, span: Span) -> ErrorGuaranteed
pub(crate) fn expected_identifier(&self, span: Span) -> ErrorGuaranteed
emit an error that a name
was expected here
Sourcepub(crate) fn expected_name_value(
&self,
span: Span,
name: Option<Symbol>,
) -> ErrorGuaranteed
pub(crate) fn expected_name_value( &self, span: Span, name: Option<Symbol>, ) -> ErrorGuaranteed
emit an error that a name = value
pair was expected at this span. The symbol can be given for
a nicer error message talking about the specific name that was found lacking a value.
Sourcepub(crate) fn duplicate_key(&self, span: Span, key: Symbol) -> ErrorGuaranteed
pub(crate) fn duplicate_key(&self, span: Span, key: Symbol) -> ErrorGuaranteed
emit an error that a name = value
pair was found where that name was already seen.
Sourcepub(crate) fn unexpected_literal(&self, span: Span) -> ErrorGuaranteed
pub(crate) fn unexpected_literal(&self, span: Span) -> ErrorGuaranteed
an error that should be emitted when a MetaItemOrLitParser
was expected not to be a literal, but instead a meta item.
pub(crate) fn expected_single_argument(&self, span: Span) -> ErrorGuaranteed
pub(crate) fn expected_at_least_one_argument( &self, span: Span, ) -> ErrorGuaranteed
Sourcepub(crate) fn expected_specific_argument(
&self,
span: Span,
possibilities: &[Symbol],
) -> ErrorGuaranteed
pub(crate) fn expected_specific_argument( &self, span: Span, possibilities: &[Symbol], ) -> ErrorGuaranteed
produces an error along the lines of expected one of [foo, meow]
Sourcepub(crate) fn expected_specific_argument_and_list(
&self,
span: Span,
possibilities: &[Symbol],
) -> ErrorGuaranteed
pub(crate) fn expected_specific_argument_and_list( &self, span: Span, possibilities: &[Symbol], ) -> ErrorGuaranteed
produces an error along the lines of expected one of [foo, meow] as an argument
.
i.e. slightly different wording to expected_specific_argument
.
Sourcepub(crate) fn expected_specific_argument_strings(
&self,
span: Span,
possibilities: &[Symbol],
) -> ErrorGuaranteed
pub(crate) fn expected_specific_argument_strings( &self, span: Span, possibilities: &[Symbol], ) -> ErrorGuaranteed
produces an error along the lines of expected one of ["foo", "meow"]
pub(crate) fn warn_empty_attribute(&mut self, span: Span)
Methods from Deref<Target = SharedContext<'f, 'sess, S>>§
Methods from Deref<Target = AttributeParser<'sess, S>>§
pub(crate) fn sess(&self) -> &'sess Session
pub(crate) fn features(&self) -> &'sess Features
pub(crate) fn features_option(&self) -> Option<&'sess Features>
pub(crate) fn dcx(&self) -> DiagCtxtHandle<'sess>
Sourcepub fn parse_attribute_list(
&mut self,
attrs: &[Attribute],
target_span: Span,
target_id: S::Id,
target: Target,
omit_doc: OmitDoc,
lower_span: impl Copy + Fn(Span) -> Span,
emit_lint: impl FnMut(AttributeLint<S::Id>),
) -> Vec<Attribute>
pub fn parse_attribute_list( &mut self, attrs: &[Attribute], target_span: Span, target_id: S::Id, target: Target, omit_doc: OmitDoc, lower_span: impl Copy + Fn(Span) -> Span, emit_lint: impl FnMut(AttributeLint<S::Id>), ) -> Vec<Attribute>
Parse a list of attributes.
target_span
is the span of the thing this list of attributes is applied to,
and when omit_doc
is set, doc attributes are filtered out.
fn lower_attr_args( &self, args: &AttrArgs, lower_span: impl Fn(Span) -> Span, ) -> AttrArgs
Trait Implementations§
Source§impl<'f, 'sess, S: Stage> Deref for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S: Stage> Deref for AcceptContext<'f, 'sess, S>
Auto Trait Implementations§
impl<'f, 'sess, S> !DynSend for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> !DynSync for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> Freeze for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> !RefUnwindSafe for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> !Send for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> !Sync for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> Unpin for AcceptContext<'f, 'sess, S>
impl<'f, 'sess, S> !UnwindSafe for AcceptContext<'f, 'sess, S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.