-
Notifications
You must be signed in to change notification settings - Fork 10.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[NFC] [C++20] [Modules] Refactor Sema::isModuleUnitOfCurrentTU into
Decl::isInAnotherModuleUnit Refactor `Sema::isModuleUnitOfCurrentTU` to `Decl::isInAnotherModuleUnit` to make code simpler a little bit. Note that although this patch introduces a FIXME, this is an existing issue and this patch just tries to describe it explicitly.
- Loading branch information
1 parent
acd84fb
commit 52bc4b1
Showing
11 changed files
with
120 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// RUN: rm -rf %t | ||
// RUN: mkdir %t | ||
// RUN: split-file %s %t | ||
// | ||
// RUN: %clang_cc1 -x c++ -std=c++20 -fmodules -fmodule-name=foo %t/foo.map -emit-module -o %t/foo.pcm | ||
// RUN: %clang_cc1 -x c++ -std=c++20 -fmodules -fmodules-cache-path=%t \ | ||
// RUN: -fmodule-file=%t/foo.pcm %t/use.cpp -verify -fsyntax-only | ||
|
||
//--- foo.map | ||
module "foo" { | ||
export * | ||
header "foo.h" | ||
} | ||
|
||
//--- foo.h | ||
template<class T1, int V = 0> | ||
class A; | ||
|
||
template <typename T> | ||
class templ_params {}; | ||
|
||
template<class T1, template <typename> typename T2 = templ_params> | ||
class B; | ||
|
||
template<class T1, class T2 = int> | ||
class C; | ||
|
||
//--- use.cpp | ||
#include "foo.h" | ||
template<class T1, int V = 1> // expected-error {{template parameter default argument is inconsistent with previous definition}} | ||
class A; // expected-note@foo.h:1 {{previous default template argument defined in module foo}} | ||
|
||
template <typename T> | ||
class templ_params2 {}; | ||
|
||
template<class T1, template <typename> typename T2 = templ_params2> // expected-error {{template parameter default argument is inconsistent with previous definition}} | ||
class B; // expected-note@foo.h:7 {{previous default template argument defined in module foo}} | ||
|
||
template<class T1, class T2 = double> // expected-error {{template parameter default argument is inconsistent with previous definition}} | ||
class C; // expected-note@foo.h:10 {{previous default template argument defined in module foo}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// RUN: rm -rf %t | ||
// RUN: mkdir %t | ||
// RUN: split-file %s %t | ||
// | ||
// RUN: %clang_cc1 -std=c++20 -fmodules -fmodule-name=mod -xc++ -emit-module %t/mod.cppmap -o %t/mod.pcm | ||
// RUN: %clang_cc1 -std=c++20 -fmodules -fmodule-file=%t/mod.pcm -fsyntax-only %t/use.cc -verify | ||
|
||
//--- mod.cppmap | ||
module "mod" { | ||
export * | ||
header "mod.h" | ||
} | ||
|
||
//--- mod.h | ||
#ifndef MOD | ||
#define MOD | ||
#include "templ.h" | ||
#endif | ||
|
||
//--- templ.h | ||
#ifndef TEMPL | ||
#define TEMPL | ||
template <typename t1 = void> | ||
inline constexpr bool inl = false; | ||
#endif | ||
|
||
//--- use.cc | ||
// expected-no-diagnostics | ||
#include "templ.h" | ||
#include "mod.h" |