<html>#229: Using a nonexistent header file should lead to an error message
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Ian Hinder</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>wontfix</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td></td></tr>
<tr><td style='text-align:right'>     Type:</td><td>enhancement</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>Cactus</td></tr>
</table>

<p>Changes (by Roland Haas):</p>
<p><table>
<tr><td>status:</td><td>wontfix (was new)</td></tr>
</table></p>
<p>If I have the following in my interface.ccl,</p>
<p>USES INCLUDE: vectors.h</p>
<p>but no thorn in my thornlist provides this header file, there is no error at compile time.  Further, if I #include this file in my source file, an empty file is included, which means that again I don't get an error.  The first indication that something is wrong is that the contents of the header file are not available, which makes debugging the problem with the thornlist very confusing.</p>
<p>I propose that the CST should emit a fatal error if one of the thorns tries to use a header file which does not exist.</p>
<p><strong>Keyword:</strong></p>
<p>Comment (by Roland Haas):</p>
<p>As discussed in the ticket, the functionality of <code>USE INCLUDE</code> and <code>USE INCLUDE HEADER</code> functions as documented and relies on not producing errors if no thorn provides the header files. If the content of the file is relied on then the correct way is to <code>REQUIRE</code> a capability of a thorn that promises to provide the header file. This is the same as <code>REQUIRE</code>ing the MPI capability to gain access to <code>mpi.h</code>.</p>
<p>If indeed a separate mechanism mirroring this for include files is desired it should, following the example set by <code>USES FUNCTION</code> and <code>REQUIRES FUNCTION</code>, be called <code>REQUIRES INCLUDE</code> and <code>REQUIRES INCLUDE HEADER</code>.</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/229/using-a-nonexistent-header-file-should'>https://bitbucket.org/einsteintoolkit/tickets/issues/229/using-a-nonexistent-header-file-should</a></p>
</html>