on master help sign in
Add hint about program vs programWithFlags

I mess this up a bunch, and it is super hard to figure out what the problem is.

commitfdb21df376243218c151a259692e38c099a8bf44 authorEvan Czaplicki <info@elm-lang.org> dateThu 7 Apr 2016, 20:38 (11 years ago) parentb0501a4
6 files changed+49−7
src/AST/Module/Name.hs+6−1 src/AST/Variable.hs+5 src/Elm/Package.hs+12−2 src/Nitpick/TopLevelTypes.hs+1−1 src/Reporting/Error/Type.hs+24−2 src/Validate.hs+1−1
src/AST/Module/Name.hs+6−1
@@ -18,7 +18,12 @@ data Canonical = Canonical
1818
1919inCore :: Raw -> Canonical
2020inCore 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
2227
2328
2429toString :: Raw -> String
src/AST/Variable.hs+5
@@ -70,6 +70,11 @@ inCore home name =
7070 Canonical (Module (ModuleName.inCore home)) name
7171
7272
73+inHtml :: ModuleName.Raw -> String -> Canonical
74+inHtml home name =
75+ Canonical (Module (ModuleName.inHtml home)) name
76+
77+
7378cmd :: Canonical
7479cmd =
7580 inCore ["Platform","Cmd"] "Cmd"
src/Elm/Package.hs+12−2
@@ -26,11 +26,21 @@ dummyName =
2626 Name "user" "project"
2727
2828
29−coreName :: Name
30−coreName =
29+core :: Name
30+core =
3131 Name "elm-lang" "core"
3232
3333
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+
3444toString :: Name -> String
3545toString name =
3646 user name ++ "/" ++ project name
src/Nitpick/TopLevelTypes.hs+1−1
@@ -119,7 +119,7 @@ vdomNode :: Type.Canonical
119119vdomNode =
120120 let
121121 vdom =
122− ModuleName.Canonical (Pkg.Name "elm-lang" "virtual-dom") ["VirtualDom"]
122+ ModuleName.Canonical Pkg.virtualDom ["VirtualDom"]
123123 in
124124 Type.Type (Var.fromModule vdom "Node")
125125
src/Reporting/Error/Type.hs+24−2
@@ -305,7 +305,7 @@ mismatchToReport localizer (MismatchInfo hint leftType rightType maybeReason) =
305305 ( cmpHint
306306 (Help.capitalize (funcName maybeName) ++ " is expecting the argument to be:")
307307 "But it is:"
308− []
308+ (functionHint maybeName)
309309 )
310310
311311 UnexpectedArg maybeName index _totalArgs region ->
@@ -319,7 +319,9 @@ mismatchToReport localizer (MismatchInfo hint leftType rightType maybeReason) =
319319 ++ Help.ordinalize index ++ " argument to be:"
320320 )
321321 "But it is:"
322− ( if index == 1 then
322+ ( functionHint maybeName
323+ ++
324+ if index == 1 then
323325 []
324326 else
325327 [ "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 =
515517
516518-- BINOP HINTS
517519
520+
518521binopHint :: Var.Canonical -> Type.Canonical -> Type.Canonical -> [String]
519522binopHint op leftType rightType =
520523 let
@@ -540,6 +543,25 @@ binopHint op leftType rightType =
540543
541544
542545
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+
543565-- MISMATCH HELPERS
544566
545567
src/Validate.hs+1−1
@@ -63,7 +63,7 @@ addDefaults
6363 -> ([Module.DefaultImport], [Module.UserImport])
6464addDefaults pkgName imports =
6565 flip (,) imports $
66− if pkgName == Package.coreName then
66+ if pkgName == Package.core then
6767 []
6868
6969 else