diff options
| author | Matt Peterson <ricochet1k@gmail.com> | 2017-12-20 15:37:22 -0500 |
|---|---|---|
| committer | Matt Peterson <ricochet1k@gmail.com> | 2017-12-28 11:32:05 -0500 |
| commit | 0e53360af69bf9e71ef39e570655d73fc44339b9 (patch) | |
| tree | 6c33732eb073e822b6855ec939cbb2f9ff738a49 | |
| parent | e12b87096a9c1856db9874c3af0bc64423b5477a (diff) | |
| download | rust-0e53360af69bf9e71ef39e570655d73fc44339b9.tar.gz rust-0e53360af69bf9e71ef39e570655d73fc44339b9.zip | |
Fix build and add a macro lifetime labels test
| -rw-r--r-- | src/libsyntax/ext/quote.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/macro-lifetime-used-with-labels.rs | 43 |
2 files changed, 44 insertions, 2 deletions
diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index a0d72b786bf..59996d1e4a7 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -192,8 +192,7 @@ pub mod rt { impl ToTokens for ast::Lifetime { fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> { - let lifetime_ident = ast::Ident::with_empty_ctxt(self.name); - vec![TokenTree::Token(DUMMY_SP, token::Lifetime(lifetime_ident))] + vec![TokenTree::Token(DUMMY_SP, token::Lifetime(self.ident))] } } diff --git a/src/test/run-pass/macro-lifetime-used-with-labels.rs b/src/test/run-pass/macro-lifetime-used-with-labels.rs new file mode 100644 index 00000000000..d003d7dcfb6 --- /dev/null +++ b/src/test/run-pass/macro-lifetime-used-with-labels.rs @@ -0,0 +1,43 @@ +// Copyright 2012 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![allow(unreachable_code)] + +macro_rules! x { + ($a:lifetime) => { + $a: loop { + break $a; + panic!("failed"); + } + } +} +macro_rules! br { + ($a:lifetime) => { + break $a; + } +} +macro_rules! br2 { + ($b:lifetime) => { + 'b: loop { + break $b; // this $b should refer to the outer loop. + } + } +} +fn main() { + x!('a); + 'c: loop { + br!('c); + panic!("failed"); + } + 'b: loop { + br2!('b); + panic!("failed"); + } +} |
