xref: /llvm-project/clang/test/ASTMerge/namespace/test.cpp (revision dc2f5f9ff81dbc4f963adf023fadea3404d084e5)
10333dd95SReid Kleckner // RUN: %clang_cc1 -emit-pch -std=c++1z -o %t.1.ast %S/Inputs/namespace1.cpp
20333dd95SReid Kleckner // RUN: %clang_cc1 -emit-pch -std=c++1z -o %t.2.ast %S/Inputs/namespace2.cpp
3*dc2f5f9fSReid Kleckner // RUN: %clang_cc1 -std=c++1z -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
40333dd95SReid Kleckner 
50333dd95SReid Kleckner static_assert(TestAliasName::z == 4);
60333dd95SReid Kleckner static_assert(ContainsInline::z == 10);
70333dd95SReid Kleckner 
testImport()80333dd95SReid Kleckner void testImport() {
90333dd95SReid Kleckner   typedef TestUnresolvedTypenameAndValueDecls::Derived<int> Imported;
100333dd95SReid Kleckner   Imported a; // Successful instantiation
110333dd95SReid Kleckner   static_assert(sizeof(Imported::foo) == sizeof(int));
120333dd95SReid Kleckner   static_assert(sizeof(TestUnresolvedTypenameAndValueDecls::Derived<double>::NewUnresolvedUsingType) == sizeof(double));
130333dd95SReid Kleckner }
140333dd95SReid Kleckner 
150333dd95SReid Kleckner 
162423b7dfSReid Kleckner // CHECK: namespace2.cpp:16:17: warning: external variable 'z' declared with incompatible types in different translation units ('double' vs. 'float')
170333dd95SReid Kleckner // CHECK: namespace1.cpp:16:16: note: declared here with type 'float'
18