about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-01-15 14:11:50 -0800
committerAlex Crichton <alex@alexcrichton.com>2015-01-15 14:11:50 -0800
commitb83fee0aeec7f946d88923ea0b200378c47eccaa (patch)
tree2e00dfe026ae1caf80f7a0dcdef91c5138f23d3f
parent489294d517e7c00cc4a45fdc47b7ccef54330da6 (diff)
parent6cfbcca41e259ddf93fb86a54e8d5f5bbcd3e6f1 (diff)
downloadrust-b83fee0aeec7f946d88923ea0b200378c47eccaa.tar.gz
rust-b83fee0aeec7f946d88923ea0b200378c47eccaa.zip
rollup merge of #21120: fhahn/issue-model-lexer-questionmark
This PR updates `grammar/verify.rs` to work with master and handles the question mark of `?Sized` correctly (#15879).
-rw-r--r--src/grammar/RustLexer.g45
-rw-r--r--src/grammar/verify.rs19
2 files changed, 15 insertions, 9 deletions
diff --git a/src/grammar/RustLexer.g4 b/src/grammar/RustLexer.g4
index 88de5db41fe..7d071d5e724 100644
--- a/src/grammar/RustLexer.g4
+++ b/src/grammar/RustLexer.g4
@@ -194,8 +194,13 @@ LIT_STR_RAW
   : 'r' LIT_STR_RAW_INNER SUFFIX?
   ;
 
+
+QUESTION : '?';
+
 IDENT : XID_start XID_continue* ;
 
+fragment QUESTION_IDENTIFIER : QUESTION? IDENT;
+
 LIFETIME : '\'' IDENT ;
 
 WHITESPACE : [ \r\n\t]+ ;
diff --git a/src/grammar/verify.rs b/src/grammar/verify.rs
index 9194c7a4766..e9409a61061 100644
--- a/src/grammar/verify.rs
+++ b/src/grammar/verify.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(globs, plugin)]
+#![feature(plugin)]
 
 extern crate syntax;
 extern crate rustc;
@@ -107,13 +107,14 @@ fn parse_token_list(file: &str) -> HashMap<String, token::Token> {
             "LE"                => token::Le,
             "LIT_BINARY"        => token::Literal(token::Binary(Name(0)), None),
             "LIT_BINARY_RAW"    => token::Literal(token::BinaryRaw(Name(0), 0), None),
+            "QUESTION"          => token::Question,
             _                   => continue,
         };
 
         res.insert(num.to_string(), tok);
     }
 
-    debug!("Token map: {}", res);
+    debug!("Token map: {:?}", res);
     res
 }
 
@@ -161,7 +162,7 @@ fn fixchar(mut lit: &str) -> ast::Name {
     parse::token::intern(lit.slice(1, lit.len() - 1))
 }
 
-fn count(lit: &str) -> uint {
+fn count(lit: &str) -> usize {
     lit.chars().take_while(|c| *c == '#').count()
 }
 
@@ -176,12 +177,12 @@ fn parse_antlr_token(s: &str, tokens: &HashMap<String, token::Token>) -> TokenAn
     let toknum = m.name("toknum").unwrap_or("");
     let content = m.name("content").unwrap_or("");
 
-    let proto_tok = tokens.get(toknum).expect(format!("didn't find token {} in the map",
+    let proto_tok = tokens.get(toknum).expect(format!("didn't find token {:?} in the map",
                                                               toknum).as_slice());
 
     let nm = parse::token::intern(content);
 
-    debug!("What we got: content (`{}`), proto: {}", content, proto_tok);
+    debug!("What we got: content (`{}`), proto: {:?}", content, proto_tok);
 
     let real_tok = match *proto_tok {
         token::BinOp(..)           => token::BinOp(str_to_binop(content)),
@@ -265,7 +266,7 @@ fn main() {
             continue
         }
 
-        assert!(rustc_tok.sp == antlr_tok.sp, "{} and {} have different spans", rustc_tok,
+        assert!(rustc_tok.sp == antlr_tok.sp, "{:?} and {:?} have different spans", rustc_tok,
                 antlr_tok);
 
         macro_rules! matches {
@@ -276,12 +277,12 @@ fn main() {
                             if !tok_cmp(&rustc_tok.tok, &antlr_tok.tok) {
                                 // FIXME #15677: needs more robust escaping in
                                 // antlr
-                                warn!("Different names for {} and {}", rustc_tok, antlr_tok);
+                                warn!("Different names for {:?} and {:?}", rustc_tok, antlr_tok);
                             }
                         }
-                        _ => panic!("{} is not {}", antlr_tok, rustc_tok)
+                        _ => panic!("{:?} is not {:?}", antlr_tok, rustc_tok)
                     },)*
-                    ref c => assert!(c == &antlr_tok.tok, "{} is not {}", rustc_tok, antlr_tok)
+                    ref c => assert!(c == &antlr_tok.tok, "{:?} is not {:?}", rustc_tok, antlr_tok)
                 }
             )
         }