-pmname (Just m) = panmname m
-
-panmname (pkgName, parents, name) = pname pkgName <> char ':'
- <> (sep (punctuate (char '.') (map pname parents)))
- <> char '.' <> pname name
+pmname (Just m) = panmname m <> char '.'
+
+panmname (M (pkgName, parents, name)) =
+ let parentStrs = map pname parents in
+ pname pkgName <> char ':' <>
+ -- This is to be sure to not print out:
+ -- main:.Main for when there's a single module name
+ -- with no parents.
+ (case parentStrs of
+ [] -> empty
+ _ -> hcat (punctuate hierModuleSeparator
+ (map pname parents))
+ <> hierModuleSeparator)
+ <> pname name
+
+-- note that this is not a '.' but a Z-encoded '.':
+-- GHCziIOBase.IO, not GHC.IOBase.IO.
+-- What a pain.
+hierModuleSeparator = text (zEncodeString ".")