[Modules] Add 'no_undeclared_includes' module map attribute
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Fri, 21 Oct 2016 01:41:56 +0000 (01:41 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Fri, 21 Oct 2016 01:41:56 +0000 (01:41 +0000)
commited84df008f609f7245871a9b6d00b57cb19410aa
treef1023c080423e162cdcdc393264e04ad853ce7b0
parentd15477b09d3142b4301f6e7bc8835ec04d639f59
[Modules] Add 'no_undeclared_includes' module map attribute

The 'no_undeclared_includes' attribute should be used in a module to
tell that only non-modular headers and headers from used modules are
accepted.

The main motivation behind this is to prevent dep cycles between system
libraries (such as darwin) and libc++.

Patch by Richard Smith!

llvm-svn: 284797
28 files changed:
clang/docs/Modules.rst
clang/include/clang/Basic/Module.h
clang/include/clang/Lex/HeaderSearch.h
clang/include/clang/Lex/ModuleMap.h
clang/lib/Basic/Module.cpp
clang/lib/Lex/HeaderSearch.cpp
clang/lib/Lex/ModuleMap.cpp
clang/test/Modules/Inputs/System/usr/include/stdbool.h
clang/test/Modules/Inputs/libc-libcxx/include/c++/math.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/include/c++/module.modulemap [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/include/c++/stdlib.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/include/math.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/include/module.modulemap [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/include/stdlib.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/__config [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/math.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/module.modulemap [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stddef.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stdio.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/c++/v1/stdlib.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/math.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/module.modulemap [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/stddef.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/stdint.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/stdio.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/stdlib.h [new file with mode: 0644]
clang/test/Modules/Inputs/libc-libcxx/sysroot/usr/include/util.h [new file with mode: 0644]
clang/test/Modules/libc-libcxx.cpp [new file with mode: 0644]