on master help sign in
Throw proper parse errors, stop using `error`
082e6a2Evan Czaplicki
compiler/Parse/Declaration.hs+5−5
@@ -72,8 +72,8 @@ exportEvent = do
72 T.Data "Signal" [t] ->
72 T.Data "Signal" [t] ->
73 case isExportable t of
73 case isExportable t of
74 Nothing -> return (ExportEvent eventName elmVar tipe)
74 Nothing -> return (ExportEvent eventName elmVar tipe)
75− Just err -> error err
75+ Just err -> fail err
76− _ -> error "When importing foreign events, the imported value must have type Signal."
76+ _ -> fail "When importing foreign events, the imported value must have type Signal."
77
77
78importEvent :: IParser (Declaration t v)
78importEvent :: IParser (Declaration t v)
79importEvent = do
79importEvent = do
@@ -89,14 +89,14 @@ importEvent = do
89 T.Data "Signal" [t] ->
89 T.Data "Signal" [t] ->
90 case isExportable t of
90 case isExportable t of
91 Nothing -> return (ImportEvent eventName baseValue elmVar tipe)
91 Nothing -> return (ImportEvent eventName baseValue elmVar tipe)
92− Just err -> error err
92+ Just err -> fail err
93− _ -> error "When importing foreign events, the imported value must have type Signal."
93+ _ -> fail "When importing foreign events, the imported value must have type Signal."
94
94
95jsVar :: IParser String
95jsVar :: IParser String
96jsVar = betwixt '"' '"' $ do
96jsVar = betwixt '"' '"' $ do
97 v <- (:) <$> (letter <|> char '_') <*> many (alphaNum <|> char '_')
97 v <- (:) <$> (letter <|> char '_') <*> many (alphaNum <|> char '_')
98 if Set.notMember v jsReserveds then return v else
98 if Set.notMember v jsReserveds then return v else
99− error $ "'" ++ v ++
99+ fail $ "'" ++ v ++
100 "' is not a good name for a importing or exporting JS values."
100 "' is not a good name for a importing or exporting JS values."
101
101
102isExportable tipe =
102isExportable tipe =