on master help sign in
Resolve TODO for floats in pattern matches
ac7f11fEvan Czaplicki
src/Parse/Pattern.hs+2−1
@@ -12,6 +12,7 @@ import qualified Data.List as List
12import qualified AST.Source as Src
12import qualified AST.Source as Src
13import qualified Elm.Name as N
13import qualified Elm.Name as N
14import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
14import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
15+import qualified Parse.Primitives as P
15import qualified Parse.Primitives.Keyword as Keyword
16import qualified Parse.Primitives.Keyword as Keyword
16import qualified Parse.Primitives.Number as Number
17import qualified Parse.Primitives.Number as Number
17import qualified Parse.Primitives.Symbol as Symbol
18import qualified Parse.Primitives.Symbol as Symbol
@@ -69,7 +70,7 @@ termHelp start =
69 return (A.at start end (Src.PInt int))
70 return (A.at start end (Src.PInt int))
70
71
71 Number.Float _ ->
72 Number.Float _ ->
72− error "TODO floats are not allowed in pattern matches"
73+ P.noFloatsAllowedInPatterns
73 ,
74 ,
74 do str <- Utf8.string
75 do str <- Utf8.string
75 end <- getPosition
76 end <- getPosition
src/Parse/Primitives.hs+7
@@ -5,6 +5,7 @@ module Parse.Primitives
5 , I.oneOf
5 , I.oneOf
6 , run, runAt
6 , run, runAt
7 , try, deadend, hint, endOfFile
7 , try, deadend, hint, endOfFile
8+ , noFloatsAllowedInPatterns
8 , getPosition, getCol
9 , getPosition, getCol
9 , pushContext, popContext
10 , pushContext, popContext
10 , getIndent, setIndent
11 , getIndent, setIndent
@@ -115,6 +116,12 @@ endOfFile =
115 eok () state noError
116 eok () state noError
116
117
117
118
119+noFloatsAllowedInPatterns :: Parser a
120+noFloatsAllowedInPatterns =
121+ Parser $ \(State _ _ _ _ row col _) _ cerr _ _ ->
122+ cerr (E.ParseError row col E.FloatInPattern)
123+
124+
118
125
119-- STATE
126-- STATE
120
127