Turn format arguments types into lang items.
This commit is contained in:
parent
3c45176592
commit
bebf9fe063
@ -244,6 +244,14 @@ language_item_table! {
|
|||||||
/// libstd panic entry point. Necessary for const eval to be able to catch it
|
/// libstd panic entry point. Necessary for const eval to be able to catch it
|
||||||
BeginPanic, sym::begin_panic, begin_panic_fn, Target::Fn, GenericRequirement::None;
|
BeginPanic, sym::begin_panic, begin_panic_fn, Target::Fn, GenericRequirement::None;
|
||||||
|
|
||||||
|
// Lang items needed for `format_args!()`.
|
||||||
|
FormatAlignment, sym::format_alignment, format_alignment, Target::Enum, GenericRequirement::None;
|
||||||
|
FormatArgument, sym::format_argument, format_argument, Target::Struct, GenericRequirement::None;
|
||||||
|
FormatArguments, sym::format_arguments, format_arguments, Target::Struct, GenericRequirement::None;
|
||||||
|
FormatCount, sym::format_count, format_count, Target::Enum, GenericRequirement::None;
|
||||||
|
FormatPlaceholder, sym::format_placeholder, format_placeholder, Target::Struct, GenericRequirement::None;
|
||||||
|
FormatUnsafeArg, sym::format_unsafe_arg, format_unsafe_arg, Target::Struct, GenericRequirement::None;
|
||||||
|
|
||||||
ExchangeMalloc, sym::exchange_malloc, exchange_malloc_fn, Target::Fn, GenericRequirement::None;
|
ExchangeMalloc, sym::exchange_malloc, exchange_malloc_fn, Target::Fn, GenericRequirement::None;
|
||||||
BoxFree, sym::box_free, box_free_fn, Target::Fn, GenericRequirement::Minimum(1);
|
BoxFree, sym::box_free, box_free_fn, Target::Fn, GenericRequirement::Minimum(1);
|
||||||
DropInPlace, sym::drop_in_place, drop_in_place_fn, Target::Fn, GenericRequirement::Minimum(1);
|
DropInPlace, sym::drop_in_place, drop_in_place_fn, Target::Fn, GenericRequirement::Minimum(1);
|
||||||
|
@ -721,11 +721,17 @@ symbols! {
|
|||||||
forbid,
|
forbid,
|
||||||
forget,
|
forget,
|
||||||
format,
|
format,
|
||||||
|
format_alignment,
|
||||||
format_args,
|
format_args,
|
||||||
format_args_capture,
|
format_args_capture,
|
||||||
format_args_macro,
|
format_args_macro,
|
||||||
format_args_nl,
|
format_args_nl,
|
||||||
|
format_argument,
|
||||||
|
format_arguments,
|
||||||
|
format_count,
|
||||||
format_macro,
|
format_macro,
|
||||||
|
format_placeholder,
|
||||||
|
format_unsafe_arg,
|
||||||
freeze,
|
freeze,
|
||||||
freg,
|
freg,
|
||||||
frem_fast,
|
frem_fast,
|
||||||
|
@ -262,6 +262,7 @@ extern "C" {
|
|||||||
/// family of functions. It contains a function to format the given value. At
|
/// family of functions. It contains a function to format the given value. At
|
||||||
/// compile time it is ensured that the function and the value have the correct
|
/// compile time it is ensured that the function and the value have the correct
|
||||||
/// types, and then this struct is used to canonicalize arguments to one type.
|
/// types, and then this struct is used to canonicalize arguments to one type.
|
||||||
|
#[cfg_attr(not(bootstrap), lang = "format_argument")]
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
#[allow(missing_debug_implementations)]
|
#[allow(missing_debug_implementations)]
|
||||||
#[unstable(feature = "fmt_internals", reason = "internal to format_args!", issue = "none")]
|
#[unstable(feature = "fmt_internals", reason = "internal to format_args!", issue = "none")]
|
||||||
@ -274,6 +275,7 @@ pub struct ArgumentV1<'a> {
|
|||||||
/// This struct represents the unsafety of constructing an `Arguments`.
|
/// This struct represents the unsafety of constructing an `Arguments`.
|
||||||
/// It exists, rather than an unsafe function, in order to simplify the expansion
|
/// It exists, rather than an unsafe function, in order to simplify the expansion
|
||||||
/// of `format_args!(..)` and reduce the scope of the `unsafe` block.
|
/// of `format_args!(..)` and reduce the scope of the `unsafe` block.
|
||||||
|
#[cfg_attr(not(bootstrap), lang = "format_unsafe_arg")]
|
||||||
#[allow(missing_debug_implementations)]
|
#[allow(missing_debug_implementations)]
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "fmt_internals", reason = "internal to format_args!", issue = "none")]
|
#[unstable(feature = "fmt_internals", reason = "internal to format_args!", issue = "none")]
|
||||||
@ -468,8 +470,8 @@ impl<'a> Arguments<'a> {
|
|||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// [`format()`]: ../../std/fmt/fn.format.html
|
/// [`format()`]: ../../std/fmt/fn.format.html
|
||||||
|
#[cfg_attr(not(bootstrap), lang = "format_arguments")]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[cfg_attr(not(test), rustc_diagnostic_item = "Arguments")]
|
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
pub struct Arguments<'a> {
|
pub struct Arguments<'a> {
|
||||||
// Format string pieces to print.
|
// Format string pieces to print.
|
||||||
|
@ -5,7 +5,9 @@
|
|||||||
//! these can be statically allocated and are slightly optimized for the runtime
|
//! these can be statically allocated and are slightly optimized for the runtime
|
||||||
#![allow(missing_debug_implementations)]
|
#![allow(missing_debug_implementations)]
|
||||||
|
|
||||||
|
#[cfg_attr(not(bootstrap), lang = "format_placeholder")]
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
|
// FIXME: Rename this to Placeholder
|
||||||
pub struct Argument {
|
pub struct Argument {
|
||||||
pub position: usize,
|
pub position: usize,
|
||||||
pub format: FormatSpec,
|
pub format: FormatSpec,
|
||||||
@ -21,6 +23,7 @@ pub struct FormatSpec {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Possible alignments that can be requested as part of a formatting directive.
|
/// Possible alignments that can be requested as part of a formatting directive.
|
||||||
|
#[cfg_attr(not(bootstrap), lang = "format_alignment")]
|
||||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||||
pub enum Alignment {
|
pub enum Alignment {
|
||||||
/// Indication that contents should be left-aligned.
|
/// Indication that contents should be left-aligned.
|
||||||
@ -34,6 +37,7 @@ pub enum Alignment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Used by [width](https://doc.rust-lang.org/std/fmt/#width) and [precision](https://doc.rust-lang.org/std/fmt/#precision) specifiers.
|
/// Used by [width](https://doc.rust-lang.org/std/fmt/#width) and [precision](https://doc.rust-lang.org/std/fmt/#precision) specifiers.
|
||||||
|
#[cfg_attr(not(bootstrap), lang = "format_count")]
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
pub enum Count {
|
pub enum Count {
|
||||||
/// Specified with a literal number, stores the value
|
/// Specified with a literal number, stores the value
|
||||||
|
Loading…
x
Reference in New Issue
Block a user