Option "-ddump-rn-ast" dumps imports and exports too
authorAlan Zimmerman <alan.zimm@gmail.com>
Wed, 13 Sep 2017 12:02:42 +0000 (14:02 +0200)
committerAlan Zimmerman <alan.zimm@gmail.com>
Wed, 13 Sep 2017 17:52:36 +0000 (19:52 +0200)
Summary:
Previously the renamed source decls only were dumped, now the imports, exports
and doc_hdr are too.

Test Plan: ./validate

Reviewers: bgamari, austin

Reviewed By: bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #14197

Differential Revision: https://phabricator.haskell.org/D3949

compiler/main/HscMain.hs
compiler/typecheck/TcRnDriver.hs
compiler/typecheck/TcRnMonad.hs
testsuite/tests/parser/should_compile/DumpRenamedAst.stderr

index e99ca31..6613c98 100644 (file)
@@ -387,25 +387,47 @@ type RenamedStuff =
         (Maybe (HsGroup GhcRn, [LImportDecl GhcRn], Maybe [(LIE GhcRn, Avails)],
                 Maybe LHsDocString))
 
--- | Rename and typecheck a module, additionally returning the renamed syntax
-hscTypecheckRename :: HscEnv -> ModSummary -> HsParsedModule
-                   -> IO (TcGblEnv, RenamedStuff)
-hscTypecheckRename hsc_env mod_summary rdr_module = runHsc hsc_env $ do
-    tc_result <- hscTypecheck True mod_summary (Just rdr_module)
+-- -----------------------------------------------------------------------------
+-- | If the renamed source has been kept, extract it. Dump it if requested.
+extract_renamed_stuff :: TcGblEnv -> Hsc (TcGblEnv, RenamedStuff)
+extract_renamed_stuff tc_result = do
 
-        -- This 'do' is in the Maybe monad!
+    -- This 'do' is in the Maybe monad!
     let rn_info = do decl <- tcg_rn_decls tc_result
                      let imports = tcg_rn_imports tc_result
                          exports = tcg_rn_exports tc_result
                          doc_hdr = tcg_doc_hdr tc_result
                      return (decl,imports,exports,doc_hdr)
 
+    dflags <- getDynFlags
+    liftIO $ dumpIfSet_dyn dflags Opt_D_dump_rn_ast "Renamer" $
+                           showAstData NoBlankSrcSpan rn_info
+
     return (tc_result, rn_info)
 
+
+-- -----------------------------------------------------------------------------
+-- | Rename and typecheck a module, additionally returning the renamed syntax
+hscTypecheckRename :: HscEnv -> ModSummary -> HsParsedModule
+                   -> IO (TcGblEnv, RenamedStuff)
+hscTypecheckRename hsc_env mod_summary rdr_module = runHsc hsc_env $ do
+    tc_result <- hscTypecheck True mod_summary (Just rdr_module)
+    extract_renamed_stuff tc_result
+
+
 hscTypecheck :: Bool -- ^ Keep renamed source?
              -> ModSummary -> Maybe HsParsedModule
              -> Hsc TcGblEnv
 hscTypecheck keep_rn mod_summary mb_rdr_module = do
+    tc_result <- hscTypecheck' keep_rn mod_summary mb_rdr_module
+    _ <- extract_renamed_stuff tc_result
+    return tc_result
+
+
+hscTypecheck' :: Bool -- ^ Keep renamed source?
+              -> ModSummary -> Maybe HsParsedModule
+              -> Hsc TcGblEnv
+hscTypecheck' keep_rn mod_summary mb_rdr_module = do
     hsc_env <- getHscEnv
     let hsc_src = ms_hsc_src mod_summary
         dflags = hsc_dflags hsc_env
index c48b655..e53a661 100644 (file)
@@ -2512,9 +2512,7 @@ loadUnqualIfaces hsc_env ictxt
 
 rnDump :: (Outputable a, Data a) => a -> TcRn ()
 -- Dump, with a banner, if -ddump-rn
-rnDump rn = do { traceOptTcRn Opt_D_dump_rn (mkDumpDoc "Renamer" (ppr rn))
-               ; traceOptTcRn Opt_D_dump_rn_ast
-                 (mkDumpDoc "Renamer" (showAstData NoBlankSrcSpan rn)) }
+rnDump rn = do { traceOptTcRn Opt_D_dump_rn (mkDumpDoc "Renamer" (ppr rn)) }
 
 tcDump :: TcGblEnv -> TcRn ()
 tcDump env
index b9638ed..0416e36 100644 (file)
@@ -224,8 +224,9 @@ initTc hsc_env hsc_src keep_rn_syntax mod loc do_this
 
              maybe_rn_syntax :: forall a. a -> Maybe a ;
              maybe_rn_syntax empty_val
-                | keep_rn_syntax = Just empty_val
-                | otherwise      = Nothing ;
+                | dopt Opt_D_dump_rn_ast dflags = Just empty_val
+                | keep_rn_syntax                = Just empty_val
+                | otherwise                     = Nothing ;
 
              gbl_env = TcGblEnv {
                 tcg_th_topdecls      = th_topdecls_var,
index 60862cc..6d6dac1 100644 (file)
 
 ==================== Renamer ====================
 
-(HsGroup
- (ValBindsOut
-  [((,)
-    (NonRecursive)
-    {Bag(Located (HsBind Name)):
-     [({ DumpRenamedAst.hs:18:1-23 }
-       (FunBind
-        ({ DumpRenamedAst.hs:18:1-4 }
-         {Name: DumpRenamedAst.main})
-        (MG
-         ({ DumpRenamedAst.hs:18:1-23 }
-          [({ DumpRenamedAst.hs:18:1-23 }
-            (Match
-             (FunRhs
-              ({ DumpRenamedAst.hs:18:1-4 }
-               {Name: DumpRenamedAst.main})
-              (Prefix)
-              (NoSrcStrict))
-             []
-             (Nothing)
-             (GRHSs
-              [({ DumpRenamedAst.hs:18:6-23 }
-                (GRHS
-                 []
-                 ({ DumpRenamedAst.hs:18:8-23 }
-                  (HsApp
-                   ({ DumpRenamedAst.hs:18:8-15 }
-                    (HsVar
+(Just
+ ((,,,)
+  (HsGroup
+   (ValBindsOut
+    [((,)
+      (NonRecursive)
+      {Bag(Located (HsBind Name)):
+       [({ DumpRenamedAst.hs:18:1-23 }
+         (FunBind
+          ({ DumpRenamedAst.hs:18:1-4 }
+           {Name: DumpRenamedAst.main})
+          (MG
+           ({ DumpRenamedAst.hs:18:1-23 }
+            [({ DumpRenamedAst.hs:18:1-23 }
+              (Match
+               (FunRhs
+                ({ DumpRenamedAst.hs:18:1-4 }
+                 {Name: DumpRenamedAst.main})
+                (Prefix)
+                (NoSrcStrict))
+               []
+               (Nothing)
+               (GRHSs
+                [({ DumpRenamedAst.hs:18:6-23 }
+                  (GRHS
+                   []
+                   ({ DumpRenamedAst.hs:18:8-23 }
+                    (HsApp
                      ({ DumpRenamedAst.hs:18:8-15 }
-                      {Name: putStrLn})))
-                   ({ DumpRenamedAst.hs:18:17-23 }
-                    (HsLit
-                     (HsString
-                      (SourceText
-                       "\"hello\"")
-                      {FastString: "hello"})))))))]
-              ({ <no location info> }
-               (EmptyLocalBinds)))))])
+                      (HsVar
+                       ({ DumpRenamedAst.hs:18:8-15 }
+                        {Name: System.IO.putStrLn})))
+                     ({ DumpRenamedAst.hs:18:17-23 }
+                      (HsLit
+                       (HsString
+                        (SourceText
+                         "\"hello\"")
+                        {FastString: "hello"})))))))]
+                ({ <no location info> }
+                 (EmptyLocalBinds)))))])
+           []
+           (PlaceHolder)
+           (FromSource))
+          (WpHole)
+          {NameSet:
+           []}
+          []))]})]
+    [])
+   []
+   [(TyClGroup
+     [({ DumpRenamedAst.hs:6:1-30 }
+       (DataDecl
+        ({ DumpRenamedAst.hs:6:6-10 }
+         {Name: DumpRenamedAst.Peano})
+        (HsQTvs
+         []
          []
-         (PlaceHolder)
-         (FromSource))
-        (WpHole)
+         {NameSet:
+          []})
+        (Prefix)
+        (HsDataDefn
+         (DataType)
+         ({ <no location info> }
+          [])
+         (Nothing)
+         (Nothing)
+         [({ DumpRenamedAst.hs:6:14-17 }
+           (ConDeclH98
+            ({ DumpRenamedAst.hs:6:14-17 }
+             {Name: DumpRenamedAst.Zero})
+            (Nothing)
+            (Just
+             ({ <no location info> }
+              []))
+            (PrefixCon
+             [])
+            (Nothing)))
+         ,({ DumpRenamedAst.hs:6:21-30 }
+           (ConDeclH98
+            ({ DumpRenamedAst.hs:6:21-24 }
+             {Name: DumpRenamedAst.Succ})
+            (Nothing)
+            (Just
+             ({ <no location info> }
+              []))
+            (PrefixCon
+             [({ DumpRenamedAst.hs:6:26-30 }
+               (HsTyVar
+                (NotPromoted)
+                ({ DumpRenamedAst.hs:6:26-30 }
+                 {Name: DumpRenamedAst.Peano})))])
+            (Nothing)))]
+         ({ <no location info> }
+          []))
+        (True)
         {NameSet:
-         []}
-        []))]})]
-  [])
- []
- [(TyClGroup
-   [({ DumpRenamedAst.hs:6:1-30 }
-     (DataDecl
-      ({ DumpRenamedAst.hs:6:6-10 }
-       {Name: DumpRenamedAst.Peano})
-      (HsQTvs
-       []
-       []
-       {NameSet:
-        []})
-      (Prefix)
-      (HsDataDefn
-       (DataType)
-       ({ <no location info> }
-        [])
-       (Nothing)
-       (Nothing)
-       [({ DumpRenamedAst.hs:6:14-17 }
-         (ConDeclH98
-          ({ DumpRenamedAst.hs:6:14-17 }
-           {Name: DumpRenamedAst.Zero})
-          (Nothing)
-          (Just
-           ({ <no location info> }
-            []))
-          (PrefixCon
-           [])
-          (Nothing)))
-       ,({ DumpRenamedAst.hs:6:21-30 }
-         (ConDeclH98
-          ({ DumpRenamedAst.hs:6:21-24 }
-           {Name: DumpRenamedAst.Succ})
-          (Nothing)
+         [{Name: DumpRenamedAst.Peano}]}))]
+     []
+     [])
+   ,(TyClGroup
+     [({ DumpRenamedAst.hs:8:1-39 }
+       (FamDecl
+        (FamilyDecl
+         (ClosedTypeFamily
           (Just
-           ({ <no location info> }
-            []))
-          (PrefixCon
-           [({ DumpRenamedAst.hs:6:26-30 }
-             (HsTyVar
-              (NotPromoted)
-              ({ DumpRenamedAst.hs:6:26-30 }
-               {Name: DumpRenamedAst.Peano})))])
-          (Nothing)))]
-       ({ <no location info> }
-        []))
-      (True)
-      {NameSet:
-       [{Name: DumpRenamedAst.Peano}]}))]
-   []
-   [])
- ,(TyClGroup
-   [({ DumpRenamedAst.hs:8:1-39 }
-     (FamDecl
-      (FamilyDecl
-       (ClosedTypeFamily
-        (Just
-         [({ DumpRenamedAst.hs:9:3-36 }
-           (HsIB
-            [{Name: a}
-            ,{Name: as}]
-            (FamEqn
-             ({ DumpRenamedAst.hs:9:3-8 }
-              {Name: DumpRenamedAst.Length})
-             [({ DumpRenamedAst.hs:9:10-17 }
-               (HsParTy
-                ({ DumpRenamedAst.hs:9:11-16 }
-                 (HsOpTy
-                  ({ DumpRenamedAst.hs:9:11 }
-                   (HsTyVar
-                    (NotPromoted)
+           [({ DumpRenamedAst.hs:9:3-36 }
+             (HsIB
+              [{Name: a}
+              ,{Name: as}]
+              (FamEqn
+               ({ DumpRenamedAst.hs:9:3-8 }
+                {Name: DumpRenamedAst.Length})
+               [({ DumpRenamedAst.hs:9:10-17 }
+                 (HsParTy
+                  ({ DumpRenamedAst.hs:9:11-16 }
+                   (HsOpTy
                     ({ DumpRenamedAst.hs:9:11 }
-                     {Name: a})))
-                  ({ DumpRenamedAst.hs:9:13 }
-                   {Name: :})
-                  ({ DumpRenamedAst.hs:9:15-16 }
-                   (HsTyVar
-                    (NotPromoted)
+                     (HsTyVar
+                      (NotPromoted)
+                      ({ DumpRenamedAst.hs:9:11 }
+                       {Name: a})))
+                    ({ DumpRenamedAst.hs:9:13 }
+                     {Name: :})
                     ({ DumpRenamedAst.hs:9:15-16 }
-                     {Name: as})))))))]
-             (Prefix)
-             ({ DumpRenamedAst.hs:9:21-36 }
-              (HsAppTy
-               ({ DumpRenamedAst.hs:9:21-24 }
-                (HsTyVar
-                 (NotPromoted)
+                     (HsTyVar
+                      (NotPromoted)
+                      ({ DumpRenamedAst.hs:9:15-16 }
+                       {Name: as})))))))]
+               (Prefix)
+               ({ DumpRenamedAst.hs:9:21-36 }
+                (HsAppTy
                  ({ DumpRenamedAst.hs:9:21-24 }
-                  {Name: DumpRenamedAst.Succ})))
-               ({ DumpRenamedAst.hs:9:26-36 }
-                (HsParTy
-                 ({ DumpRenamedAst.hs:9:27-35 }
-                  (HsAppTy
-                   ({ DumpRenamedAst.hs:9:27-32 }
-                    (HsTyVar
-                     (NotPromoted)
+                  (HsTyVar
+                   (NotPromoted)
+                   ({ DumpRenamedAst.hs:9:21-24 }
+                    {Name: DumpRenamedAst.Succ})))
+                 ({ DumpRenamedAst.hs:9:26-36 }
+                  (HsParTy
+                   ({ DumpRenamedAst.hs:9:27-35 }
+                    (HsAppTy
                      ({ DumpRenamedAst.hs:9:27-32 }
-                      {Name: DumpRenamedAst.Length})))
-                   ({ DumpRenamedAst.hs:9:34-35 }
-                    (HsTyVar
-                     (NotPromoted)
+                      (HsTyVar
+                       (NotPromoted)
+                       ({ DumpRenamedAst.hs:9:27-32 }
+                        {Name: DumpRenamedAst.Length})))
                      ({ DumpRenamedAst.hs:9:34-35 }
-                      {Name: as}))))))))))
-            (True)))
-         ,({ DumpRenamedAst.hs:10:3-24 }
-           (HsIB
-            []
-            (FamEqn
-             ({ DumpRenamedAst.hs:10:3-8 }
-              {Name: DumpRenamedAst.Length})
-             [({ DumpRenamedAst.hs:10:10-12 }
-               (HsExplicitListTy
-                (Promoted)
-                (PlaceHolder)
-                []))]
-             (Prefix)
-             ({ DumpRenamedAst.hs:10:21-24 }
-              (HsTyVar
-               (NotPromoted)
+                      (HsTyVar
+                       (NotPromoted)
+                       ({ DumpRenamedAst.hs:9:34-35 }
+                        {Name: as}))))))))))
+              (True)))
+           ,({ DumpRenamedAst.hs:10:3-24 }
+             (HsIB
+              []
+              (FamEqn
+               ({ DumpRenamedAst.hs:10:3-8 }
+                {Name: DumpRenamedAst.Length})
+               [({ DumpRenamedAst.hs:10:10-12 }
+                 (HsExplicitListTy
+                  (Promoted)
+                  (PlaceHolder)
+                  []))]
+               (Prefix)
                ({ DumpRenamedAst.hs:10:21-24 }
-                {Name: DumpRenamedAst.Zero}))))
-            (True)))]))
-       ({ DumpRenamedAst.hs:8:13-18 }
-        {Name: DumpRenamedAst.Length})
-       (HsQTvs
-        [{Name: k}]
-        [({ DumpRenamedAst.hs:8:20-30 }
-          (KindedTyVar
-           ({ DumpRenamedAst.hs:8:21-22 }
-            {Name: as})
-           ({ DumpRenamedAst.hs:8:27-29 }
-            (HsListTy
-             ({ DumpRenamedAst.hs:8:28 }
-              (HsTyVar
-               (NotPromoted)
+                (HsTyVar
+                 (NotPromoted)
+                 ({ DumpRenamedAst.hs:10:21-24 }
+                  {Name: DumpRenamedAst.Zero}))))
+              (True)))]))
+         ({ DumpRenamedAst.hs:8:13-18 }
+          {Name: DumpRenamedAst.Length})
+         (HsQTvs
+          [{Name: k}]
+          [({ DumpRenamedAst.hs:8:20-30 }
+            (KindedTyVar
+             ({ DumpRenamedAst.hs:8:21-22 }
+              {Name: as})
+             ({ DumpRenamedAst.hs:8:27-29 }
+              (HsListTy
                ({ DumpRenamedAst.hs:8:28 }
-                {Name: k})))))))]
-        {NameSet:
-         []})
-       (Prefix)
-       ({ DumpRenamedAst.hs:8:32-39 }
-        (KindSig
-         ({ DumpRenamedAst.hs:8:35-39 }
-          (HsTyVar
-           (NotPromoted)
+                (HsTyVar
+                 (NotPromoted)
+                 ({ DumpRenamedAst.hs:8:28 }
+                  {Name: k})))))))]
+          {NameSet:
+           []})
+         (Prefix)
+         ({ DumpRenamedAst.hs:8:32-39 }
+          (KindSig
            ({ DumpRenamedAst.hs:8:35-39 }
-            {Name: DumpRenamedAst.Peano})))))
-       (Nothing))))]
-   []
-   [])
- ,(TyClGroup
-   [({ DumpRenamedAst.hs:12:1-30 }
-     (FamDecl
-      (FamilyDecl
-       (DataFamily)
-       ({ DumpRenamedAst.hs:12:13-15 }
-        {Name: DumpRenamedAst.Nat})
-       (HsQTvs
-        [{Name: k}]
-        []
-        {NameSet:
-         []})
-       (Prefix)
-       ({ DumpRenamedAst.hs:12:17-30 }
-        (KindSig
-         ({ DumpRenamedAst.hs:12:20-30 }
-          (HsFunTy
-           ({ DumpRenamedAst.hs:12:20 }
             (HsTyVar
              (NotPromoted)
-             ({ DumpRenamedAst.hs:12:20 }
-              {Name: k})))
-           ({ DumpRenamedAst.hs:12:25-30 }
+             ({ DumpRenamedAst.hs:8:35-39 }
+              {Name: DumpRenamedAst.Peano})))))
+         (Nothing))))]
+     []
+     [])
+   ,(TyClGroup
+     [({ DumpRenamedAst.hs:12:1-30 }
+       (FamDecl
+        (FamilyDecl
+         (DataFamily)
+         ({ DumpRenamedAst.hs:12:13-15 }
+          {Name: DumpRenamedAst.Nat})
+         (HsQTvs
+          [{Name: k}]
+          []
+          {NameSet:
+           []})
+         (Prefix)
+         ({ DumpRenamedAst.hs:12:17-30 }
+          (KindSig
+           ({ DumpRenamedAst.hs:12:20-30 }
             (HsFunTy
-             ({ DumpRenamedAst.hs:12:25 }
+             ({ DumpRenamedAst.hs:12:20 }
               (HsTyVar
                (NotPromoted)
-               ({ DumpRenamedAst.hs:12:25 }
+               ({ DumpRenamedAst.hs:12:20 }
                 {Name: k})))
-             ({ DumpRenamedAst.hs:12:30 }
-              (HsTyVar
-               (NotPromoted)
+             ({ DumpRenamedAst.hs:12:25-30 }
+              (HsFunTy
+               ({ DumpRenamedAst.hs:12:25 }
+                (HsTyVar
+                 (NotPromoted)
+                 ({ DumpRenamedAst.hs:12:25 }
+                  {Name: k})))
                ({ DumpRenamedAst.hs:12:30 }
-                {Name: *})))))))))
-       (Nothing))))]
-   []
-   [({ DumpRenamedAst.hs:(15,1)-(16,45) }
-     (DataFamInstD
-      (DataFamInstDecl
-       (HsIB
-        [{Name: k}
-        ,{Name: a}]
-        (FamEqn
-         ({ DumpRenamedAst.hs:15:18-20 }
-          {Name: DumpRenamedAst.Nat})
-         [({ DumpRenamedAst.hs:15:22-34 }
-           (HsKindSig
-            ({ DumpRenamedAst.hs:15:23 }
-             (HsTyVar
-              (NotPromoted)
+                (HsTyVar
+                 (NotPromoted)
+                 ({ DumpRenamedAst.hs:12:30 }
+                  {Name: GHC.Types.*})))))))))
+         (Nothing))))]
+     []
+     [({ DumpRenamedAst.hs:(15,1)-(16,45) }
+       (DataFamInstD
+        (DataFamInstDecl
+         (HsIB
+          [{Name: k}
+          ,{Name: a}]
+          (FamEqn
+           ({ DumpRenamedAst.hs:15:18-20 }
+            {Name: DumpRenamedAst.Nat})
+           [({ DumpRenamedAst.hs:15:22-34 }
+             (HsKindSig
               ({ DumpRenamedAst.hs:15:23 }
-               {Name: a})))
-            ({ DumpRenamedAst.hs:15:28-33 }
-             (HsFunTy
-              ({ DumpRenamedAst.hs:15:28 }
                (HsTyVar
                 (NotPromoted)
+                ({ DumpRenamedAst.hs:15:23 }
+                 {Name: a})))
+              ({ DumpRenamedAst.hs:15:28-33 }
+               (HsFunTy
                 ({ DumpRenamedAst.hs:15:28 }
-                 {Name: k})))
-              ({ DumpRenamedAst.hs:15:33 }
-               (HsTyVar
-                (NotPromoted)
+                 (HsTyVar
+                  (NotPromoted)
+                  ({ DumpRenamedAst.hs:15:28 }
+                   {Name: k})))
                 ({ DumpRenamedAst.hs:15:33 }
-                 {Name: *})))))))]
-         (Prefix)
-         (HsDataDefn
-          (NewType)
-          ({ <no location info> }
-           [])
-          (Nothing)
-          (Just
-           ({ DumpRenamedAst.hs:15:39-51 }
-            (HsFunTy
-             ({ DumpRenamedAst.hs:15:39-46 }
-              (HsParTy
-               ({ DumpRenamedAst.hs:15:40-45 }
-                (HsFunTy
-                 ({ DumpRenamedAst.hs:15:40 }
-                  (HsTyVar
-                   (NotPromoted)
+                 (HsTyVar
+                  (NotPromoted)
+                  ({ DumpRenamedAst.hs:15:33 }
+                   {Name: GHC.Types.*})))))))]
+           (Prefix)
+           (HsDataDefn
+            (NewType)
+            ({ <no location info> }
+             [])
+            (Nothing)
+            (Just
+             ({ DumpRenamedAst.hs:15:39-51 }
+              (HsFunTy
+               ({ DumpRenamedAst.hs:15:39-46 }
+                (HsParTy
+                 ({ DumpRenamedAst.hs:15:40-45 }
+                  (HsFunTy
                    ({ DumpRenamedAst.hs:15:40 }
-                    {Name: k})))
-                 ({ DumpRenamedAst.hs:15:45 }
-                  (HsTyVar
-                   (NotPromoted)
+                    (HsTyVar
+                     (NotPromoted)
+                     ({ DumpRenamedAst.hs:15:40 }
+                      {Name: k})))
                    ({ DumpRenamedAst.hs:15:45 }
-                    {Name: *})))))))
-             ({ DumpRenamedAst.hs:15:51 }
-              (HsTyVar
-               (NotPromoted)
+                    (HsTyVar
+                     (NotPromoted)
+                     ({ DumpRenamedAst.hs:15:45 }
+                      {Name: GHC.Types.*})))))))
                ({ DumpRenamedAst.hs:15:51 }
-                {Name: *}))))))
-          [({ DumpRenamedAst.hs:16:3-45 }
-            (ConDeclGADT
-             [({ DumpRenamedAst.hs:16:3-5 }
-               {Name: DumpRenamedAst.Nat})]
-             (HsIB
-              [{Name: f}
-              ,{Name: g}]
-              ({ DumpRenamedAst.hs:16:10-45 }
-               (HsFunTy
-                ({ DumpRenamedAst.hs:16:10-34 }
-                 (HsParTy
-                  ({ DumpRenamedAst.hs:16:11-33 }
-                   (HsForAllTy
-                    [({ DumpRenamedAst.hs:16:18-19 }
-                      (UserTyVar
-                       ({ DumpRenamedAst.hs:16:18-19 }
-                        {Name: xx})))]
-                    ({ DumpRenamedAst.hs:16:22-33 }
-                     (HsFunTy
-                      ({ DumpRenamedAst.hs:16:22-25 }
-                       (HsAppTy
-                        ({ DumpRenamedAst.hs:16:22 }
-                         (HsTyVar
-                          (NotPromoted)
+                (HsTyVar
+                 (NotPromoted)
+                 ({ DumpRenamedAst.hs:15:51 }
+                  {Name: GHC.Types.*}))))))
+            [({ DumpRenamedAst.hs:16:3-45 }
+              (ConDeclGADT
+               [({ DumpRenamedAst.hs:16:3-5 }
+                 {Name: DumpRenamedAst.Nat})]
+               (HsIB
+                [{Name: f}
+                ,{Name: g}]
+                ({ DumpRenamedAst.hs:16:10-45 }
+                 (HsFunTy
+                  ({ DumpRenamedAst.hs:16:10-34 }
+                   (HsParTy
+                    ({ DumpRenamedAst.hs:16:11-33 }
+                     (HsForAllTy
+                      [({ DumpRenamedAst.hs:16:18-19 }
+                        (UserTyVar
+                         ({ DumpRenamedAst.hs:16:18-19 }
+                          {Name: xx})))]
+                      ({ DumpRenamedAst.hs:16:22-33 }
+                       (HsFunTy
+                        ({ DumpRenamedAst.hs:16:22-25 }
+                         (HsAppTy
                           ({ DumpRenamedAst.hs:16:22 }
-                           {Name: f})))
-                        ({ DumpRenamedAst.hs:16:24-25 }
-                         (HsTyVar
-                          (NotPromoted)
+                           (HsTyVar
+                            (NotPromoted)
+                            ({ DumpRenamedAst.hs:16:22 }
+                             {Name: f})))
                           ({ DumpRenamedAst.hs:16:24-25 }
-                           {Name: xx})))))
-                      ({ DumpRenamedAst.hs:16:30-33 }
-                       (HsAppTy
-                        ({ DumpRenamedAst.hs:16:30 }
-                         (HsTyVar
-                          (NotPromoted)
+                           (HsTyVar
+                            (NotPromoted)
+                            ({ DumpRenamedAst.hs:16:24-25 }
+                             {Name: xx})))))
+                        ({ DumpRenamedAst.hs:16:30-33 }
+                         (HsAppTy
                           ({ DumpRenamedAst.hs:16:30 }
-                           {Name: g})))
-                        ({ DumpRenamedAst.hs:16:32-33 }
-                         (HsTyVar
-                          (NotPromoted)
+                           (HsTyVar
+                            (NotPromoted)
+                            ({ DumpRenamedAst.hs:16:30 }
+                             {Name: g})))
                           ({ DumpRenamedAst.hs:16:32-33 }
-                           {Name: xx})))))))))))
-                ({ DumpRenamedAst.hs:16:39-45 }
-                 (HsAppTy
-                  ({ DumpRenamedAst.hs:16:39-43 }
+                           (HsTyVar
+                            (NotPromoted)
+                            ({ DumpRenamedAst.hs:16:32-33 }
+                             {Name: xx})))))))))))
+                  ({ DumpRenamedAst.hs:16:39-45 }
                    (HsAppTy
-                    ({ DumpRenamedAst.hs:16:39-41 }
-                     (HsTyVar
-                      (NotPromoted)
+                    ({ DumpRenamedAst.hs:16:39-43 }
+                     (HsAppTy
                       ({ DumpRenamedAst.hs:16:39-41 }
-                       {Name: DumpRenamedAst.Nat})))
-                    ({ DumpRenamedAst.hs:16:43 }
-                     (HsTyVar
-                      (NotPromoted)
+                       (HsTyVar
+                        (NotPromoted)
+                        ({ DumpRenamedAst.hs:16:39-41 }
+                         {Name: DumpRenamedAst.Nat})))
                       ({ DumpRenamedAst.hs:16:43 }
-                       {Name: f})))))
-                  ({ DumpRenamedAst.hs:16:45 }
-                   (HsTyVar
-                    (NotPromoted)
+                       (HsTyVar
+                        (NotPromoted)
+                        ({ DumpRenamedAst.hs:16:43 }
+                         {Name: f})))))
                     ({ DumpRenamedAst.hs:16:45 }
-                     {Name: g})))))))
-              (True))
-             (Nothing)))]
-          ({ <no location info> }
-           [])))
-        (True)))))])]
- []
- []
- []
- []
- []
- []
- []
- []
- [])
+                     (HsTyVar
+                      (NotPromoted)
+                      ({ DumpRenamedAst.hs:16:45 }
+                       {Name: g})))))))
+                (True))
+               (Nothing)))]
+            ({ <no location info> }
+             [])))
+          (True)))))])]
+   []
+   []
+   []
+   []
+   []
+   []
+   []
+   []
+   [])
+  [({ DumpRenamedAst.hs:4:8-21 }
+    (ImportDecl
+     (NoSourceText)
+     ({ DumpRenamedAst.hs:4:8-21 }
+      {ModuleName: Prelude})
+     (Nothing)
+     (False)
+     (False)
+     (False)
+     (True)
+     (Nothing)
+     (Nothing)))]
+  (Nothing)
+  (Nothing)))
+