about summary refs log tree commit diff
path: root/src/libsyntax/print
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2014-08-05 22:59:24 -0400
committerNiko Matsakis <niko@alum.mit.edu>2014-08-07 07:23:59 -0400
commitfcab98038c3b466d9ecd00b0f27e9c748e7acbde (patch)
tree345deba110cec778935c4d2fa1b7f9150c90f7c3 /src/libsyntax/print
parent1a53c001170f8084ce850498d5e8f22b5e7da72c (diff)
downloadrust-fcab98038c3b466d9ecd00b0f27e9c748e7acbde.tar.gz
rust-fcab98038c3b466d9ecd00b0f27e9c748e7acbde.zip
Temporary bootstrapping hack: introduce syntax for r egion bounds like `'b:'a`,
meaning `'b outlives 'a`. Syntax currently does nothing but is needed for full
fix to #5763. To use this syntax, the issue_5763_bootstrap feature guard is
required.
Diffstat (limited to 'src/libsyntax/print')
-rw-r--r--src/libsyntax/print/pprust.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index ab0269f807a..d60e4cb3b54 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -2082,10 +2082,26 @@ impl<'a> State<'a> {
     }
 
     pub fn print_lifetime(&mut self,
-                          lifetime: &ast::Lifetime) -> IoResult<()> {
+                          lifetime: &ast::Lifetime)
+                          -> IoResult<()>
+    {
         self.print_name(lifetime.name)
     }
 
+    pub fn print_lifetime_def(&mut self,
+                              lifetime: &ast::LifetimeDef)
+                              -> IoResult<()>
+    {
+        try!(self.print_lifetime(&lifetime.lifetime));
+        let mut sep = ":";
+        for v in lifetime.bounds.iter() {
+            try!(word(&mut self.s, sep));
+            try!(self.print_lifetime(v));
+            sep = "+";
+        }
+        Ok(())
+    }
+
     pub fn print_generics(&mut self,
                           generics: &ast::Generics) -> IoResult<()> {
         let total = generics.lifetimes.len() + generics.ty_params.len();
@@ -2102,7 +2118,7 @@ impl<'a> State<'a> {
                 |s, &idx| {
                     if idx < generics.lifetimes.len() {
                         let lifetime = generics.lifetimes.get(idx);
-                        s.print_lifetime(lifetime)
+                        s.print_lifetime_def(lifetime)
                     } else {
                         let idx = idx - generics.lifetimes.len();
                         let param = generics.ty_params.get(idx);