about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorHunter Praska <hunter@wiggin-labs.com>2017-08-16 18:46:48 -0500
committerHunter Praska <hunter@wiggin-labs.com>2017-08-16 18:46:48 -0500
commitff047a8a25738badbb88b97edf0f8108b4bc356b (patch)
tree63792345de00452d407ca805c6af0859989c3479 /src
parent4acfef8f6319a1ae724ba174b4d87e0988d7e47d (diff)
downloadrust-ff047a8a25738badbb88b97edf0f8108b4bc356b.tar.gz
rust-ff047a8a25738badbb88b97edf0f8108b4bc356b.zip
Use direct references to CompilerDesugaringKind
Diffstat (limited to 'src')
-rw-r--r--src/librustc/hir/lowering.rs19
-rw-r--r--src/libsyntax_pos/hygiene.rs12
2 files changed, 12 insertions, 19 deletions
diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs
index d8ea6f123ab..1fc780952d2 100644
--- a/src/librustc/hir/lowering.rs
+++ b/src/librustc/hir/lowering.rs
@@ -59,7 +59,7 @@ use syntax::ast::*;
 use syntax::errors;
 use syntax::ext::hygiene::{Mark, SyntaxContext};
 use syntax::ptr::P;
-use syntax::codemap::{self, respan, Spanned};
+use syntax::codemap::{self, respan, Spanned, CompilerDesugaringKind};
 use syntax::std_inject;
 use syntax::symbol::{Symbol, keywords};
 use syntax::util::small_vector::SmallVector;
@@ -396,8 +396,9 @@ impl<'a> LoweringContext<'a> {
         Symbol::gensym(s)
     }
 
-    fn allow_internal_unstable(&self, reason: &'static str, mut span: Span) -> Span {
-        let reason = codemap::CompilerDesugaringKind::from(reason);
+    fn allow_internal_unstable(&self, reason: CompilerDesugaringKind, mut span: Span)
+        -> Span
+    {
         let mark = Mark::fresh(Mark::root());
         mark.set_expn_info(codemap::ExpnInfo {
             call_site: span,
@@ -1763,7 +1764,8 @@ impl<'a> LoweringContext<'a> {
                 let move_val_init = ["intrinsics", "move_val_init"];
                 let inplace_finalize = ["ops", "InPlace", "finalize"];
 
-                let unstable_span = self.allow_internal_unstable("<-", e.span);
+                let unstable_span =
+                    self.allow_internal_unstable(CompilerDesugaringKind::BackArrow, e.span);
                 let make_call = |this: &mut LoweringContext, p, args| {
                     let path = P(this.expr_std_path(unstable_span, p, ThinVec::new()));
                     P(this.expr_call(e.span, path, args))
@@ -1976,12 +1978,14 @@ impl<'a> LoweringContext<'a> {
                     e1.iter().map(|e| ("start", e)).chain(e2.iter().map(|e| ("end", e)))
                     .map(|(s, e)| {
                         let expr = P(self.lower_expr(&e));
-                        let unstable_span = self.allow_internal_unstable("...", e.span);
+                        let unstable_span =
+                            self.allow_internal_unstable(CompilerDesugaringKind::DotFill, e.span);
                         self.field(Symbol::intern(s), expr, unstable_span)
                     }).collect::<P<[hir::Field]>>();
 
                 let is_unit = fields.is_empty();
-                let unstable_span = self.allow_internal_unstable("...", e.span);
+                let unstable_span =
+                    self.allow_internal_unstable(CompilerDesugaringKind::DotFill, e.span);
                 let struct_path =
                     iter::once("ops").chain(iter::once(path))
                     .collect::<Vec<_>>();
@@ -2317,7 +2321,8 @@ impl<'a> LoweringContext<'a> {
                 //                 return Try::from_error(From::from(err)),
                 // }
 
-                let unstable_span = self.allow_internal_unstable("?", e.span);
+                let unstable_span =
+                    self.allow_internal_unstable(CompilerDesugaringKind::QuestionMark, e.span);
 
                 // Try::into_result(<expr>)
                 let discr = {
diff --git a/src/libsyntax_pos/hygiene.rs b/src/libsyntax_pos/hygiene.rs
index 6cef7775c34..4ebde2a01c2 100644
--- a/src/libsyntax_pos/hygiene.rs
+++ b/src/libsyntax_pos/hygiene.rs
@@ -360,18 +360,6 @@ impl CompilerDesugaringKind {
     }
 }
 
-impl<'a> From<&'a str> for CompilerDesugaringKind {
-    fn from(s: &'a str) -> Self {
-        use CompilerDesugaringKind::*;
-        match s {
-            "<-" => BackArrow,
-            "..." => DotFill,
-            "?" => QuestionMark,
-            _ => panic!("Invalid compiler desugaring"),
-        }
-    }
-}
-
 impl Encodable for SyntaxContext {
     fn encode<E: Encoder>(&self, _: &mut E) -> Result<(), E::Error> {
         Ok(()) // FIXME(jseyfried) intercrate hygiene