diff options
Diffstat (limited to 'src/HaskellCodeExplorer')
-rw-r--r-- | src/HaskellCodeExplorer/AST/TypecheckedSource.hs | 54 |
1 files changed, 17 insertions, 37 deletions
diff --git a/src/HaskellCodeExplorer/AST/TypecheckedSource.hs b/src/HaskellCodeExplorer/AST/TypecheckedSource.hs index 2a9079d..232d54d 100644 --- a/src/HaskellCodeExplorer/AST/TypecheckedSource.hs +++ b/src/HaskellCodeExplorer/AST/TypecheckedSource.hs @@ -84,7 +84,7 @@ import GHC.Data.FastString ( FastString , mkFastString , unpackFS ) -import GHC.Driver.Ppr ( pprTrace ) +-- import GHC.Driver.Ppr ( pprTrace ) import GHC.Hs ( ABExport(..) , ApplicativeArg(..) , ArithSeqInfo(..) @@ -96,7 +96,7 @@ import GHC.Hs ( ABExport(..) , HsCmd(..) , HsCmdTop(..) , HsConDetails(..) - , HsConPatDetails(..) + , HsConPatDetails , HsExpr(..) , HsLocalBindsLR(..) , HsOverLit(..) @@ -130,10 +130,10 @@ import GHC.Hs ( ABExport(..) , selectorAmbiguousFieldOcc ) import GHC.Hs.Binds ( RecordPatSynField(..) ) -import GHC.Hs.Dump ( BlankEpAnnotations(..) - , BlankSrcSpan(..) - , showAstData - ) +-- import GHC.Hs.Dump ( BlankEpAnnotations(..) +-- , BlankSrcSpan(..) +-- , showAstData +-- ) import GHC.Hs.Expr ( HsExpansion(..) , HsWrap(..) , XXExprGhcTc(..) @@ -173,7 +173,7 @@ import GHC.Types.Var ( Id import GHC.Types.Var.Env ( TidyEnv ) import GHC.Unit.State ( UnitState ) import GHC.Utils.Misc ( thenCmp ) -import GHC.Utils.Outputable ( showPprUnsafe ) +-- import GHC.Utils.Outputable ( showPprUnsafe ) import HaskellCodeExplorer.GhcUtils import qualified HaskellCodeExplorer.Types as HCE import Prelude hiding ( span ) @@ -599,22 +599,13 @@ tidyType typ = do foldTypecheckedSource :: LHsBinds GhcTc -> State ASTState () foldTypecheckedSource = foldLHsBindsLR --- src/HaskellCodeExplorer/AST/TypecheckedSource.hs:606:1: warning: [-Wincomplete-patterns] --- Pattern match(es) are non-exhaustive --- In an equation for ‘foldLHsExpr’: --- Patterns of type ‘LHsExpr GhcTc’ not matched: --- L (GHC.Parser.Annotation.SrcSpanAnn _ _) (HsGetField _ _ _) --- L (GHC.Parser.Annotation.SrcSpanAnn _ _) (HsProjection _ _) foldLHsExpr :: LHsExpr GhcTc -> State ASTState (Maybe Type) -- foldLHsExpr lhe -- | pprTrace "foldLHsExpr" -- (showAstData NoBlankSrcSpan NoBlankEpAnnotations lhe) -- False -- = undefined -foldLHsExpr (L span (XExpr (ExpansionExpr (HsExpanded _ r)))) = - foldLHsExpr (L span r) -foldLHsExpr ( L span (XExpr (WrapExpr wrap) )) = foldLHsWrap (L span wrap) -foldLHsExpr lhe@(L _ (HsVar _ (L _ identifier))) = restoreTidyEnv $ do +foldLHsExpr lhe@(L _ (HsVar _ (L _ identifier))) = restoreTidyEnv $ do (identifier', mbTypes) <- tidyIdentifier identifier addIdentifierToIdSrcSpanMap (getLocA lhe) identifier' mbTypes return . Just . varType $ identifier' @@ -631,11 +622,6 @@ foldLHsExpr ( L _ HsOverLabel{} ) = return Nothing foldLHsExpr lhe@(L _ expr@HsIPVar{}) = do addExprInfo (getLocA lhe) Nothing "HsIPVar" (exprSort expr) return Nothing --- foldLHsExpr lhe@(L _ (HsOverLit _ _)) --- | pprTrace "foldLHsExpr with hsoverlit" --- (showAstData NoBlankSrcSpan NoBlankEpAnnotations lhe) --- False --- = undefined foldLHsExpr lhe@(L _ (HsOverLit _ (OverLit (OverLitTc _ ol_type) _ _))) = restoreTidyEnv $ do typ <- tidyType ol_type @@ -644,11 +630,6 @@ foldLHsExpr lhe@(L _ (HsOverLit _ (OverLit (OverLitTc _ ol_type) _ _))) = "HsOverLit" (if isOneLineSpan (getLocA lhe) then Simple else Composite) return $ Just typ --- foldLHsExpr lhe@(L _ (HsLit _ _)) --- | pprTrace "foldLHsExpr with hslit" --- (showAstData NoBlankSrcSpan NoBlankEpAnnotations lhe) --- False --- = undefined foldLHsExpr lhe@(L _ (HsLit _ lit)) = restoreTidyEnv $ do typ <- tidyType $ hsLitType lit addExprInfo (getLocA lhe) @@ -785,6 +766,8 @@ foldLHsExpr lhe@(L _ e@(RecordUpd (RecordUpdTc cons _inputTys outTys _wrapper) e _ <- foldLHsExpr expr when (isLeft binds) (mapM_ foldLHsRecUpdField (fromLeft [] binds)) return $ Just typ' +foldLHsExpr ( L _ ( HsGetField _ _ _ )) = return Nothing +foldLHsExpr ( L _ ( HsProjection _ _ )) = return Nothing foldLHsExpr lhe@(L _ e@(ExprWithTySig _ expr _)) = do typ <- foldLHsExpr expr addExprInfo (getLocA lhe) typ "ExprWithTySig" (exprSort e) @@ -827,6 +810,9 @@ foldLHsExpr lhe@(L _ e@(HsBinTick _ _ _ expr)) = do typ <- foldLHsExpr expr addExprInfo (getLocA lhe) typ "HsBinTick" (exprSort e) return typ +foldLHsExpr (L span (XExpr (ExpansionExpr (HsExpanded _ r)))) = + foldLHsExpr (L span r) +foldLHsExpr (L span (XExpr (WrapExpr wrap))) = foldLHsWrap (L span wrap) foldHsRecFields :: HsRecFields GhcTc (LHsExpr GhcTc) -> State ASTState (Maybe Type) @@ -1114,10 +1100,8 @@ foldLPat (L _span (SumPat _ pat _ _)) = do _ <- foldLPat pat return Nothing -- no more conpatin / conpatout, just conpat (in the wildcard pattern _) --- foldLPat (ghcDL -> L _span (ConPatIn _ _)) = return Nothing --- TODO: FIXME - -- original +-- foldLPat (ghcDL -> L _span (ConPatIn _ _)) = return Nothing -- foldLPat (ghcDL -> L span pat@ConPatOut {..}) = do -- let (L idSpan conLike) = pat_con -- conId = @@ -1132,7 +1116,7 @@ foldLPat (L _span (SumPat _ pat _ _)) = do -- _ <- foldHsConPatDetails pat_args -- return . Just . varType $ identifier' -foldLPat lp@(L span pat@(ConPat ConPatTc {..} (L _ conLike) args)) = do +foldLPat lp@(L _ pat@(ConPat ConPatTc {..} (L _ conLike) args)) = do let typ = conLikeResTy conLike cpt_arg_tys typ' <- tidyType typ addExprInfo (getLocA lp) (Just typ') "ConPat" (patSort pat) @@ -1180,11 +1164,6 @@ foldLHsCmdTop (L span (HsCmdTop _ cmd)) = do addExprInfo span mbTyp "HsCmdTop" Composite return mbTyp --- src/HaskellCodeExplorer/AST/TypecheckedSource.hs:1379:1: warning: [-Wincomplete-patterns] --- Pattern match(es) are non-exhaustive --- In an equation for ‘foldLHsCmd’: --- Patterns of type ‘LHsCmd GhcTc’ not matched: --- L (GHC.Parser.Annotation.SrcSpanAnn _ _) (HsCmdLamCase _ _) foldLHsCmd :: LHsCmd GhcTc -> State ASTState (Maybe Type) foldLHsCmd (L _ (XCmd _ )) = return Nothing foldLHsCmd (L _ (HsCmdArrApp _ expr1 expr2 _ _)) = do @@ -1206,7 +1185,8 @@ foldLHsCmd (L _ (HsCmdCase _ expr MG {..})) = do _ <- foldLHsExpr expr mapM_ foldLMatchCmd $ unLoc mg_alts return Nothing -foldLHsCmd (L _ (HsCmdPar _ cmd)) = do +foldLHsCmd (L _ (HsCmdLamCase _ _ )) = return Nothing +foldLHsCmd (L _ (HsCmdPar _ cmd)) = do _ <- foldLHsCmd cmd return Nothing foldLHsCmd (L _ (HsCmdIf _ _ expr cmd1 cmd2)) = do |