mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-03 08:16:06 +00:00

BuildExpressionFromIntegralTemplateArgument can produce malformed IntegerLiterals with an EnumType if the template parameter type is an EnumType. This breaks the AST printer which expects all IntegerLiterals to have a plain integer type. Instead, give the IntegerLiteral the enum's promotion type and wrap in an implicit cast to the EnumType. llvm-svn: 121862
28 lines
483 B
C++
28 lines
483 B
C++
//-*- C++ -*-
|
|
|
|
// Intended to exercise all syntactic parts of the C++ language that
|
|
// aren't part of C.
|
|
|
|
namespace std {
|
|
namespace debug {
|
|
}
|
|
}
|
|
|
|
using namespace std::debug;
|
|
using namespace std;
|
|
|
|
namespace safestl = ::std::debug;
|
|
|
|
class Base1 {
|
|
};
|
|
|
|
class Base2 { };
|
|
|
|
class Derived1 : Base1, virtual public Base2 { };
|
|
|
|
/* Template classes, template functions */
|
|
enum E1 { EC1 };
|
|
template <E1 v> class C1 {};
|
|
template <E1 v> C1<v> f1() { return C1<v>(); }
|
|
void f2() { f1<EC1>(); }
|