on master help sign in
Add Elm.Utils.isDefinition to solve some problems in elm-repl
commit0537abbefed5ef9221454a4907cd6464015f68ed authorEvan Czaplicki <info@elm-lang.org> dateSun 17 May 2015, 03:33 (11 years ago) parent4a2cdd8
4 files changed+33−5
src/Elm/Utils.hs+26−2 src/Parse/Helpers.hs+2−1 src/Reporting/Error/Syntax.hs+1−1 src/Reporting/Report.hs+4−1
src/Elm/Utils.hs+26−2
@@ -1,8 +1,15 @@
11{-# OPTIONS_GHC -Wall #-}
22{-# LANGUAGE FlexibleContexts #-}
3−module Elm.Utils ((|>), (<|), getAsset, run, unwrappedRun, CommandError(..)) where
3+module Elm.Utils
4+ ( (|>), (<|)
5+ , getAsset
6+ , run, unwrappedRun
7+ , CommandError(..)
8+ , isDeclaration
9+ ) where
410
511import Control.Monad.Except (MonadError, MonadIO, liftIO, throwError)
12+import qualified Data.List as List
613import System.Directory (doesFileExist)
714import System.Environment (getEnv)
815import System.Exit (ExitCode(ExitSuccess, ExitFailure))
@@ -10,7 +17,12 @@ import System.FilePath ((</>))
1017import System.IO.Error (tryIOError)
1118import System.Process (readProcessWithExitCode)
1219
20+import qualified AST.Expression.Source as Source
21+import qualified AST.Pattern as Pattern
1322import qualified Elm.Compiler.Version as Version
23+import qualified Parse.Helpers as Parse
24+import qualified Parse.Expression as Parse
25+import qualified Reporting.Annotation as A
1426
1527
1628{-| Forward function application `x |> f == f x`. This function is useful
@@ -118,4 +130,16 @@ errorNotFound name =
118130 , ""
119131 , "If it seems like a more complex issue, please report it here:"
120132 , " <https://github.com/elm-lang/elm-platform/issues>"
121− ]
133+ ]
134+
135+
136+-- DECL CHECKER
137+
138+isDeclaration :: String -> Maybe String
139+isDeclaration string =
140+ case Parse.iParse Parse.definition string of
141+ Right (A.A _ (Source.Definition pattern _)) ->
142+ Just (List.intercalate "$" (Pattern.boundVarList pattern))
143+
144+ _ ->
145+ Nothing
src/Parse/Helpers.hs+2−1
@@ -18,7 +18,6 @@ import qualified AST.Expression.Source as Source
1818import qualified AST.Helpers as Help
1919import qualified AST.Literal as L
2020import qualified AST.Variable as Variable
21−import Elm.Utils ((|>))
2221import qualified Reporting.Annotation as A
2322import qualified Reporting.Error.Syntax as Syntax
2423import qualified Reporting.Region as R
@@ -504,6 +503,8 @@ glSource src =
504503 |> foldr addGLinput emptyDecls
505504 |> Right
506505 where
506+ (|>) = flip ($)
507+
507508 emptyDecls = L.GLShaderTipe Map.empty Map.empty Map.empty
508509
509510 addGLinput (qual,tipe,name) glDecls =
src/Reporting/Error/Syntax.hs+1−1
@@ -9,7 +9,6 @@ import Text.PrettyPrint ((<+>))
99
1010import qualified AST.Helpers as Help
1111import qualified AST.Type as Type
12−import Elm.Utils ((|>))
1312import qualified Reporting.PrettyPrint as P
1413import qualified Reporting.Report as Report
1514
@@ -126,6 +125,7 @@ toReport err =
126125 |> P.nest 4
127126 ]
128127 where
128+ (|>) = flip ($)
129129 vars = map P.text (givenVars ++ tvar : tvars)
130130 toDoc (ctor, args) =
131131 P.text ctor <+> P.hsep (map (P.pretty True) args)
src/Reporting/Report.hs+4−1
@@ -10,7 +10,6 @@ module Reporting.Report
1010import Data.Aeson ((.=))
1111import qualified Data.Aeson.Types as Json
1212
13−import Elm.Utils ((|>))
1413import qualified Reporting.Region as R
1514
1615
@@ -68,6 +67,8 @@ grabRegion maybeSubRegion (R.Region start end) source =
6867 (R.Position startLine startColumn) = start
6968 (R.Position endLine endColumn) = end
7069
70+ (|>) = flip ($)
71+
7172 relevantLines =
7273 lines source
7374 |> drop (startLine - 1)
@@ -138,6 +139,8 @@ singleLineRegion lineNum sourceLine (start, innerStart, innerEnd, end) =
138139 replicate (innerStart - 1) ' '
139140 ++ replicate (max 1 (innerEnd - innerStart)) '^'
140141
142+ (|>) = flip ($)
143+
141144 trimmedSourceLine =
142145 sourceLine
143146 |> drop (start - 1)