]> granicus.if.org Git - clang/commit
Introduce support for a simple module import declaration, which
authorDouglas Gregor <dgregor@apple.com>
Fri, 26 Aug 2011 23:56:07 +0000 (23:56 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 26 Aug 2011 23:56:07 +0000 (23:56 +0000)
commit6aa52ec6b969faabf3764baf79d89810b8249a7e
treed0921823c1cb331fe29e8cb31b78e9719e2126fb
parentd37c67b8f26ffe31e7f7292f26ab39cee78151d8
Introduce support for a simple module import declaration, which
loads the named module. The syntax itself is intentionally hideous and
will be replaced at some later point with something more
palatable. For now, we're focusing on the semantics:
  - Module imports are handled first by the preprocessor (to get macro
  definitions) and then the same tokens are also handled by the parser
  (to get declarations). If both happen (as in normal compilation),
  the second one is redundant, because we currently have no way to
  hide macros or declarations when loading a module. Chris gets credit
  for this mad-but-workable scheme.
  - The Preprocessor now holds on to a reference to a module loader,
  which is responsible for loading named modules. CompilerInstance is
  the only important module loader: it now knows how to create and
  wire up an AST reader on demand to actually perform the module load.
  - We search for modules in the include path, using the module name
  with the suffix ".pcm" (precompiled module) for the file name. This
  is a temporary hack; we hope to improve the situation in the
  future.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138679 91177308-0d34-0410-b5e6-96231b3b80d8
25 files changed:
include/clang/Basic/DiagnosticCommonKinds.td
include/clang/Basic/DiagnosticParseKinds.td
include/clang/Basic/IdentifierTable.h
include/clang/Basic/TokenKinds.def
include/clang/Frontend/ASTUnit.h
include/clang/Frontend/CompilerInstance.h
include/clang/Lex/ModuleLoader.h
include/clang/Lex/Preprocessor.h
include/clang/Parse/Parser.h
include/clang/Sema/Sema.h
lib/Frontend/ASTUnit.cpp
lib/Frontend/CompilerInstance.cpp
lib/Lex/Lexer.cpp
lib/Lex/Preprocessor.cpp
lib/Parse/Parser.cpp
lib/Sema/SemaDecl.cpp
test/Misc/warning-flags.c
test/Modules/Inputs/diamond_bottom.h
test/Modules/Inputs/diamond_left.h
test/Modules/Inputs/diamond_right.h
test/Modules/Inputs/load_failure.h [new file with mode: 0644]
test/Modules/diamond.c
test/Modules/load_failure.c [new file with mode: 0644]
test/Modules/lookup.cpp
test/Modules/lookup.m