on master help sign in
share code more aggressively and move towards better parse errors
44ee98eEvan Czaplicki
src/Parse/Declaration.hs+7−8
@@ -24,19 +24,18 @@ typeDecl =
24 do reserved "type" <?> "type declaration"
24 do reserved "type" <?> "type declaration"
25 forcedWS
25 forcedWS
26 isAlias <- optionMaybe (string "alias" >> forcedWS)
26 isAlias <- optionMaybe (string "alias" >> forcedWS)
27+
28+ name <- capVar
29+ args <- spacePrefix lowVar
30+ padded equals
31+
27 case isAlias of
32 case isAlias of
28 Just _ ->
33 Just _ ->
29− do name <- capVar
30− args <- spacePrefix lowVar
31− padded equals
32− tipe <- Type.expr
34+ do tipe <- Type.expr <?> "type"
33 return (D.TypeAlias name args tipe)
35 return (D.TypeAlias name args tipe)
34
36
35 Nothing ->
37 Nothing ->
36− do name <- capVar <?> "name of data-type"
37− args <- spacePrefix lowVar
38− padded equals
39− tcs <- pipeSep1 Type.constructor
38+ do tcs <- pipeSep1 Type.constructor <?> "constructor for a union type"
40 return $ D.Datatype name args tcs
39 return $ D.Datatype name args tcs
41
40
42
41