on master help sign in
Merge pull request #813 from david-christiansen/java-name-mangling

Fix error in Java name mangling

commit3cb1f217cb2417feb0b050910cebe47a754724c4 authorEdwin Brady <edwin.brady@gmail.com> dateThu 30 Jan 2014, 03:29 (13 years ago) parent961f9b4b5e9afe
1 file changed+4−1
src/IRTS/Java/Mangling.hs+4−1
src/IRTS/Java/Mangling.hs+4−1
@@ -88,7 +88,8 @@ mangleWithPrefix prefix (UN name) =
8888 | x == ' ' = "_Space" ++ cleanNonLetter xs
8989 | x == ',' = "_Comma" ++ cleanNonLetter xs
9090 | x == '_' = "__" ++ cleanNonLetter xs
91− | not (isAlphaNum x) = "_" ++ (show $ ord x) ++ xs
91+ -- 10 digits is the most possible to represent 2^32 (ie all of unicode)
92+ | not (isAlphaNum x) = "_" ++ (padToWith 10 '0' . show $ ord x) ++ cleanNonLetter xs
9293 | otherwise = x:cleanNonLetter xs
9394 cleanNonLetter [] = []
9495 cleanWs capitalize (x:xs)
@@ -96,6 +97,8 @@ mangleWithPrefix prefix (UN name) =
9697 | capitalize = (toUpper x) : (cleanWs False xs)
9798 | otherwise = x : (cleanWs False xs)
9899 cleanWs _ [] = []
100+ padToWith :: Int -> a -> [a] -> [a]
101+ padToWith n p xs = replicate (length xs - n) p ++ xs
99102mangleWithPrefix prefix s@(SN _) = mangleWithPrefix prefix (sUN (showCG s))
100103
101104mangle :: (Applicative m, MonadError String m) => Name -> m Ident