<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 6 June 2017 at 23:21, Boris Kolpackov via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I found this surprising behavior of Clang's Modules-TS implementation:<br>
<br>
$ clang-5.0 --version<br>
clang version 5.0.0-svn304373-1~exp1 (trunk)<br>
<br>
$ cat <<EOF >test.cxx<br>
import foo<br>
EOF<br>
<br>
$ clang++-5.0 -std=c++1z -fmodules-ts -E test.cxx<br>
test.cxx:1:8: fatal error: module 'foo' not found<br>
<br>
Seeing that modules is a language-level construct, it's not clear why<br>
they must be resolvable during preprocessing. Or am I missing something<br>
subtle here?</blockquote><div><br></div><div>Clang supports mixing Modules TS modules with header modules. Header modules support exporting macros. Therefore, because "import foo;" might import a module that exports a macro, it must be available during preprocessing.</div></div></div></div>