Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaCXX/pr36536.cpp @ 222:81f6424ef0e3 llvm-original
LLVM original branch
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Jul 2021 22:10:01 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -std=c++11 %s -verify -fno-spell-checking // These test cases are constructed to make clang call ActOnStartOfFunctionDef // with nullptr. struct ImplicitDefaultCtor1 {}; struct Foo { typedef int NameInClass; void f(); }; namespace bar { // FIXME: Improved our recovery to make this a redeclaration of Foo::f, // even though this is in the wrong namespace. That will allow name lookup to // find NameInClass below. Users are likely to hit this when they forget to // close namespaces. // expected-error@+1 {{cannot define or redeclare 'f' here}} void Foo::f() { switch (0) { case 0: ImplicitDefaultCtor1 o; } // expected-error@+1 {{unknown type name 'NameInClass'}} NameInClass var; } } // namespace bar struct ImplicitDefaultCtor2 {}; template <typename T> class TFoo { void f(); }; // expected-error@+1 {{nested name specifier 'decltype(TFoo<T>())::'}} template <typename T> void decltype(TFoo<T>())::f() { switch (0) { case 0: ImplicitDefaultCtor1 o; } } namespace tpl2 { struct ImplicitDefaultCtor3 {}; template <class T1> class A { template <class T2> class B { void mf2(); }; }; template <class Y> template <> // expected-error@+1 {{nested name specifier 'A<Y>::B<double>::'}} void A<Y>::B<double>::mf2() { switch (0) { case 0: ImplicitDefaultCtor3 o; } } }