@@ -313,11 +313,23 @@ translateNamespace :: Name -> String
313313translateNamespace (UN _) = idrNamespace
314314translateNamespace (NS _ ns) = idrNamespace ++ concatMap translateIdentifier ns
315315translateNamespace (MN _ _) = idrNamespace
316+translateNamespace (SN name) = idrNamespace ++ translateSpecialName name
317+translateNamespace NErased = idrNamespace
316318
317319translateName :: Name -> String
318320translateName (UN name) = translateIdentifier name
319321translateName (NS name _) = translateName name
320322translateName (MN i name) = translateIdentifier name ++ show i
323+translateName (SN name) = translateSpecialName name
324+translateName NErased = ""
325+
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
321333
322334translateConstant :: Const -> JS
323335translateConstant (I i) = JSNum (JSInt i)