Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaTemplate/instantiate-incomplete-typo-suggested-error-limit.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 | 1d019706d866 |
children |
line wrap: on
line source
// RUN: not %clang -fsyntax-only -std=c++11 -ferror-limit=1 %s 2>&1 | FileCheck %s // Test case for PR35682. // The issue be caused by the typo correction that changes String to the // incomplete type string. The example is based on the std::pair code and // reduced to a minimal test case. When using std::pair the issue can only be // reproduced when using the -stdlib=libc++ compiler option. template <class T> class allocator; template <class charT> struct char_traits; template <class CharT, class Traits = char_traits<CharT>, class Allocator = allocator<CharT>> class basic_string; typedef basic_string<char, char_traits<char>, allocator<char>> string; template <bool, class Tp = void> struct enable_if {}; template <class Tp> struct enable_if<true, Tp> { typedef Tp type; }; template <class Tp, Tp v> struct integral_constant { static constexpr const Tp value = v; typedef Tp value_type; typedef integral_constant type; constexpr operator value_type() const noexcept { return value; } constexpr value_type operator()() const noexcept { return value; } }; template <class Tp, Tp v> constexpr const Tp integral_constant<Tp, v>::value; using true_type = integral_constant<bool, true>; using false_type = integral_constant<bool, false>; template <class Tp, class Up> struct is_same : public false_type {}; template <class Tp> struct is_same<Tp, Tp> : public true_type {}; template <class T> struct single { typedef T first_type; T first; struct CheckArgs { template <class U1> static constexpr bool enable_implicit() { return is_same<first_type, U1>::value; } }; template <class U1, typename enable_if<CheckArgs::template enable_implicit<U1>(), bool>::type = false> single(U1 &&u1); }; using SetKeyType = String; single<SetKeyType> v; // CHECK: error: unknown type name 'String'; did you mean 'string'? // CHECK: fatal error: too many errors emitted, stopping now [-ferror-limit=] // CHECK-NOT: Assertion{{.*}}failed