diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-03-08 09:02:38 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-03-08 09:02:38 +0000 |
commit | 75025ba4879e27d377fa1ba110820b8949c54752 (patch) | |
tree | 902bbb41a6c3b6b4a5afc28e6d4045e8c37babbc /clang | |
parent | 39570d00201ce7d9b65750e8ea5fc95e0047f467 (diff) | |
download | bcm5719-llvm-75025ba4879e27d377fa1ba110820b8949c54752.tar.gz bcm5719-llvm-75025ba4879e27d377fa1ba110820b8949c54752.zip |
Ensure we don't print 123ULL_foo when printing a user-defined integer literal.
llvm-svn: 152303
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/AST/StmtPrinter.cpp | 7 | ||||
-rw-r--r-- | clang/test/SemaCXX/cxx11-ast-print.cpp | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp index b8e68d8574a..d2233e094bb 100644 --- a/clang/lib/AST/StmtPrinter.cpp +++ b/clang/lib/AST/StmtPrinter.cpp @@ -1237,7 +1237,12 @@ void StmtPrinter::VisitUserDefinedLiteral(UserDefinedLiteral *Node) { } break; } - case UserDefinedLiteral::LOK_Integer: + case UserDefinedLiteral::LOK_Integer: { + // Print integer literal without suffix. + IntegerLiteral *Int = cast<IntegerLiteral>(Node->getCookedLiteral()); + OS << Int->getValue().toString(10, /*isSigned*/false); + break; + } case UserDefinedLiteral::LOK_Floating: case UserDefinedLiteral::LOK_String: case UserDefinedLiteral::LOK_Character: diff --git a/clang/test/SemaCXX/cxx11-ast-print.cpp b/clang/test/SemaCXX/cxx11-ast-print.cpp index 1f6f9478125..33684ceb4c5 100644 --- a/clang/test/SemaCXX/cxx11-ast-print.cpp +++ b/clang/test/SemaCXX/cxx11-ast-print.cpp @@ -4,9 +4,19 @@ // CHECK: decltype(nullptr) operator "" _foo(const char *p, decltype(sizeof(int))); auto operator"" _foo(const char *p, decltype(sizeof(int))) -> decltype(nullptr); +// CHECK: decltype(""_foo) operator "" _bar(unsigned long long); +decltype(""_foo) operator"" _bar(unsigned long long); + +// CHECK: decltype(42_bar) operator "" _baz(long double); +decltype(42_bar) operator"" _baz(long double); + // CHECK: const char *p1 = "bar1"_foo; const char *p1 = "bar1"_foo; // CHECK: const char *p2 = "bar2"_foo; const char *p2 = R"x(bar2)x"_foo; // CHECK: const char *p3 = u8"bar3"_foo; const char *p3 = u8"bar3"_foo; +// CHECK: const char *p4 = 297_bar; +const char *p4 = 0x129_bar; +// CHECK: const char *p5 = 1.0E+12_baz; +const char *p5 = 1e12_baz; |