getMainDeclBinder should return Nothing for a binding with no variables
[ghc-hetmet.git] / compiler / hsSyn / HsUtils.lhs
index da0e24c..b0978ec 100644 (file)
@@ -22,6 +22,7 @@ import HsExpr
 import HsPat
 import HsTypes 
 import HsLit
+import HsDecls
 
 import RdrName         ( RdrName, getRdrName, mkRdrUnqual )
 import Var             ( Id )
@@ -416,3 +417,24 @@ collect_pat (TuplePat pats _ _) acc = foldr collect_lpat acc pats
 collect_pat (ConPatIn c ps)     acc = foldr collect_lpat acc (hsConArgs ps)
 collect_pat other              acc = acc       -- Literals, vars, wildcard
 \end{code}
+
+%************************************************************************
+%*                                                                     *
+%*     Getting the main binder name of a top declaration
+%*                                                                     *
+%************************************************************************
+
+\begin{code}
+
+getMainDeclBinder :: HsDecl name -> Maybe name
+getMainDeclBinder (TyClD d) = Just (tcdName d)
+getMainDeclBinder (ValD d)
+   = case collectAcc d [] of
+        []       -> Nothing   -- see rn003
+        (name:_) -> Just (unLoc name)
+getMainDeclBinder (SigD d) = sigNameNoLoc d
+getMainDeclBinder (ForD (ForeignImport name _ _)) = Just (unLoc name)
+getMainDeclBinder (ForD (ForeignExport name _ _)) = Just (unLoc name)
+getMainDeclBinder _ = Nothing
+
+\end{code}