@@ -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