diff --git a/chore/_xtool/llcppsigfetch/parse/cvt.go b/chore/_xtool/llcppsigfetch/parse/cvt.go index bc9ace67..e6f3c6a8 100644 --- a/chore/_xtool/llcppsigfetch/parse/cvt.go +++ b/chore/_xtool/llcppsigfetch/parse/cvt.go @@ -463,10 +463,12 @@ func (ct *Converter) ProcessRecord(cursor clang.Cursor, tag ast.Tag) *ast.TypeDe decl := &ast.TypeDecl{ DeclBase: ct.CreateDeclBase(cursor), - Tag: tag, Name: name, - Fields: fields, - Methods: methods, + Type: &ast.RecordType{ + Tag: tag, + Fields: fields, + Methods: methods, + }, } return decl diff --git a/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/llgo.expect b/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/llgo.expect index cfc8fc73..cc9d4027 100644 --- a/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/llgo.expect +++ b/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/llgo.expect @@ -553,36 +553,38 @@ TestScope Case 4: "Parent": { "Name": "a" }, - "Tag": 3, "Name": { "Name": "a" }, - "Fields": { - "List": [] - }, - "Methods": [{ - "Loc": { - "File": "temp.h" - }, - "Doc": { - "List": [] - }, - "Parent": { - "Name": "a" - }, - "Name": { - "Name": "foo" - }, - "Type": { - "Params": { + "Type": { + "Tag": 3, + "Fields": { + "List": [] + }, + "Methods": [{ + "Loc": { + "File": "temp.h" + }, + "Doc": { "List": [] }, - "Ret": { - "Kind": 0, - "Flags": 0 + "Parent": { + "Name": "a" + }, + "Name": { + "Name": "foo" + }, + "Type": { + "Params": { + "List": [] + }, + "Ret": { + "Kind": 0, + "Flags": 0 + } } - } - }] + }] + } }], "includes": [], "macros": [] @@ -608,41 +610,43 @@ TestScope Case 5: "Name": "a" } }, - "Tag": 3, "Name": { "Name": "b" }, - "Fields": { - "List": [] - }, - "Methods": [{ - "Loc": { - "File": "temp.h" - }, - "Doc": { - "List": [] - }, - "Parent": { - "X": { - "Name": "b" + "Type": { + "Tag": 3, + "Fields": { + "List": [] + }, + "Methods": [{ + "Loc": { + "File": "temp.h" }, - "Parent": { - "Name": "a" - } - }, - "Name": { - "Name": "foo" - }, - "Type": { - "Params": { + "Doc": { "List": [] }, - "Ret": { - "Kind": 0, - "Flags": 0 + "Parent": { + "X": { + "Name": "b" + }, + "Parent": { + "Name": "a" + } + }, + "Name": { + "Name": "foo" + }, + "Type": { + "Params": { + "List": [] + }, + "Ret": { + "Kind": 0, + "Flags": 0 + } } - } - }] + }] + } }], "includes": [], "macros": [] @@ -957,26 +961,28 @@ TestStructDecl Case 1: "List": [] }, "Parent": null, - "Tag": 0, "Name": null, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }] - }, - "Methods": [] + "Type": { + "Tag": 0, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }] + }, + "Methods": [] + } }], "includes": [], "macros": [] @@ -995,42 +1001,44 @@ TestStructDecl Case 2: "List": [] }, "Parent": null, - "Tag": 0, "Name": { "Name": "A" }, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [] + "Type": { + "Tag": 0, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [] + } }], "includes": [], "macros": [] @@ -1049,42 +1057,44 @@ TestStructDecl Case 3: "List": [] }, "Parent": null, - "Tag": 0, "Name": { "Name": "A" }, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [] + "Type": { + "Tag": 0, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [] + } }], "includes": [], "macros": [] @@ -1103,90 +1113,92 @@ TestStructDecl Case 4: "List": [] }, "Parent": null, - "Tag": 0, "Name": { "Name": "A" }, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [{ - "Loc": { - "File": "temp.h" - }, - "Doc": { - "List": [] - }, - "Parent": null, - "Name": { - "Name": "foo" - }, - "Type": { - "Params": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 8, - "Flags": 16 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] + "Type": { + "Tag": 0, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [{ + "Loc": { + "File": "temp.h" }, - "Ret": { - "Kind": 8, - "Flags": 0 + "Doc": { + "List": [] + }, + "Parent": null, + "Name": { + "Name": "foo" + }, + "Type": { + "Params": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 8, + "Flags": 16 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Ret": { + "Kind": 8, + "Flags": 0 + } } - } - }] + }] + } }], "includes": [], "macros": [] @@ -1207,42 +1219,44 @@ TestClassDecl Case 1: "Parent": { "Name": "A" }, - "Tag": 3, "Name": { "Name": "A" }, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [] + "Type": { + "Tag": 3, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [] + } }], "includes": [], "macros": [] @@ -1263,92 +1277,94 @@ TestClassDecl Case 2: "Parent": { "Name": "A" }, - "Tag": 3, "Name": { "Name": "A" }, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [{ - "Loc": { - "File": "temp.h" - }, - "Doc": { - "List": [] - }, - "Parent": { - "Name": "A" - }, - "Name": { - "Name": "foo" - }, - "Type": { - "Params": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 8, - "Flags": 16 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] + "Type": { + "Tag": 3, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [{ + "Loc": { + "File": "temp.h" }, - "Ret": { - "Kind": 8, - "Flags": 0 + "Doc": { + "List": [] + }, + "Parent": { + "Name": "A" + }, + "Name": { + "Name": "foo" + }, + "Type": { + "Params": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 8, + "Flags": 16 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Ret": { + "Kind": 8, + "Flags": 0 + } } - } - }] + }] + } }], "includes": [], "macros": [] @@ -1367,40 +1383,42 @@ TestUnionDecl Case 1: "List": [] }, "Parent": null, - "Tag": 1, "Name": null, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [] + "Type": { + "Tag": 1, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [] + } }], "includes": [], "macros": [] @@ -1419,42 +1437,44 @@ TestUnionDecl Case 2: "List": [] }, "Parent": null, - "Tag": 1, "Name": { "Name": "A" }, - "Fields": { - "List": [{ - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "a" - }] - }, { - "Type": { - "Kind": 6, - "Flags": 0 - }, - "Doc": { - "List": [] - }, - "Comment": { - "List": [] - }, - "Names": [{ - "Name": "b" - }] - }] - }, - "Methods": [] + "Type": { + "Tag": 1, + "Fields": { + "List": [{ + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "a" + }] + }, { + "Type": { + "Kind": 6, + "Flags": 0 + }, + "Doc": { + "List": [] + }, + "Comment": { + "List": [] + }, + "Names": [{ + "Name": "b" + }] + }] + }, + "Methods": [] + } }], "includes": [], "macros": [] @@ -1675,14 +1695,16 @@ TestTypeDefDecl Case 3: "List": [] }, "Parent": null, - "Tag": 0, "Name": { "Name": "StructFoo" }, - "Fields": { - "List": [] - }, - "Methods": [] + "Type": { + "Tag": 0, + "Fields": { + "List": [] + }, + "Methods": [] + } }, { "Loc": { "File": "temp.h" @@ -1691,14 +1713,16 @@ TestTypeDefDecl Case 3: "List": [] }, "Parent": null, - "Tag": 1, "Name": { "Name": "UnionFoo" }, - "Fields": { - "List": [] - }, - "Methods": [] + "Type": { + "Tag": 1, + "Fields": { + "List": [] + }, + "Methods": [] + } }, { "Loc": { "File": "temp.h" @@ -1709,14 +1733,16 @@ TestTypeDefDecl Case 3: "Parent": { "Name": "ClassFoo" }, - "Tag": 3, "Name": { "Name": "ClassFoo" }, - "Fields": { - "List": [] - }, - "Methods": [] + "Type": { + "Tag": 3, + "Fields": { + "List": [] + }, + "Methods": [] + } }, { "Loc": { "File": "temp.h" diff --git a/chore/_xtool/llcppsigfetch/parse/dump.go b/chore/_xtool/llcppsigfetch/parse/dump.go index 2e44514f..ce5b8240 100644 --- a/chore/_xtool/llcppsigfetch/parse/dump.go +++ b/chore/_xtool/llcppsigfetch/parse/dump.go @@ -84,14 +84,8 @@ func MarshalASTDecl(decl ast.Decl) *cjson.JSON { root.SetItem(c.Str("Type"), MarshalASTExpr(d.Type)) case *ast.TypeDecl: MarshalASTDeclBase(d.DeclBase, root) - root.SetItem(c.Str("Tag"), cjson.Number(float64(d.Tag))) root.SetItem(c.Str("Name"), MarshalASTExpr(d.Name)) - root.SetItem(c.Str("Fields"), MarshalASTExpr(d.Fields)) - methods := cjson.Array() - for _, m := range d.Methods { - methods.AddItem(MarshalASTDecl(m)) - } - root.SetItem(c.Str("Methods"), methods) + root.SetItem(c.Str("Type"), MarshalASTExpr(d.Type)) } return root } @@ -113,6 +107,14 @@ func MarshalASTExpr(t ast.Expr) *cjson.JSON { root := cjson.Object() switch d := t.(type) { + case *ast.RecordType: + root.SetItem(c.Str("Tag"), cjson.Number(float64(d.Tag))) + root.SetItem(c.Str("Fields"), MarshalASTExpr(d.Fields)) + methods := cjson.Array() + for _, m := range d.Methods { + methods.AddItem(MarshalASTDecl(m)) + } + root.SetItem(c.Str("Methods"), methods) case *ast.FuncType: root.SetItem(c.Str("Params"), MarshalASTExpr(d.Params)) root.SetItem(c.Str("Ret"), MarshalASTExpr(d.Ret))