annotate clang/test/Modules/redundant-template-default-arg3.cpp @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
1 // RUN: rm -rf %t
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
2 // RUN: mkdir %t
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
3 // RUN: split-file %s %t
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
4 //
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
5 // RUN: %clang_cc1 -std=c++20 %t/foo.cppm -I%t -emit-module-interface -o %t/foo.pcm
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
6 // RUN: %clang_cc1 -fprebuilt-module-path=%t -std=c++20 %t/use.cpp -I%t/. -fsyntax-only -verify
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
7
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
8 //--- foo.h
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
9 template <typename T = int>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
10 T v;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
11
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
12 template <int T = 8>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
13 int v2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
14
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
15 template <typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
16 class my_array {};
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
17
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
18 template <template <typename> typename C = my_array>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
19 int v3;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
20
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
21 template <typename T, int *i = nullptr>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
22 T v4;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
23
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
24 template <typename T, T *i = nullptr>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
25 T v5;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
26
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
27 inline int a = 43;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
28 template <typename T, int *i = &a>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
29 T v6;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
30
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
31 inline int b = 43;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
32 template <typename T, T *i = &b>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
33 T v7;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
34
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
35 template <int T = (3 > 2)>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
36 int v8;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
37
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
38 consteval int getInt() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
39 return 55;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
40 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
41 template <int T = getInt()>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
42 int v9;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
43
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
44 //--- foo_bad.h
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
45 template <typename T = double>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
46 T v;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
47
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
48 template <int T = 9>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
49 int v2;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
50
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
51 template <typename T>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
52 class others_array {};
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
53
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
54 template <template <typename> typename C = others_array>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
55 int v3;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
56
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
57 static int a;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
58 consteval int *getIntPtr() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
59 return &a;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
60 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
61 template <typename T, int *i = getIntPtr()>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
62 T v4;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
63
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
64 consteval void *getVoidPtr() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
65 return &a;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
66 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
67 template <typename T, T *i = getVoidPtr()>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
68 T v5;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
69
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
70 inline int a_ = 43;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
71 template <typename T, int *i = &a_>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
72 T v6;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
73
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
74 inline int b_ = 43;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
75 template <typename T, T *i = &b_>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
76 T v7;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
77
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
78 template <int T = -1>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
79 int v8;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
80
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
81 consteval int getInt2() {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
82 return 55;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
83 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
84 template <int T = getInt2()>
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
85 int v9;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
86
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
87 //--- foo.cppm
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
88 module;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
89 #include "foo.h"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
90 export module foo;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
91
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
92 //--- use.cpp
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
93 import foo;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
94 #include "foo_bad.h"
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
95
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
96 // expected-error@foo_bad.h:1 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
97 // expected-note@foo.h:1 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
98 // expected-error@foo_bad.h:4 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
99 // expected-note@foo.h:4 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
100 // expected-error@foo_bad.h:10 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
101 // expected-note@foo.h:10 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
102 // expected-error@foo_bad.h:17 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
103 // expected-note@foo.h:13 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
104 // expected-error@foo_bad.h:23 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
105 // expected-note@foo.h:16 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
106 // expected-error@foo_bad.h:27 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
107 // expected-note@foo.h:20 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
108 // expected-error@foo_bad.h:31 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
109 // expected-note@foo.h:24 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
110 // expected-error@foo_bad.h:34 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
111 // expected-note@foo.h:27 {{previous default template argument defined in module foo.<global>}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
112 // expected-error@foo_bad.h:40 {{template parameter default argument is inconsistent with previous definition}}
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
113 // expected-note@foo.h:33 {{previous default template argument defined in module foo.<global>}}