packages feed

haskell-src-exts 1.18.1 → 1.18.2

raw patch · 8 files changed

+319/−4 lines, 8 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG view
@@ -1,3 +1,8 @@+1.18.1 --> 1.18.2+===================++* Fix overzealous lexing of type applications+ 1.18.0 --> 1.18.1 =================== 
haskell-src-exts.cabal view
@@ -1,5 +1,5 @@ Name:                   haskell-src-exts-Version:                1.18.1+Version:                1.18.2 License:                BSD3 License-File:           LICENSE Build-Type:             Simple
src/Language/Haskell/Exts/InternalLexer.hs view
@@ -351,6 +351,12 @@  isPragmaChar c = isAlphaNum c || c == '_' +-- Used in the lexing of type applications+-- Why is it like this? I don't know exactly but this is how it is in+-- GHC's parser.+isOpSymbol :: Char -> Bool+isOpSymbol c = c `elem` "!#$%&*+./<=>?@\\^|-~"+ -- | Checks whether the character would be legal in some position of a qvar. --   Means that '..' and "AAA" will pass the test. isPossiblyQvar :: Char -> Bool@@ -740,9 +746,11 @@          -- Lexed seperately to deal with visible type applciation -        '@':_ | TypeApplications `elem` exts -> do-                                                c <- getLastChar-                                                if isIdent c+        '@':c:_ | TypeApplications `elem` exts+                   -- Operator starting with an '@'+                   && not (isOpSymbol c) -> do+                                                lc <- getLastChar+                                                if isIdent lc                                                   then discard 1 >> return At                                                   else discard 1 >> return TApp 
+ tests/examples/AtOperator.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++data a :+: b = Proxy++foo = id @(Int :+: Int)++_ @> m = m
+ tests/examples/AtOperator.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtOperator.hs.parser.golden view
@@ -0,0 +1,286 @@+ParseOk+  ( Module+      SrcSpanInfo+        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 1 9 1+        , srcInfoPoints =+            [ SrcSpan "tests/examples/AtOperator.hs" 1 1 1 1+            , SrcSpan "tests/examples/AtOperator.hs" 2 1 2 1+            , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/AtOperator.hs" 4 1 4 1+            , SrcSpan "tests/examples/AtOperator.hs" 6 1 6 1+            , SrcSpan "tests/examples/AtOperator.hs" 8 1 8 1+            , SrcSpan "tests/examples/AtOperator.hs" 9 1 9 1+            , SrcSpan "tests/examples/AtOperator.hs" 9 1 9 1+            ]+        }+      Nothing+      [ LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 1 1 34+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtOperator.hs" 1 1 1 13+                , SrcSpan "tests/examples/AtOperator.hs" 1 31 1 34+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 1 14 1 30+                , srcInfoPoints = []+                }+              "TypeApplications"+          ]+      , LanguagePragma+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 2 1 2 31+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtOperator.hs" 2 1 2 13+                , SrcSpan "tests/examples/AtOperator.hs" 2 28 2 31+                ]+            }+          [ Ident+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 2 14 2 27+                , srcInfoPoints = []+                }+              "TypeOperators"+          ]+      ]+      []+      [ DataDecl+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 1 4 21+            , srcInfoPoints =+                [ SrcSpan "tests/examples/AtOperator.hs" 4 14 4 15 ]+            }+          (DataType+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 1 4 5+               , srcInfoPoints = []+               })+          Nothing+          (DHApp+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 13+               , srcInfoPoints = []+               }+             (DHInfix+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 13+                  , srcInfoPoints = []+                  }+                (UnkindedVar+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 7+                     , srcInfoPoints = []+                     }+                   (Ident+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 6 4 7+                        , srcInfoPoints = []+                        }+                      "a"))+                (Symbol+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 8 4 11+                     , srcInfoPoints = []+                     }+                   ":+:"))+             (UnkindedVar+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 12 4 13+                  , srcInfoPoints = []+                  }+                (Ident+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 12 4 13+                     , srcInfoPoints = []+                     }+                   "b")))+          [ QualConDecl+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+                , srcInfoPoints = []+                }+              Nothing+              Nothing+              (ConDecl+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+                   , srcInfoPoints = []+                   }+                 (Ident+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 4 16 4 21+                      , srcInfoPoints = []+                      }+                    "Proxy")+                 [])+          ]+          Nothing+      , PatBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 24+            , srcInfoPoints = []+            }+          (PVar+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 4+               , srcInfoPoints = []+               }+             (Ident+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 1 6 4+                  , srcInfoPoints = []+                  }+                "foo"))+          (UnGuardedRhs+             SrcSpanInfo+               { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 5 6 24+               , srcInfoPoints =+                   [ SrcSpan "tests/examples/AtOperator.hs" 6 5 6 6 ]+               }+             (App+                SrcSpanInfo+                  { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 24+                  , srcInfoPoints = []+                  }+                (Var+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+                     , srcInfoPoints = []+                     }+                   (UnQual+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+                        , srcInfoPoints = []+                        }+                      (Ident+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 7 6 9+                           , srcInfoPoints = []+                           }+                         "id")))+                (TypeApp+                   SrcSpanInfo+                     { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 10 6 24+                     , srcInfoPoints =+                         [ SrcSpan "tests/examples/AtOperator.hs" 6 10 6 11 ]+                     }+                   (TyParen+                      SrcSpanInfo+                        { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 11 6 24+                        , srcInfoPoints =+                            [ SrcSpan "tests/examples/AtOperator.hs" 6 11 6 12+                            , SrcSpan "tests/examples/AtOperator.hs" 6 23 6 24+                            ]+                        }+                      (TyInfix+                         SrcSpanInfo+                           { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 23+                           , srcInfoPoints = []+                           }+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 12 6 15+                                    , srcInfoPoints = []+                                    }+                                  "Int")))+                         (UnQual+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+                              , srcInfoPoints = []+                              }+                            (Symbol+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 16 6 19+                                 , srcInfoPoints = []+                                 }+                               ":+:"))+                         (TyCon+                            SrcSpanInfo+                              { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+                              , srcInfoPoints = []+                              }+                            (UnQual+                               SrcSpanInfo+                                 { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+                                 , srcInfoPoints = []+                                 }+                               (Ident+                                  SrcSpanInfo+                                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 6 20 6 23+                                    , srcInfoPoints = []+                                    }+                                  "Int"))))))))+          Nothing+      , FunBind+          SrcSpanInfo+            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 11+            , srcInfoPoints = []+            }+          [ InfixMatch+              SrcSpanInfo+                { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 11+                , srcInfoPoints = []+                }+              (PWildCard+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 1 8 2+                   , srcInfoPoints = []+                   })+              (Symbol+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 3 8 5+                   , srcInfoPoints = []+                   }+                 "@>")+              [ PVar+                  SrcSpanInfo+                    { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 6 8 7+                    , srcInfoPoints = []+                    }+                  (Ident+                     SrcSpanInfo+                       { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 6 8 7+                       , srcInfoPoints = []+                       }+                     "m")+              ]+              (UnGuardedRhs+                 SrcSpanInfo+                   { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 8 8 11+                   , srcInfoPoints =+                       [ SrcSpan "tests/examples/AtOperator.hs" 8 8 8 9 ]+                   }+                 (Var+                    SrcSpanInfo+                      { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+                      , srcInfoPoints = []+                      }+                    (UnQual+                       SrcSpanInfo+                         { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+                         , srcInfoPoints = []+                         }+                       (Ident+                          SrcSpanInfo+                            { srcInfoSpan = SrcSpan "tests/examples/AtOperator.hs" 8 10 8 11+                            , srcInfoPoints = []+                            }+                          "m"))))+              Nothing+          ]+      ]+  , []+  )
+ tests/examples/AtOperator.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/AtOperator.hs.prettyprinter.golden view
@@ -0,0 +1,6 @@+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++data a :+: b = Proxy+foo = id @(Int :+: Int)+_ @> m = m