X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FhsSyn%2FHsLit.lhs;fp=ghc%2Fcompiler%2FhsSyn%2FHsLit.lhs;h=0000000000000000000000000000000000000000;hb=0065d5ab628975892cea1ec7303f968c3338cbe1;hp=c6d7e5dbeaf1b96222e2907cc1a598c36a219772;hpb=28a464a75e14cece5db40f2765a29348273ff2d2;p=ghc-hetmet.git diff --git a/ghc/compiler/hsSyn/HsLit.lhs b/ghc/compiler/hsSyn/HsLit.lhs deleted file mode 100644 index c6d7e5d..0000000 --- a/ghc/compiler/hsSyn/HsLit.lhs +++ /dev/null @@ -1,96 +0,0 @@ -% -% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 -% -\section[HsLit]{Abstract syntax: source-language literals} - -\begin{code} -module HsLit where - -#include "HsVersions.h" - -import {-# SOURCE #-} HsExpr( SyntaxExpr ) -import Type ( Type ) -import Outputable -import FastString -import Ratio ( Rational ) -\end{code} - - -%************************************************************************ -%* * -\subsection[HsLit]{Literals} -%* * -%************************************************************************ - - -\begin{code} -data HsLit - = HsChar Char -- Character - | HsCharPrim Char -- Unboxed character - | HsString FastString -- String - | HsStringPrim FastString -- Packed string - | HsInt Integer -- Genuinely an Int; arises from TcGenDeriv, - -- and from TRANSLATION - | HsIntPrim Integer -- Unboxed Int - | HsInteger Integer Type -- Genuinely an integer; arises only from TRANSLATION - -- (overloaded literals are done with HsOverLit) - | HsRat Rational Type -- Genuinely a rational; arises only from TRANSLATION - -- (overloaded literals are done with HsOverLit) - | HsFloatPrim Rational -- Unboxed Float - | HsDoublePrim Rational -- Unboxed Double - -instance Eq HsLit where - (HsChar x1) == (HsChar x2) = x1==x2 - (HsCharPrim x1) == (HsCharPrim x2) = x1==x2 - (HsString x1) == (HsString x2) = x1==x2 - (HsStringPrim x1) == (HsStringPrim x2) = x1==x2 - (HsInt x1) == (HsInt x2) = x1==x2 - (HsIntPrim x1) == (HsIntPrim x2) = x1==x2 - (HsInteger x1 _) == (HsInteger x2 _) = x1==x2 - (HsRat x1 _) == (HsRat x2 _) = x1==x2 - (HsFloatPrim x1) == (HsFloatPrim x2) = x1==x2 - (HsDoublePrim x1) == (HsDoublePrim x2) = x1==x2 - lit1 == lit2 = False - -data HsOverLit id -- An overloaded literal - = HsIntegral Integer (SyntaxExpr id) -- Integer-looking literals; - | HsFractional Rational (SyntaxExpr id) -- Frac-looking literals - -- Before type checking, the SyntaxExpr is 'fromInteger' or 'fromRational' - -- After type checking, it is (fromInteger 3) or lit_78; that is, - -- the expression that should replace the literal. - -- This is unusual, because we're replacing 'fromInteger' with a call - -- to fromInteger. Reason: it allows commoning up of the fromInteger - -- calls, which wouldn't be possible if the desguarar made the application - --- Comparison operations are needed when grouping literals --- for compiling pattern-matching (module MatchLit) -instance Eq (HsOverLit id) where - (HsIntegral i1 _) == (HsIntegral i2 _) = i1 == i2 - (HsFractional f1 _) == (HsFractional f2 _) = f1 == f2 - l1 == l2 = False - -instance Ord (HsOverLit id) where - compare (HsIntegral i1 _) (HsIntegral i2 _) = i1 `compare` i2 - compare (HsIntegral _ _) (HsFractional _ _) = LT - compare (HsFractional f1 _) (HsFractional f2 _) = f1 `compare` f2 - compare (HsFractional f1 _) (HsIntegral _ _) = GT -\end{code} - -\begin{code} -instance Outputable HsLit where - -- Use "show" because it puts in appropriate escapes - ppr (HsChar c) = pprHsChar c - ppr (HsCharPrim c) = pprHsChar c <> char '#' - ppr (HsString s) = pprHsString s - ppr (HsStringPrim s) = pprHsString s <> char '#' - ppr (HsInt i) = integer i - ppr (HsInteger i _) = integer i - ppr (HsRat f _) = rational f - ppr (HsFloatPrim f) = rational f <> char '#' - ppr (HsDoublePrim d) = rational d <> text "##" - ppr (HsIntPrim i) = integer i <> char '#' - -instance Outputable (HsOverLit id) where - ppr (HsIntegral i _) = integer i - ppr (HsFractional f _) = rational f -\end{code}