@@ -1,8 +1,15 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE FlexibleContexts #-}
2{-# LANGUAGE FlexibleContexts #-}
3−module Elm.Utils ((|>), (<|), getAsset, run, unwrappedRun, CommandError(..)) where
6+ , run, unwrappedRun
5import Control.Monad.Except (MonadError, MonadIO, liftIO, throwError)
11import Control.Monad.Except (MonadError, MonadIO, liftIO, throwError)
12+import qualified Data.List as List
6import System.Directory (doesFileExist)
13import System.Directory (doesFileExist)
7import System.Environment (getEnv)
14import System.Environment (getEnv)
8import System.Exit (ExitCode(ExitSuccess, ExitFailure))
15import System.Exit (ExitCode(ExitSuccess, ExitFailure))
@@ -10,7 +17,12 @@ import System.FilePath ((</>))
10import System.IO.Error (tryIOError)
17import System.IO.Error (tryIOError)
11import System.Process (readProcessWithExitCode)
18import System.Process (readProcessWithExitCode)
20+import qualified AST.Expression.Source as Source
21+import qualified AST.Pattern as Pattern
13import qualified Elm.Compiler.Version as Version
22import 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
16{-| Forward function application `x |> f == f x`. This function is useful
28{-| Forward function application `x |> f == f x`. This function is useful
@@ -118,4 +130,16 @@ errorNotFound name =
119 , "If it seems like a more complex issue, please report it here:"
131 , "If it seems like a more complex issue, please report it here:"
120 , " <https://github.com/elm-lang/elm-platform/issues>"
132 , " <https://github.com/elm-lang/elm-platform/issues>"
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))