]> git.lizzy.rs Git - rust.git/blobdiff - src/librustc_save_analysis/span_utils.rs
signature info for other items (mods, fns, methods, etc.)
[rust.git] / src / librustc_save_analysis / span_utils.rs
index d09f73755009a8cbbe82eb725e7169a3dfd66697..f749396e7caaddaaad472697314985e8a0aeb524 100644 (file)
@@ -18,6 +18,9 @@
 
 use syntax::ast;
 use syntax::parse::lexer::{self, Reader, StringReader};
+use syntax::parse::token::{self, Token};
+use syntax::parse::parser::Parser;
+use syntax::symbol::keywords;
 use syntax::tokenstream::TokenTree;
 use syntax_pos::*;
 
@@ -317,7 +320,7 @@ pub fn spans_with_brackets(&self, span: Span, nesting: isize, limit: isize) -> V
     /// function returns the program text from the start of the span until the
     /// end of the 'signature' part, that is up to, but not including an opening
     /// brace or semicolon.
-    pub fn signature_string_for_span(&self, span: Span) -> Option<String> {
+    pub fn signature_string_for_span(&self, span: Span) -> String {
         let mut toks = self.span_to_tts(span).into_iter();
         let mut prev = toks.next().unwrap();
         let first_span = prev.get_span();
@@ -325,7 +328,7 @@ pub fn signature_string_for_span(&self, span: Span) -> Option<String> {
         for tok in toks {
             if let TokenTree::Token(_, ref tok) = prev {
                 angle_count += match *tok {
-                    token::Eof => { return None; }
+                    token::Eof => { break; }
                     token::Lt => 1,
                     token::Gt => -1,
                     token::BinOp(token::Shl) => 2,
@@ -338,15 +341,15 @@ pub fn signature_string_for_span(&self, span: Span) -> Option<String> {
                 continue;
             }
             if let TokenTree::Token(_, token::Semi) = tok {
-                return Some(self.snippet(mk_sp(first_span.lo, prev.get_span().hi)));
+                return self.snippet(mk_sp(first_span.lo, prev.get_span().hi));
             } else if let TokenTree::Delimited(_, ref d) = tok {
                 if d.delim == token::Brace {
-                    return Some(self.snippet(mk_sp(first_span.lo, prev.get_span().hi)));
+                    return self.snippet(mk_sp(first_span.lo, prev.get_span().hi));
                 }
             }
             prev = tok;
         }
-        None
+        self.snippet(span)
     }
 
     pub fn sub_span_before_token(&self, span: Span, tok: Token) -> Option<Span> {