diff --git a/src/libfourcc/lib.rs b/src/libfourcc/lib.rs index aae47b87f07..2b017b501c9 100644 --- a/src/libfourcc/lib.rs +++ b/src/libfourcc/lib.rs @@ -76,10 +76,11 @@ pub fn expand_syntax_ext(cx: &mut ExtCtxt, sp: Span, tts: &[ast::TokenTree]) -> let (expr, endian) = parse_tts(cx, tts); let little = match endian { - None => target_endian_little(cx, sp), + None => false, Some(Ident{ident, span}) => match token::get_ident(ident.name).get() { "little" => true, "big" => false, + "target" => target_endian_little(cx, sp), _ => { cx.span_err(span, "invalid endian directive in fourcc!"); target_endian_little(cx, sp) diff --git a/src/test/run-pass-fulldeps/syntax-extension-fourcc.rs b/src/test/run-pass-fulldeps/syntax-extension-fourcc.rs index 0d46c28431d..be5e24d09d5 100644 --- a/src/test/run-pass-fulldeps/syntax-extension-fourcc.rs +++ b/src/test/run-pass-fulldeps/syntax-extension-fourcc.rs @@ -19,22 +19,25 @@ extern mod fourcc; static static_val: u32 = fourcc!("foo "); -static static_val_le: u32 = fourcc!("foo ", little); static static_val_be: u32 = fourcc!("foo ", big); +static static_val_le: u32 = fourcc!("foo ", little); +static static_val_target: u32 = fourcc!("foo ", target); fn main() { - let val = fourcc!("foo "); - let exp = if cfg!(target_endian = "big") { 0x666f6f20u32 } else { 0x206f6f66u32 }; - assert_eq!(val, exp); - let val = fourcc!("foo ", big); assert_eq!(val, 0x666f6f20u32); + assert_eq!(val, fourcc!("foo ")); let val = fourcc!("foo ", little); assert_eq!(val, 0x206f6f66u32); + let val = fourcc!("foo ", target); let exp = if cfg!(target_endian = "big") { 0x666f6f20u32 } else { 0x206f6f66u32 }; - assert_eq!(static_val, exp); - assert_eq!(static_val_le, 0x206f6f66u32); + assert_eq!(val, exp); + assert_eq!(static_val_be, 0x666f6f20u32); + assert_eq!(static_val, static_val_be); + assert_eq!(static_val_le, 0x206f6f66u32); + let exp = if cfg!(target_endian = "big") { 0x666f6f20u32 } else { 0x206f6f66u32 }; + assert_eq!(static_val_target, exp); }