r363866 - Dump the value calculated by a constant expression when dumping the AST to JSON.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 19 12:12:23 PDT 2019
Author: aaronballman
Date: Wed Jun 19 12:12:22 2019
New Revision: 363866
URL: http://llvm.org/viewvc/llvm-project?rev=363866&view=rev
Log:
Dump the value calculated by a constant expression when dumping the AST to JSON.
Modified:
cfe/trunk/include/clang/AST/JSONNodeDumper.h
cfe/trunk/lib/AST/JSONNodeDumper.cpp
cfe/trunk/test/AST/ast-dump-if-json.cpp
cfe/trunk/test/AST/ast-dump-stmt-json.cpp
Modified: cfe/trunk/include/clang/AST/JSONNodeDumper.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/JSONNodeDumper.h?rev=363866&r1=363865&r2=363866&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/JSONNodeDumper.h (original)
+++ cfe/trunk/include/clang/AST/JSONNodeDumper.h Wed Jun 19 12:12:22 2019
@@ -250,6 +250,7 @@ public:
void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *ULE);
void VisitAddrLabelExpr(const AddrLabelExpr *ALE);
void VisitCXXTypeidExpr(const CXXTypeidExpr *CTE);
+ void VisitConstantExpr(const ConstantExpr *CE);
void VisitIntegerLiteral(const IntegerLiteral *IL);
void VisitCharacterLiteral(const CharacterLiteral *CL);
Modified: cfe/trunk/lib/AST/JSONNodeDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/JSONNodeDumper.cpp?rev=363866&r1=363865&r2=363866&view=diff
==============================================================================
--- cfe/trunk/lib/AST/JSONNodeDumper.cpp (original)
+++ cfe/trunk/lib/AST/JSONNodeDumper.cpp Wed Jun 19 12:12:22 2019
@@ -975,6 +975,15 @@ void JSONNodeDumper::VisitCXXTypeidExpr(
}
}
+void JSONNodeDumper::VisitConstantExpr(const ConstantExpr *CE) {
+ if (CE->getResultAPValueKind() != APValue::None) {
+ std::string Str;
+ llvm::raw_string_ostream OS(Str);
+ CE->getAPValueResult().printPretty(OS, Ctx, CE->getType());
+ JOS.attribute("value", OS.str());
+ }
+}
+
void JSONNodeDumper::VisitIntegerLiteral(const IntegerLiteral *IL) {
JOS.attribute("value",
IL->getValue().toString(
Modified: cfe/trunk/test/AST/ast-dump-if-json.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-if-json.cpp?rev=363866&r1=363865&r2=363866&view=diff
==============================================================================
--- cfe/trunk/test/AST/ast-dump-if-json.cpp (original)
+++ cfe/trunk/test/AST/ast-dump-if-json.cpp Wed Jun 19 12:12:22 2019
@@ -528,6 +528,7 @@ void func(int val) {
// CHECK-NEXT: "qualType": "bool"
// CHECK-NEXT: },
// CHECK-NEXT: "valueCategory": "rvalue",
+// CHECK-NEXT: "value": "true",
// CHECK-NEXT: "inner": [
// CHECK-NEXT: {
// CHECK-NEXT: "id": "0x{{.*}}",
Modified: cfe/trunk/test/AST/ast-dump-stmt-json.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-stmt-json.cpp?rev=363866&r1=363865&r2=363866&view=diff
==============================================================================
--- cfe/trunk/test/AST/ast-dump-stmt-json.cpp (original)
+++ cfe/trunk/test/AST/ast-dump-stmt-json.cpp Wed Jun 19 12:12:22 2019
@@ -2951,6 +2951,7 @@ void TestIteration() {
// CHECK-NEXT: "qualType": "bool"
// CHECK-NEXT: },
// CHECK-NEXT: "valueCategory": "rvalue",
+// CHECK-NEXT: "value": "true",
// CHECK-NEXT: "inner": [
// CHECK-NEXT: {
// CHECK-NEXT: "id": "0x{{.*}}",
@@ -3150,6 +3151,7 @@ void TestIteration() {
// CHECK-NEXT: "qualType": "bool"
// CHECK-NEXT: },
// CHECK-NEXT: "valueCategory": "rvalue",
+// CHECK-NEXT: "value": "true",
// CHECK-NEXT: "inner": [
// CHECK-NEXT: {
// CHECK-NEXT: "id": "0x{{.*}}",
More information about the cfe-commits
mailing list