about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorNick Cameron <ncameron@mozilla.com>2014-04-08 21:00:20 +1200
committerNick Cameron <ncameron@mozilla.com>2014-04-23 12:30:58 +1200
commit0540a59382769dcb1981f0542cd227796fc8ecf1 (patch)
tree4c59f180ab564f532bfa25cfececaf7ff5f38dc5 /src/libsyntax
parentf78add10cde772b9d743a84a604dc584b63a06fc (diff)
downloadrust-0540a59382769dcb1981f0542cd227796fc8ecf1.tar.gz
rust-0540a59382769dcb1981f0542cd227796fc8ecf1.zip
Check for unsized types in enums.
And allow the last field of a struct or variant to be unsized.
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ast_map.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libsyntax/ast_map.rs b/src/libsyntax/ast_map.rs
index d0e3ff4ae54..7a167237d3e 100644
--- a/src/libsyntax/ast_map.rs
+++ b/src/libsyntax/ast_map.rs
@@ -283,6 +283,13 @@ impl Map {
         }
     }
 
+    pub fn expect_variant(&self, id: NodeId) -> P<Variant> {
+        match self.find(id) {
+            Some(NodeVariant(variant)) => variant,
+            _ => fail!(format!("expected variant, found {}", self.node_to_str(id))),
+        }
+    }
+
     pub fn expect_foreign_item(&self, id: NodeId) -> @ForeignItem {
         match self.find(id) {
             Some(NodeForeignItem(item)) => item,