As a consequence, a problem with the compiler not being able to see
imported names if they're shadowed by a guard binder is also solved.
import Data.Foldable (fold) import Data.Maybe (Maybe(..)) import Data.Monoid.Additive (Additive(..)) test :: Maybe Int -> Int test = case _ of m | Just fold <- m -> fold -- Previously would complain about `fold` being undefined | otherwise -> case fold  of Additive x -> x
Guardhandler for the
everywhereWithContextOnValuesMtraversal. (#4385 by @PureFunctor)
This is a limited implementation of common subexpression elimination for
expressions created by the compiler in the process of creating and using
typeclass dictionaries. Users can expect code that heavily uses typeclasses
Common subexpression elimination is not applied to any expressions explicitly
written by users. If you want those floated to a higher scope, you have to do
One or more shebang line are only allowed as the first lines of a file
#! a shebang line #! another shebang line -- | module doc comment -- other comment module MyModule where #! Using a shebang here will fail to parse foo :: String foo = ""
purescript.cabalso that the PureScript compiler is built with the
enabled by default.
This fixes the tests for the graph and source map outputs, as the
ordering is inconsistent between
This change makes it so that
Qualifiednames can now be qualified by either
ModuleNamefor module-level declarations or the starting
bindings introduced locally. This makes disambiguation between references to
local bindings much easier in AST-driven analysis.