Mercurial > hg > CbC > CbC_llvm
view clang/test/Modules/merge-concepts-redefinition-error.cpp @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | |
children |
line wrap: on
line source
// RUN: rm -rf %t // RUN: mkdir %t // RUN: split-file %s %t // // RUN: %clang_cc1 -xc++ -std=c++20 -fmodules -fmodule-name=library \ // RUN: -emit-module %t/modules.map \ // RUN: -o %t/module.pcm \ // RUN: -verify // //--- modules.map module "library" { export * module "concepts" { export * header "concepts.h" } module "conflicting" { export * header "conflicting.h" } } //--- concepts.h #ifndef CONCEPTS_H_ #define CONCEPTS_H_ template <class T> concept ConflictingConcept = true; template <class T, class U> concept same_as = __is_same(T, U); template<class T> concept truec = true; int var; #endif // SAMEAS_CONCEPTS_H //--- conflicting.h #ifndef CONFLICTING_H #define CONFLICTING_H #include "concepts.h" template <class T, class U = int> concept ConflictingConcept = true; // expected-error {{redefinition of concept 'ConflictingConcept' with different template}} // expected-note@* {{previous definition}} int same_as; // expected-error {{redefinition of 'same_as' as different kind of symbol}} // expected-note@* {{previous definition}} template<class T> concept var = false; // expected-error {{redefinition of 'var' as different kind of symbol}} // expected-note@* {{previous definition}} template<class T> concept truec = true; // expected-error {{redefinition of 'truec'}} // expected-note@* {{previous definition}} #endif // CONFLICTING_H