[PATCH] D96347: Include function return type in JSON AST dumps.

2021-02-09 Thread Rokas Kupstys via Phabricator via cfe-commits
rokups created this revision.
rokups requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

For some reason return type was not included. Even though it is present
in full type dump, it is not good enough as C++ types can get quite
complex. Besides there is no way to get a desugared version of the type
from function type string. Patch uses "returnType" json key, just like
ObjCMethodDecl dumper. I also updated tests. If anything is missing -
please let me know.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D96347

Files:
  clang/lib/AST/JSONNodeDumper.cpp
  clang/test/AST/ast-dump-decl-context-json.cpp
  clang/test/AST/ast-dump-decl-json.c
  clang/test/AST/ast-dump-decl-json.m
  clang/test/AST/ast-dump-expr-json.c
  clang/test/AST/ast-dump-expr-json.cpp
  clang/test/AST/ast-dump-expr-json.m
  clang/test/AST/ast-dump-funcs-json.cpp
  clang/test/AST/ast-dump-macro-json.c
  clang/test/AST/ast-dump-record-definition-data-json.cpp
  clang/test/AST/ast-dump-records-json.cpp
  clang/test/AST/ast-dump-stmt-json.cpp
  clang/test/AST/ast-dump-stmt-json.m
  clang/test/AST/ast-dump-template-decls-json.cpp

Index: clang/test/AST/ast-dump-template-decls-json.cpp
===
--- clang/test/AST/ast-dump-template-decls-json.cpp
+++ clang/test/AST/ast-dump-template-decls-json.cpp
@@ -287,6 +287,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (Ty)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -394,6 +397,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (Ty...)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -526,6 +532,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (Ty)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -592,6 +601,9 @@
 // CHECK-NEXT:"type": {
 // CHECK-NEXT: "qualType": "void (float)"
 // CHECK-NEXT:},
+// CHECK-NEXT:"returnType": {
+// CHECK-NEXT: "qualType": "void"
+// CHECK-NEXT:},
 // CHECK-NEXT:"inner": [
 // CHECK-NEXT: {
 // CHECK-NEXT:  "kind": "TemplateArgument",
@@ -776,6 +788,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (Ty, Uy)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -906,6 +921,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (Ty)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -1014,6 +1032,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (int)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -1176,6 +1197,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void (Ty)"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
@@ -1302,6 +1326,9 @@
 // CHECK-NEXT:  "name": "h",
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
 // CHECK-NEXT:  }
 // CHECK-NEXT: }
 // CHECK-NEXT:]
@@ -2468,6 +2495,9 @@
 // CHECK-NEXT:  "name": "f",
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
 // CHECK-NEXT:  }
 // CHECK-NEXT: }
 // CHECK-NEXT:]
@@ -2558,6 +2588,9 @@
 // CHECK-NEXT:  "type": {
 // CHECK-NEXT:   "qualType": "void ()"
 // CHECK-NEXT:  },
+// CHECK-NEXT:  "returnType": {
+// CHECK-NEXT:   "qualType": "void"
+// CHECK-NEXT:  },
 // CHECK-NEXT:  "inner": [
 // CHECK-NEXT:   {
 // CHECK-NEXT:"id": "0x{{.*}}",
Index: clang/test/AST/ast-dump-stmt-json.m
=

[PATCH] D96347: Include function return type in JSON AST dumps.

2021-02-11 Thread Rokas Kupstys via Phabricator via cfe-commits
rokups added a comment.

This seems to not be good enough, however. Somehow desugared version of type is 
not added anywhere.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96347/new/

https://reviews.llvm.org/D96347

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D96347: Include function return type in JSON AST dumps.

2021-03-02 Thread Rokas Kupstys via Phabricator via cfe-commits
rokups added a comment.

Hey @Temtaime,
Until we can rely on this i opted in for poor man's workaround - splitting 
type/qualType field at the first ( and using first part. I realize it is not 
reliable and will break when function pointers are used, but since they arent 
in my project that is an acceptable short term workaround.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96347/new/

https://reviews.llvm.org/D96347

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits