@@ -313,11 +313,23 @@ translateNamespace :: Name -> String
313translateNamespace (UN _) = idrNamespace
313translateNamespace (UN _) = idrNamespace
314translateNamespace (NS _ ns) = idrNamespace ++ concatMap translateIdentifier ns
314translateNamespace (NS _ ns) = idrNamespace ++ concatMap translateIdentifier ns
315translateNamespace (MN _ _) = idrNamespace
315translateNamespace (MN _ _) = idrNamespace
316+translateNamespace (SN name) = idrNamespace ++ translateSpecialName name
317+translateNamespace NErased = idrNamespace
317translateName :: Name -> String
319translateName :: Name -> String
318translateName (UN name) = translateIdentifier name
320translateName (UN name) = translateIdentifier name
319translateName (NS name _) = translateName name
321translateName (NS name _) = translateName name
320translateName (MN i name) = translateIdentifier name ++ show i
322translateName (MN i name) = translateIdentifier name ++ show i
323+translateName (SN name) = translateSpecialName name
324+translateName NErased = ""
326+translateSpecialName :: SpecialName -> String
327+translateSpecialName name
328+ | WhereN i m n <- name = translateName m ++ translateName n ++ show i
329+ | InstanceN n s <- name = translateName n ++ concatMap translateIdentifier s
330+ | ParentN n s <- name = translateName n ++ translateIdentifier s
331+ | MethodN n <- name = translateName n
332+ | CaseN n <- name = translateName n
322translateConstant :: Const -> JS
334translateConstant :: Const -> JS
323translateConstant (I i) = JSNum (JSInt i)
335translateConstant (I i) = JSNum (JSInt i)