mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
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
|
||||
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;
|
||||
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);
|
||||
|
@ -721,11 +721,17 @@ symbols! {
|
||||
forbid,
|
||||
forget,
|
||||
format,
|
||||
format_alignment,
|
||||
format_args,
|
||||
format_args_capture,
|
||||
format_args_macro,
|
||||
format_args_nl,
|
||||
format_argument,
|
||||
format_arguments,
|
||||
format_count,
|
||||
format_macro,
|
||||
format_placeholder,
|
||||
format_unsafe_arg,
|
||||
freeze,
|
||||
freg,
|
||||
frem_fast,
|
||||
|
@ -262,6 +262,7 @@ extern "C" {
|
||||
/// 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
|
||||
/// types, and then this struct is used to canonicalize arguments to one type.
|
||||
#[cfg_attr(not(bootstrap), lang = "format_argument")]
|
||||
#[derive(Copy, Clone)]
|
||||
#[allow(missing_debug_implementations)]
|
||||
#[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`.
|
||||
/// It exists, rather than an unsafe function, in order to simplify the expansion
|
||||
/// of `format_args!(..)` and reduce the scope of the `unsafe` block.
|
||||
#[cfg_attr(not(bootstrap), lang = "format_unsafe_arg")]
|
||||
#[allow(missing_debug_implementations)]
|
||||
#[doc(hidden)]
|
||||
#[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
|
||||
#[cfg_attr(not(bootstrap), lang = "format_arguments")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg_attr(not(test), rustc_diagnostic_item = "Arguments")]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct Arguments<'a> {
|
||||
// Format string pieces to print.
|
||||
|
@ -5,7 +5,9 @@
|
||||
//! these can be statically allocated and are slightly optimized for the runtime
|
||||
#![allow(missing_debug_implementations)]
|
||||
|
||||
#[cfg_attr(not(bootstrap), lang = "format_placeholder")]
|
||||
#[derive(Copy, Clone)]
|
||||
// FIXME: Rename this to Placeholder
|
||||
pub struct Argument {
|
||||
pub position: usize,
|
||||
pub format: FormatSpec,
|
||||
@ -21,6 +23,7 @@ pub struct FormatSpec {
|
||||
}
|
||||
|
||||
/// Possible alignments that can be requested as part of a formatting directive.
|
||||
#[cfg_attr(not(bootstrap), lang = "format_alignment")]
|
||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||
pub enum Alignment {
|
||||
/// 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.
|
||||
#[cfg_attr(not(bootstrap), lang = "format_count")]
|
||||
#[derive(Copy, Clone)]
|
||||
pub enum Count {
|
||||
/// Specified with a literal number, stores the value
|
||||
|
Loading…
Reference in New Issue
Block a user