/// unsafety, but will ignore invalid .
#[doc(hidden)] #[inline]
#[unstable = "implementation detail of the `format_args!` macro"]
+ #[cfg(stage0)] // SNAP 9e4e524
pub fn with_placeholders(pieces: &'a [&'a str],
fmt: &'a [rt::Argument<'a>],
args: &'a [Argument<'a>]) -> Arguments<'a> {
args: args
}
}
+ /// This function is used to specify nonstandard formatting parameters.
+ /// The `pieces` array must be at least as long as `fmt` to construct
+ /// a valid Arguments structure. Also, any `Count` within `fmt` that is
+ /// `CountIsParam` or `CountIsNextParam` has to point to an argument
+ /// created with `argumentuint`. However, failing to do so doesn't cause
+ /// unsafety, but will ignore invalid .
+ #[doc(hidden)] #[inline]
+ #[unstable = "implementation detail of the `format_args!` macro"]
+ #[cfg(not(stage0))]
+ pub fn with_placeholders(pieces: &'a [&'a str],
+ fmt: &'a [rt::Argument],
+ args: &'a [Argument<'a>]) -> Arguments<'a> {
+ Arguments {
+ pieces: pieces,
+ fmt: Some(fmt),
+ args: args
+ }
+ }
}
/// This structure represents a safely precompiled version of a format string
pieces: &'a [&'a str],
// Placeholder specs, or `None` if all specs are default (as in "{}{}").
+ // SNAP 9e4e524
+ #[cfg(stage0)]
fmt: Option<&'a [rt::Argument<'a>]>,
+ #[cfg(not(stage0))]
+ fmt: Option<&'a [rt::Argument]>,
// Dynamic arguments for interpolation, to be interleaved with string
// pieces. (Every argument is preceded by a string piece.)
} else {
// Build up the static array which will store our precompiled
// nonstandard placeholders, if there are any.
- let piece_ty = self.ecx.ty_path(self.ecx.path_all(
+ let piece_ty = self.ecx.ty_path(self.ecx.path_global(
self.fmtsp,
- true, Context::rtpath(self.ecx, "Argument"),
- vec![static_lifetime],
- vec![],
- vec![]
- ));
+ Context::rtpath(self.ecx, "Argument")));
let fmt = Context::static_array(self.ecx,
"__STATIC_FMTARGS",
piece_ty,