From 5a2538d174fd36a8ed7f4fa344b9583fc48bd977 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 11 Feb 2020 13:12:13 +0000 Subject: Remove the Embed variant from ExprKind --- dhall/src/syntax/text/parser.rs | 10 +++------- dhall/src/syntax/text/printer.rs | 17 ++++++++--------- 2 files changed, 11 insertions(+), 16 deletions(-) (limited to 'dhall/src/syntax/text') diff --git a/dhall/src/syntax/text/parser.rs b/dhall/src/syntax/text/parser.rs index 8d571c0..0ff1363 100644 --- a/dhall/src/syntax/text/parser.rs +++ b/dhall/src/syntax/text/parser.rs @@ -5,23 +5,19 @@ use std::rc::Rc; use pest_consume::{match_nodes, Parser}; -use crate::syntax; use crate::syntax::map::{DupTreeMap, DupTreeSet}; use crate::syntax::ExprKind::*; use crate::syntax::{ - Double, FilePath, FilePrefix, Hash, ImportLocation, ImportMode, Integer, - InterpolatedText, InterpolatedTextContents, Label, NaiveDouble, Natural, - Scheme, Span, URL, V, + Double, Expr, FilePath, FilePrefix, Hash, ImportLocation, ImportMode, + Integer, InterpolatedText, InterpolatedTextContents, Label, NaiveDouble, + Natural, Scheme, Span, UnspannedExpr, URL, V, }; -use crate::Normalized; // This file consumes the parse tree generated by pest and turns it into // our own AST. All those custom macros should eventually moved into // their own crate because they are quite general and useful. For now they // are here and hopefully you can figure out how they work. -type Expr = syntax::Expr; -type UnspannedExpr = syntax::UnspannedExpr; type ParsedText = InterpolatedText; type ParsedTextContents = InterpolatedTextContents; type ParseInput<'input> = pest_consume::Node<'input, Rule, Rc>; diff --git a/dhall/src/syntax/text/printer.rs b/dhall/src/syntax/text/printer.rs index 06dd70f..d1c9588 100644 --- a/dhall/src/syntax/text/printer.rs +++ b/dhall/src/syntax/text/printer.rs @@ -19,17 +19,17 @@ enum PrintPhase { // Wraps an Expr with a phase, so that phase selection can be done separate from the actual // printing. #[derive(Clone)] -struct PhasedExpr<'a, E>(&'a Expr, PrintPhase); +struct PhasedExpr<'a>(&'a Expr, PrintPhase); -impl<'a, E: Display + Clone> PhasedExpr<'a, E> { - fn phase(self, phase: PrintPhase) -> PhasedExpr<'a, E> { +impl<'a> PhasedExpr<'a> { + fn phase(self, phase: PrintPhase) -> PhasedExpr<'a> { PhasedExpr(self.0, phase) } } -impl UnspannedExpr { +impl UnspannedExpr { // Annotate subexpressions with the appropriate phase, defaulting to Base - fn annotate_with_phases<'a>(&'a self) -> ExprKind, E> { + fn annotate_with_phases<'a>(&'a self) -> ExprKind> { use crate::syntax::ExprKind::*; use PrintPhase::*; let with_base = self.map_ref(|e| PhasedExpr(e, Base)); @@ -134,7 +134,7 @@ where } /// Generic instance that delegates to subexpressions -impl Display for ExprKind { +impl Display for ExprKind { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { use crate::syntax::ExprKind::*; match self { @@ -232,19 +232,18 @@ impl Display for ExprKind { write!(f, "{}::{}", a, b)?; } Import(a) => a.fmt(f)?, - Embed(a) => a.fmt(f)?, } Ok(()) } } -impl Display for Expr { +impl Display for Expr { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { self.as_ref().fmt_phase(f, PrintPhase::Base) } } -impl<'a, E: Display + Clone> Display for PhasedExpr<'a, E> { +impl<'a> Display for PhasedExpr<'a> { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { self.0.as_ref().fmt_phase(f, self.1) } -- cgit v1.2.3