diff --git a/src/libcore/ops.rs b/src/libcore/ops.rs index ce774a66381..fdc8b9e7400 100644 --- a/src/libcore/ops.rs +++ b/src/libcore/ops.rs @@ -832,3 +832,53 @@ impl FnOnce for F self.call_mut(args) } } + +#[cfg(stage0)] +mod fn_impls { + use super::Fn; + + impl Fn<(),Result> for extern "Rust" fn() -> Result { + #[allow(non_snake_case)] + extern "rust-call" fn call(&self, _args: ()) -> Result { + (*self)() + } + } + + impl Fn<(A0,),Result> for extern "Rust" fn(A0) -> Result { + #[allow(non_snake_case)] + extern "rust-call" fn call(&self, args: (A0,)) -> Result { + let (a0,) = args; + (*self)(a0) + } + } + + macro_rules! def_fn( + ($($args:ident)*) => ( + impl + Fn<($($args,)*),Result> + for extern "Rust" fn($($args: $args,)*) -> Result { + #[allow(non_snake_case)] + extern "rust-call" fn call(&self, args: ($($args,)*)) -> Result { + let ($($args,)*) = args; + (*self)($($args,)*) + } + } + ) + ) + + def_fn!(A0 A1) + def_fn!(A0 A1 A2) + def_fn!(A0 A1 A2 A3) + def_fn!(A0 A1 A2 A3 A4) + def_fn!(A0 A1 A2 A3 A4 A5) + def_fn!(A0 A1 A2 A3 A4 A5 A6) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14) + def_fn!(A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15) +} diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index ab2c15d54c5..2a77e3e6791 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -763,7 +763,7 @@ impl<'a> StringReader<'a> { } } - // SNAP 361baab + // SNAP c9f6d69 #[allow(unused)] fn old_escape_warning(&mut self, sp: Span) { self.span_diagnostic @@ -796,7 +796,7 @@ impl<'a> StringReader<'a> { self.scan_unicode_escape(delim) } else { let res = self.scan_hex_digits(4u, delim, false); - // SNAP 361baab + // SNAP c9f6d69 //let sp = codemap::mk_sp(escaped_pos, self.last_pos); //self.old_escape_warning(sp); res @@ -804,7 +804,7 @@ impl<'a> StringReader<'a> { } 'U' if !ascii_only => { let res = self.scan_hex_digits(8u, delim, false); - // SNAP 361baab + // SNAP c9f6d69 //let sp = codemap::mk_sp(escaped_pos, self.last_pos); //self.old_escape_warning(sp); res diff --git a/src/snapshots.txt b/src/snapshots.txt index a1a840b4deb..0faf6840f06 100644 --- a/src/snapshots.txt +++ b/src/snapshots.txt @@ -1,12 +1,3 @@ -S 2014-12-05 361baab - freebsd-x86_64 73cbae4168538a07facd81cca45ed672badb7c3a - linux-i386 211cf0fbdbc7045b765e7b92d92049bbe6788513 - linux-x86_64 f001cec306fc1ac77504884acf5dac2e7b39e164 - macos-i386 751dc02fac96114361c56eb45ce52e7a58d555e0 - macos-x86_64 58cad0275d7b33412501d7dd3386b924d2304e83 - winnt-i386 872c56b88cebd7d590fd00bcbd264f0003b4427b - winnt-x86_64 2187d8b3187c03f95cd4e56a582f55ec0cfa8df9 - S 2014-11-21 c9f6d69 freebsd-x86_64 0ef316e7c369177de043e69e964418bd637cbfc0 linux-i386 c8342e762a1720be939ed7c6a39bdaa27892f66f