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{{.*}}", _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits