Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
d113ae78
Commit
d113ae78
authored
Feb 13, 2002
by
simonmar
Browse files
[project @ 2002-02-13 15:07:59 by simonmar]
Don't translate out negative (boxed) literals too early.
parent
f405fb59
Changes
2
Hide whitespace changes
Inline
Side-by-side
ghc/compiler/parser/ParseUtil.lhs
View file @
d113ae78
...
...
@@ -198,6 +198,14 @@ checkPat e [] = case e of
in
returnP (SigPatIn e t')
-- translate out NegApps of literals in patterns.
-- NB. negative primitive literals are already handled by
-- RdrHsSyn.mkHsNegApp
NegApp (HsOverLit (HsIntegral i n)) _
-> returnP (NPatIn (HsIntegral (-i) n))
NegApp (HsOverLit (HsFractional f n)) _
-> returnP (NPatIn (HsFractional (-f) n))
OpApp (HsVar n) (HsVar plus) _ (HsOverLit lit@(HsIntegral _ _))
| plus == plus_RDR
-> returnP (mkNPlusKPat n lit)
...
...
ghc/compiler/parser/RdrHsSyn.lhs
View file @
d113ae78
...
...
@@ -237,21 +237,11 @@ mkHsNegApp :: RdrNameHsExpr -> RdrNameHsExpr
-- If the type checker sees (negate 3#) it will barf, because negate
-- can't take an unboxed arg. But that is exactly what it will see when
-- we write "-3#". So we have to do the negation right now!
--
-- We also do the same service for boxed literals, because this function
-- is also used for patterns (which, remember, are parsed as expressions)
-- and pattern don't have negation in them.
--
-- Finally, it's important to represent minBound as minBound, and not
-- as (negate (-minBound)), becuase the latter is out of range.
mkHsNegApp (HsLit (HsIntPrim i)) = HsLit (HsIntPrim (-i))
mkHsNegApp (HsLit (HsFloatPrim i)) = HsLit (HsFloatPrim (-i))
mkHsNegApp (HsLit (HsDoublePrim i)) = HsLit (HsDoublePrim (-i))
mkHsNegApp (HsOverLit (HsIntegral i n)) = HsOverLit (HsIntegral (-i) n)
mkHsNegApp (HsOverLit (HsFractional f n)) = HsOverLit (HsFractional (-f) n)
mkHsNegApp expr = NegApp expr negateName
mkHsNegApp expr = NegApp expr negateName
\end{code}
A useful function for building @OpApps@. The operator is always a
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment