on master help sign in
Add hint about program vs programWithFlags
fdb21dfEvan Czaplicki
src/AST/Module/Name.hs+6−1
@@ -18,7 +18,12 @@ data Canonical = Canonical
18
18
19inCore :: Raw -> Canonical
19inCore :: Raw -> Canonical
20inCore raw =
20inCore raw =
21− Canonical Package.coreName raw
21+ Canonical Package.core raw
22+
23+
24+inHtml :: Raw -> Canonical
25+inHtml raw =
26+ Canonical Package.html raw
22
27
23
28
24toString :: Raw -> String
29toString :: Raw -> String
src/AST/Variable.hs+5
@@ -70,6 +70,11 @@ inCore home name =
70 Canonical (Module (ModuleName.inCore home)) name
70 Canonical (Module (ModuleName.inCore home)) name
71
71
72
72
73+inHtml :: ModuleName.Raw -> String -> Canonical
74+inHtml home name =
75+ Canonical (Module (ModuleName.inHtml home)) name
76+
77+
73cmd :: Canonical
78cmd :: Canonical
74cmd =
79cmd =
75 inCore ["Platform","Cmd"] "Cmd"
80 inCore ["Platform","Cmd"] "Cmd"
src/Elm/Package.hs+12−2
@@ -26,11 +26,21 @@ dummyName =
26 Name "user" "project"
26 Name "user" "project"
27
27
28
28
29−coreName :: Name
29+core :: Name
30−coreName =
30+core =
31 Name "elm-lang" "core"
31 Name "elm-lang" "core"
32
32
33
33
34+virtualDom :: Name
35+virtualDom =
36+ Name "elm-lang" "virtual-dom"
37+
38+
39+html :: Name
40+html =
41+ Name "elm-lang" "html"
42+
43+
34toString :: Name -> String
44toString :: Name -> String
35toString name =
45toString name =
36 user name ++ "/" ++ project name
46 user name ++ "/" ++ project name
src/Nitpick/TopLevelTypes.hs+1−1
@@ -119,7 +119,7 @@ vdomNode :: Type.Canonical
119vdomNode =
119vdomNode =
120 let
120 let
121 vdom =
121 vdom =
122− ModuleName.Canonical (Pkg.Name "elm-lang" "virtual-dom") ["VirtualDom"]
122+ ModuleName.Canonical Pkg.virtualDom ["VirtualDom"]
123 in
123 in
124 Type.Type (Var.fromModule vdom "Node")
124 Type.Type (Var.fromModule vdom "Node")
125
125
src/Reporting/Error/Type.hs+24−2
@@ -305,7 +305,7 @@ mismatchToReport localizer (MismatchInfo hint leftType rightType maybeReason) =
305 ( cmpHint
305 ( cmpHint
306 (Help.capitalize (funcName maybeName) ++ " is expecting the argument to be:")
306 (Help.capitalize (funcName maybeName) ++ " is expecting the argument to be:")
307 "But it is:"
307 "But it is:"
308− []
308+ (functionHint maybeName)
309 )
309 )
310
310
311 UnexpectedArg maybeName index _totalArgs region ->
311 UnexpectedArg maybeName index _totalArgs region ->
@@ -319,7 +319,9 @@ mismatchToReport localizer (MismatchInfo hint leftType rightType maybeReason) =
319 ++ Help.ordinalize index ++ " argument to be:"
319 ++ Help.ordinalize index ++ " argument to be:"
320 )
320 )
321 "But it is:"
321 "But it is:"
322+ ( functionHint maybeName
323+ ++
322− ( if index == 1 then
324+ if index == 1 then
323 []
325 []
324 else
326 else
325 [ "I always figure out the type of arguments from left to right. If an argument\
327 [ "I always figure out the type of arguments from left to right. If an argument\
@@ -515,6 +517,7 @@ comparisonHint localizer leftType rightType leftWords rightWords finalHints =
515
517
516-- BINOP HINTS
518-- BINOP HINTS
517
519
520+
518binopHint :: Var.Canonical -> Type.Canonical -> Type.Canonical -> [String]
521binopHint :: Var.Canonical -> Type.Canonical -> Type.Canonical -> [String]
519binopHint op leftType rightType =
522binopHint op leftType rightType =
520 let
523 let
@@ -540,6 +543,25 @@ binopHint op leftType rightType =
540
543
541
544
542
545
546+-- FUNCTION HINTS
547+
548+
549+functionHint :: Maybe Var.Canonical -> [String]
550+functionHint maybeName =
551+ case maybeName of
552+ Nothing ->
553+ []
554+
555+ Just name ->
556+ if Var.inHtml ["Html","App"] "program" == name then
557+ [ "Does your program have flags? Maybe you want `programWithFlags` instead."
558+ ]
559+
560+ else
561+ []
562+
563+
564+
543-- MISMATCH HELPERS
565-- MISMATCH HELPERS
544
566
545
567
src/Validate.hs+1−1
@@ -63,7 +63,7 @@ addDefaults
63 -> ([Module.DefaultImport], [Module.UserImport])
63 -> ([Module.DefaultImport], [Module.UserImport])
64addDefaults pkgName imports =
64addDefaults pkgName imports =
65 flip (,) imports $
65 flip (,) imports $
66− if pkgName == Package.coreName then
66+ if pkgName == Package.core then
67 []
67 []
68
68
69 else
69 else