about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-08-03 15:02:01 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-08-03 15:02:53 -0700
commitb65dd9d0908ba75ee4cf128058858aea87e4508a (patch)
tree794ee6f47d188314a2b0256fd954cbcf8219331c /src/libsyntax/parse/parser.rs
parenta805a1fb37443601819604954510cb312a724fe9 (diff)
downloadrust-b65dd9d0908ba75ee4cf128058858aea87e4508a.tar.gz
rust-b65dd9d0908ba75ee4cf128058858aea87e4508a.zip
rustc: Parse, serialize, and deserialize trait inheritance
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
-rw-r--r--src/libsyntax/parse/parser.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 417d973ee0d..5f2ea6f42f6 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -2278,8 +2278,18 @@ class parser {
         let ident = self.parse_ident();
         self.parse_region_param();
         let tps = self.parse_ty_params();
+        
+        // Parse traits, if necessary.
+        let traits;
+        if self.token == token::COLON {
+            self.bump();
+            traits = self.parse_trait_ref_list(token::LBRACE);
+        } else {
+            traits = ~[];
+        }
+
         let meths = self.parse_trait_methods();
-        (ident, item_trait(tps, meths), none)
+        (ident, item_trait(tps, traits, meths), none)
     }
 
     // Parses four variants (with the region/type params always optional):