[GHC] #10333: hs-boot modification doesn't induce recompilation

GHC ghc-devs at haskell.org
Mon Sep 21 18:52:49 UTC 2015


#10333: hs-boot modification doesn't induce recompilation
-------------------------------------+-------------------------------------
        Reporter:  ezyang            |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.11
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  GHC accepts       |  Unknown/Multiple
  invalid program                    |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by Edward Z. Yang <ezyang@…>):

 In [changeset:"06d46b1e4507e09eb2a7a04998a92610c8dc6277/ghc"
 06d46b1e/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="06d46b1e4507e09eb2a7a04998a92610c8dc6277"
 Unify hsig and hs-boot; add preliminary "hs-boot" merging.

 This patch drops the file level distinction between hs-boot and hsig;
 we figure out which one we are compiling based on whether or not there
 is a corresponding hs file lying around.

 To make the "import A" syntax continue to work for bare hs-boot
 files, we also introduce hs-boot merging, which takes an A.hi-boot
 and converts it to an A.hi when there is no A.hs file in scope.
 This will be generalized in Backpack to merge multiple A.hi files
 together;
 which means we can jettison the "load multiple interface files"
 functionality.

 This works automatically for --make, but for one-shot compilation
 we need a new mode: ghc --merge-requirements A will generate an A.hi/A.o
 from a local A.hi-boot file; Backpack will extend this mechanism further.

 Has Haddock submodule update to deal with change in msHsFilePath behavior.

     - This commit drops support for the hsig extension. Can
       we support it?  It's annoying because the finder code is
       written with the assumption that where there's an hs-boot
       file, there's always an hs file too.  To support hsig, you'd
       have to probe two locations.  Easier to just not support it.

     - #10333 affects us, modifying an hs-boot still doesn't trigger
       recomp.

     - See compiler/main/Finder.hs: this diff is very skeevy, but
       it seems to work.

     - This code cunningly doesn't drop hs-boot files from the
       "drop hs-boot files" module graph, if they don't have a
       corresponding hs file.  I have no idea if this actually is useful.

 Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

 Test Plan: validate

 Reviewers: simonpj, austin, bgamari, spinda

 Subscribers: thomie

 Differential Revision: https://phabricator.haskell.org/D1098
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10333#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list