about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-08-11 20:46:34 +0200
committerMazdak Farrokhzad <twingoow@gmail.com>2019-08-11 20:46:34 +0200
commitbcfcbfc923aa821332d8ae8ce977f311764768b1 (patch)
tree6bad9725997dd80449af3321fb28bb73ad1255cd /src/libsyntax/parse/parser
parent385d07f359cd4d4237cac6ae030d07792750a506 (diff)
downloadrust-bcfcbfc923aa821332d8ae8ce977f311764768b1.tar.gz
rust-bcfcbfc923aa821332d8ae8ce977f311764768b1.zip
parser: {check,expect}_lifetime into ty.rs
Diffstat (limited to 'src/libsyntax/parse/parser')
-rw-r--r--src/libsyntax/parse/parser/ty.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser/ty.rs b/src/libsyntax/parse/parser/ty.rs
index e01ce9a48c0..1eb3d441e69 100644
--- a/src/libsyntax/parse/parser/ty.rs
+++ b/src/libsyntax/parse/parser/ty.rs
@@ -1,8 +1,8 @@
-use super::{Parser, PResult, PathStyle, PrevTokenKind};
+use super::{Parser, PResult, PathStyle, PrevTokenKind, TokenType};
 
 use crate::{maybe_whole, maybe_recover_from_interpolated_ty_qpath};
 use crate::ptr::P;
-use crate::ast::{self, Ty, TyKind, MutTy, BareFnTy, FunctionRetTy, GenericParam};
+use crate::ast::{self, Ty, TyKind, MutTy, BareFnTy, FunctionRetTy, GenericParam, Lifetime, Ident};
 use crate::ast::{TraitBoundModifier, TraitObjectSyntax, GenericBound, GenericBounds, PolyTraitRef};
 use crate::ast::{Mutability, AnonConst, FnDecl, Mac_};
 use crate::parse::token::{self, Token};
@@ -442,4 +442,20 @@ impl<'a> Parser<'a> {
             Ok(Vec::new())
         }
     }
+
+    crate fn check_lifetime(&mut self) -> bool {
+        self.expected_tokens.push(TokenType::Lifetime);
+        self.token.is_lifetime()
+    }
+
+    /// Parses a single lifetime `'a` or panics.
+    crate fn expect_lifetime(&mut self) -> Lifetime {
+        if let Some(ident) = self.token.lifetime() {
+            let span = self.token.span;
+            self.bump();
+            Lifetime { ident: Ident::new(ident.name, span), id: ast::DUMMY_NODE_ID }
+        } else {
+            self.span_bug(self.token.span, "not a lifetime")
+        }
+    }
 }