Commit b0306f6e authored by simonmar's avatar simonmar
Browse files

[project @ 2004-09-10 09:23:19 by simonmar]

Fix bug in decode_tuple (fixes tc177(prof))
parent 99b614eb
...@@ -753,6 +753,19 @@ decode_num_esc d rest ...@@ -753,6 +753,19 @@ decode_num_esc d rest
go n (c : rest) | isDigit c = go (10*n + digitToInt c) rest go n (c : rest) | isDigit c = go (10*n + digitToInt c) rest
go n ('U' : rest) = chr n : decode rest go n ('U' : rest) = chr n : decode rest
go n other = pprPanic "decode_num_esc" (ppr n <+> text other) go n other = pprPanic "decode_num_esc" (ppr n <+> text other)
decode_tuple :: Char -> EncodedString -> UserString
decode_tuple d rest
= go (digitToInt d) rest
where
-- NB. recurse back to decode after decoding the tuple, because
-- the tuple might be embedded in a longer name.
go n (c : rest) | isDigit c = go (10*n + digitToInt c) rest
go 0 ('T':rest) = "()" ++ decode rest
go n ('T':rest) = '(' : replicate (n-1) ',' ++ ")" ++ decode rest
go 1 ('H':rest) = "(# #)" ++ decode rest
go n ('H':rest) = '(' : '#' : replicate (n-1) ',' ++ "#)" ++ decode rest
go n other = pprPanic "decode_tuple" (ppr n <+> text other)
\end{code} \end{code}
...@@ -793,17 +806,6 @@ count_commas n cs = (n,cs) ...@@ -793,17 +806,6 @@ count_commas n cs = (n,cs)
\end{code} \end{code}
\begin{code} \begin{code}
decode_tuple :: Char -> EncodedString -> UserString
decode_tuple d rest
= go (digitToInt d) rest
where
go n (c : rest) | isDigit c = go (10*n + digitToInt c) rest
go 0 ['T'] = "()"
go n ['T'] = '(' : replicate (n-1) ',' ++ ")"
go 1 ['H'] = "(# #)"
go n ['H'] = '(' : '#' : replicate (n-1) ',' ++ "#)"
go n other = pprPanic "decode_tuple" (ppr n <+> text other)
mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccName mkTupleOcc :: NameSpace -> Boxity -> Arity -> OccName
mkTupleOcc ns bx ar mkTupleOcc ns bx ar
= OccName ns (mkFastString ('Z' : (show ar ++ bx_char))) = OccName ns (mkFastString ('Z' : (show ar ++ bx_char)))
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment