on master help sign in
Fix error in Java name mangling
b5e9afeDavid Raymond Christiansen
src/IRTS/Java/Mangling.hs+4−1
@@ -88,7 +88,8 @@ mangleWithPrefix prefix (UN name) =
88 | x == ' ' = "_Space" ++ cleanNonLetter xs
88 | x == ' ' = "_Space" ++ cleanNonLetter xs
89 | x == ',' = "_Comma" ++ cleanNonLetter xs
89 | x == ',' = "_Comma" ++ cleanNonLetter xs
90 | x == '_' = "__" ++ cleanNonLetter xs
90 | x == '_' = "__" ++ cleanNonLetter xs
91+ -- 10 digits is the most possible to represent 2^32 (ie all of unicode)
91− | not (isAlphaNum x) = "_" ++ (show $ ord x) ++ xs
92+ | not (isAlphaNum x) = "_" ++ (padToWith 10 '0' . show $ ord x) ++ cleanNonLetter xs
92 | otherwise = x:cleanNonLetter xs
93 | otherwise = x:cleanNonLetter xs
93 cleanNonLetter [] = []
94 cleanNonLetter [] = []
94 cleanWs capitalize (x:xs)
95 cleanWs capitalize (x:xs)
@@ -96,6 +97,8 @@ mangleWithPrefix prefix (UN name) =
96 | capitalize = (toUpper x) : (cleanWs False xs)
97 | capitalize = (toUpper x) : (cleanWs False xs)
97 | otherwise = x : (cleanWs False xs)
98 | otherwise = x : (cleanWs False xs)
98 cleanWs _ [] = []
99 cleanWs _ [] = []
100+ padToWith :: Int -> a -> [a] -> [a]
101+ padToWith n p xs = replicate (length xs - n) p ++ xs
99mangleWithPrefix prefix s@(SN _) = mangleWithPrefix prefix (sUN (showCG s))
102mangleWithPrefix prefix s@(SN _) = mangleWithPrefix prefix (sUN (showCG s))
100
103
101mangle :: (Applicative m, MonadError String m) => Name -> m Ident
104mangle :: (Applicative m, MonadError String m) => Name -> m Ident