[GHC] #15858: Enabling a pure Plugin with existing build output never triggers recompilation
GHC
ghc-devs at haskell.org
Sun Nov 4 23:30:06 UTC 2018
#15858: Enabling a pure Plugin with existing build output never triggers
recompilation
-------------------------------------+-------------------------------------
Reporter: DanielG | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.7
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: Other
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Consider the following compilation session:
{{{
$ ghc -fplugin ImpurePlugin Foo.hs
<Compiles Foo.hs>
$ ghc Foo.hs
}}}
where ImpurePlugin is a `Plugin` which returns `ForceRecompile` in
`pluginRecompile`.
The second invocation of GHC doesn't recompile even though `ImpurePlugin`
could have changed the generated build output which would now be out of
date.
The same thing happens when switching from an impure/fingerprinted plugin
to a pure plugin.
The problem is that `pluginRecompileToRecompileRequired` just assumes no
compilation is required when the current plugin stack is pure, that is
either only pure plugins or no plugins at all are registered:
{{{
pluginRecompileToRecompileRequired :: Fingerprint -> PluginRecompile ->
RecompileRequired
pluginRecompileToRecompileRequired old_fp pr =
case pr of
NoForceRecompile -> UpToDate
ForceRecompile -> RecompBecause "Plugin forced recompilation"
MaybeRecompile fp -> if fp == old_fp then UpToDate
}}}
note the `UpToDate` in the `NoForceRecompile` case.
Furthermore I would argue that even switching from having no plugin at all
active to having a pure plugin active should trigger recompilation, even
though the plugin might be pure it could still choose to affect the build
output after all.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15858>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list