c++: Add testcase for DR 2604
As the following testcase shows, I think we don't inherit template's attributes into specializations. 2022-11-15 Jakub Jelinek <jakub@redhat.com> * g++.dg/DRs/dr2604.C: New test.
This commit is contained in:
parent
dc95e1e970
commit
e0f4fcf9df
1 changed files with 53 additions and 0 deletions
53
gcc/testsuite/g++.dg/DRs/dr2604.C
Normal file
53
gcc/testsuite/g++.dg/DRs/dr2604.C
Normal file
|
@ -0,0 +1,53 @@
|
|||
// DR 2604 - Attributes for an explicit specialization.
|
||||
// { dg-do compile { target c++11 } }
|
||||
// { dg-options "-Wunused-parameter" }
|
||||
|
||||
template<typename>
|
||||
[[noreturn]] void
|
||||
foo ([[maybe_unused]] int i)
|
||||
{
|
||||
for (;;);
|
||||
}
|
||||
|
||||
template<>
|
||||
void
|
||||
foo<int> (int i) // { dg-warning "unused parameter 'i'" }
|
||||
{
|
||||
}
|
||||
|
||||
template<typename>
|
||||
void
|
||||
bar (int i) // { dg-warning "unused parameter 'i'" }
|
||||
{
|
||||
}
|
||||
|
||||
template<>
|
||||
[[noreturn]] void
|
||||
bar<int> ([[maybe_unused]] int i)
|
||||
{
|
||||
for (;;);
|
||||
}
|
||||
|
||||
[[noreturn]] void
|
||||
baz ()
|
||||
{
|
||||
foo<long> (0);
|
||||
}
|
||||
|
||||
[[noreturn]] void
|
||||
qux ()
|
||||
{
|
||||
foo<int> (0);
|
||||
} // { dg-warning "'noreturn' function does return" }
|
||||
|
||||
[[noreturn]] void
|
||||
garply ()
|
||||
{
|
||||
bar<long> (0);
|
||||
} // { dg-warning "'noreturn' function does return" }
|
||||
|
||||
[[noreturn]] void
|
||||
corge ()
|
||||
{
|
||||
bar<int> (0);
|
||||
}
|
Loading…
Add table
Reference in a new issue