Skip to content
  • Simon Peyton Jones's avatar
    ef5342cd
    Refactor to combine HsLam and HsLamCase · ef5342cd
    Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
    This MR is pure refactoring (#23916):
    * Combine `HsLam` and `HsLamCase`
    * Combine `HsCmdLam` and `HsCmdLamCase`
    
    This just arranges to treat uniformly
       \x -> e
       \case pi -> ei
       \cases pis -> ie
    
    In the exising code base the first is treated differently
    to the latter two.
    
    No change in behaviour.
    
    More specifics:
    
    * Combine `HsLam` and `HsLamCase` (constructors of `Language.Haskell.Syntax.Expr.HsExpr`) into one data construtor covering
      * Lambda
      * `\case`
      * `\cases`
    
    * The new `HsLam` has an argument of type `HsLamVariant` to distinguish the three cases.
    
    * Similarly, combine `HsCmdLam` and `HsCmdLamCase` (constructors of `Language.Haskell.Syntax.Expr.HsCmd` ) into one.
    
    * Similarly, combine `mkHsLamPV` and `mkHsLamCasePV` (methods of class `DisambECP`) into one. (Thank you Alan Zimmerman.)
    
    * Similarly, combine `LambdaExpr` and `LamCaseAlt` (constructors of `Language.Haskell.Syntax.Expr.HsMatchContext`) into one: `LamAlt` with a `HsLamVariant` argument.
    
    * Similarly, combine `KappaExpr` and `ArrowLamCaseAlt` (constructors of `Language.Haskell.Syntax.Expr.HsArrowMatchContext`) into one: `ArrowLamAlt` with a `HsLamVariant` argument.
    
    * Similarly, combine `PsErrLambdaInPat` and `PsErrLambdaCaseInPat` (constructors of `GHC.Parser.Errors.Ppr.PsError`) into one.
    
    * Similarly, combine `PsErrLambdaInPat` and `PsErrLambdaCaseInPat` (constructors of `GHC.Parser.Errors.Ppr.PsError`) into one.
    
    * In the same `PsError` data type, combine `PsErrLambdaCmdInFunAppCmd` and `PsErrLambdaCaseCmdInFunAppCmd` into one.
    
    * In the same `PsError` data tpye, combine `PsErrLambdaInFunAppExpr` and `PsErrLambdaCaseInFunAppExpr` into one.
    
    p* Smilarly combine `ExpectedFunTyLam` and `ExpectedFunTyLamCase` (constructors of `GHC.Tc.Types.Origin.ExpectedFunTyOrigin`) into one.
    
    Phew!
    ef5342cd
    Refactor to combine HsLam and HsLamCase
    Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
    This MR is pure refactoring (#23916):
    * Combine `HsLam` and `HsLamCase`
    * Combine `HsCmdLam` and `HsCmdLamCase`
    
    This just arranges to treat uniformly
       \x -> e
       \case pi -> ei
       \cases pis -> ie
    
    In the exising code base the first is treated differently
    to the latter two.
    
    No change in behaviour.
    
    More specifics:
    
    * Combine `HsLam` and `HsLamCase` (constructors of `Language.Haskell.Syntax.Expr.HsExpr`) into one data construtor covering
      * Lambda
      * `\case`
      * `\cases`
    
    * The new `HsLam` has an argument of type `HsLamVariant` to distinguish the three cases.
    
    * Similarly, combine `HsCmdLam` and `HsCmdLamCase` (constructors of `Language.Haskell.Syntax.Expr.HsCmd` ) into one.
    
    * Similarly, combine `mkHsLamPV` and `mkHsLamCasePV` (methods of class `DisambECP`) into one. (Thank you Alan Zimmerman.)
    
    * Similarly, combine `LambdaExpr` and `LamCaseAlt` (constructors of `Language.Haskell.Syntax.Expr.HsMatchContext`) into one: `LamAlt` with a `HsLamVariant` argument.
    
    * Similarly, combine `KappaExpr` and `ArrowLamCaseAlt` (constructors of `Language.Haskell.Syntax.Expr.HsArrowMatchContext`) into one: `ArrowLamAlt` with a `HsLamVariant` argument.
    
    * Similarly, combine `PsErrLambdaInPat` and `PsErrLambdaCaseInPat` (constructors of `GHC.Parser.Errors.Ppr.PsError`) into one.
    
    * Similarly, combine `PsErrLambdaInPat` and `PsErrLambdaCaseInPat` (constructors of `GHC.Parser.Errors.Ppr.PsError`) into one.
    
    * In the same `PsError` data type, combine `PsErrLambdaCmdInFunAppCmd` and `PsErrLambdaCaseCmdInFunAppCmd` into one.
    
    * In the same `PsError` data tpye, combine `PsErrLambdaInFunAppExpr` and `PsErrLambdaCaseInFunAppExpr` into one.
    
    p* Smilarly combine `ExpectedFunTyLam` and `ExpectedFunTyLamCase` (constructors of `GHC.Tc.Types.Origin.ExpectedFunTyOrigin`) into one.
    
    Phew!
Loading