<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>MkIface</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_MkIface.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">MkIface</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Module for constructing <code>ModIface</code> values (interface files), writing them to disk and comparing two versions to see if recompilation is required. </p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:mkUsedNames">mkUsedNames</a> :: <a href="TcRnTypes.html#t:TcGblEnv">TcGblEnv</a> -> <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:mkDependencies">mkDependencies</a> :: <a href="TcRnTypes.html#t:TcGblEnv">TcGblEnv</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> <a href="HscTypes.html#t:Dependencies">Dependencies</a></li><li class="src short"><a href="#v:mkIface">mkIface</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -> <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Fingerprint.html#t:Fingerprint">Fingerprint</a> -> <a href="HscTypes.html#t:ModDetails">ModDetails</a> -> <a href="HscTypes.html#t:ModGuts">ModGuts</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (<a href="ErrUtils.html#t:Messages">Messages</a>, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="HscTypes.html#t:ModIface">ModIface</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>))</li><li class="src short"><a href="#v:mkIfaceTc">mkIfaceTc</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -> <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Fingerprint.html#t:Fingerprint">Fingerprint</a> -> <a href="DynFlags.html#t:SafeHaskellMode">SafeHaskellMode</a> -> <a href="HscTypes.html#t:ModDetails">ModDetails</a> -> <a href="TcRnTypes.html#t:TcGblEnv">TcGblEnv</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (<a href="ErrUtils.html#t:Messages">Messages</a>, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="HscTypes.html#t:ModIface">ModIface</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>))</li><li class="src short"><a href="#v:writeIfaceFile">writeIfaceFile</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -> <a href="Module.html#t:ModLocation">ModLocation</a> -> <a href="HscTypes.html#t:ModIface">ModIface</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><a href="#v:checkOldIface">checkOldIface</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -> <a href="HscTypes.html#t:ModSummary">ModSummary</a> -> <a href="HscTypes.html#t:SourceModified">SourceModified</a> -> <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HscTypes.html#t:ModIface">ModIface</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (RecompileRequired, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HscTypes.html#t:ModIface">ModIface</a>)</li><li class="src short"><a href="#v:tyThingToIfaceDecl">tyThingToIfaceDecl</a> :: <a href="Type.html#t:TyThing">TyThing</a> -> <a href="IfaceSyn.html#t:IfaceDecl">IfaceDecl</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:mkUsedNames" class="def">mkUsedNames</a> :: <a href="TcRnTypes.html#t:TcGblEnv">TcGblEnv</a> -> <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:mkDependencies" class="def">mkDependencies</a> :: <a href="TcRnTypes.html#t:TcGblEnv">TcGblEnv</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> <a href="HscTypes.html#t:Dependencies">Dependencies</a></p><div class="doc"><p>Extract information from the rename and typecheck phases to produce a dependencies information for the module being compiled. </p></div></div><div class="top"><p class="src"><a name="v:mkIface" class="def">mkIface</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -> <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Fingerprint.html#t:Fingerprint">Fingerprint</a> -> <a href="HscTypes.html#t:ModDetails">ModDetails</a> -> <a href="HscTypes.html#t:ModGuts">ModGuts</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (<a href="ErrUtils.html#t:Messages">Messages</a>, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="HscTypes.html#t:ModIface">ModIface</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>))</p></div><div class="top"><p class="src"><a name="v:mkIfaceTc" class="def">mkIfaceTc</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -> <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Fingerprint.html#t:Fingerprint">Fingerprint</a> -> <a href="DynFlags.html#t:SafeHaskellMode">SafeHaskellMode</a> -> <a href="HscTypes.html#t:ModDetails">ModDetails</a> -> <a href="TcRnTypes.html#t:TcGblEnv">TcGblEnv</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (<a href="ErrUtils.html#t:Messages">Messages</a>, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="HscTypes.html#t:ModIface">ModIface</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>))</p><div class="doc"><p>make an interface from the results of typechecking only. Useful for non-optimising compilation, or where we aren't generating any object code at all (<code><a href="DynFlags.html#v:HscNothing">HscNothing</a></code>). </p></div></div><div class="top"><p class="src"><a name="v:writeIfaceFile" class="def">writeIfaceFile</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -> <a href="Module.html#t:ModLocation">ModLocation</a> -> <a href="HscTypes.html#t:ModIface">ModIface</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> ()</p></div><div class="top"><p class="src"><a name="v:checkOldIface" class="def">checkOldIface</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -> <a href="HscTypes.html#t:ModSummary">ModSummary</a> -> <a href="HscTypes.html#t:SourceModified">SourceModified</a> -> <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HscTypes.html#t:ModIface">ModIface</a> -> <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (RecompileRequired, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HscTypes.html#t:ModIface">ModIface</a>)</p><div class="doc"><p>Top level function to check if the version of an old interface file is equivalent to the current source file the user asked us to compile. If the same, we can avoid recompilation. We return a tuple where the first element is a bool saying if we should recompile the object file and the second is maybe the interface file, where Nothng means to rebuild the interface file not use the exisitng one. </p></div></div><div class="top"><p class="src"><a name="v:tyThingToIfaceDecl" class="def">tyThingToIfaceDecl</a> :: <a href="Type.html#t:TyThing">TyThing</a> -> <a href="IfaceSyn.html#t:IfaceDecl">IfaceDecl</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>