275 lines
8.8 KiB
Go
275 lines
8.8 KiB
Go
package ast
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestFunctionDecl(t *testing.T) {
|
|
nodes := map[string]testNode{
|
|
`0x7fb5a90e60d0 <line:231:1, col:22> col:7 clearerr 'void (FILE *)'`: testNode{&FunctionDecl{
|
|
Addr: 0x7fb5a90e60d0,
|
|
Pos: NewPositionFromString("line:231:1, col:22"),
|
|
Prev: "",
|
|
Position2: "col:7",
|
|
Name: "clearerr",
|
|
Type: "void (FILE *)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x7fb5a90e60d0,
|
|
NewPositionFromString("line:231:1, col:22"),
|
|
[]Node{},
|
|
},
|
|
`0x7fb5a90e2a50 </usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126> /usr/include/sys/stdio.h:39:5 renameat 'int (int, const char *, int, const char *)'`: testNode{&FunctionDecl{
|
|
Addr: 0x7fb5a90e2a50,
|
|
Pos: NewPositionFromString("/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126"),
|
|
Prev: "",
|
|
Position2: "/usr/include/sys/stdio.h:39:5",
|
|
Name: "renameat",
|
|
Type: "int (int, const char *, int, const char *)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x7fb5a90e2a50,
|
|
NewPositionFromString("/usr/include/sys/stdio.h:39:1, /usr/include/AvailabilityInternal.h:21697:126"),
|
|
[]Node{},
|
|
},
|
|
`0x7fb5a90e9b70 </usr/include/stdio.h:244:6> col:6 implicit fprintf 'int (FILE *, const char *, ...)' extern`: testNode{&FunctionDecl{
|
|
Addr: 0x7fb5a90e9b70,
|
|
Pos: NewPositionFromString("/usr/include/stdio.h:244:6"),
|
|
Prev: "",
|
|
Position2: "col:6",
|
|
Name: "fprintf",
|
|
Type: "int (FILE *, const char *, ...)",
|
|
Type2: "",
|
|
IsExtern: true,
|
|
IsImplicit: true,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x7fb5a90e9b70,
|
|
NewPositionFromString("/usr/include/stdio.h:244:6"),
|
|
[]Node{},
|
|
},
|
|
`0x7fb5a90e9d40 prev 0x7fb5a90e9b70 <col:1, /usr/include/sys/cdefs.h:351:63> /usr/include/stdio.h:244:6 fprintf 'int (FILE *, const char *, ...)'`: testNode{&FunctionDecl{
|
|
Addr: 0x7fb5a90e9d40,
|
|
Pos: NewPositionFromString("col:1, /usr/include/sys/cdefs.h:351:63"),
|
|
Prev: "0x7fb5a90e9b70",
|
|
Position2: "/usr/include/stdio.h:244:6",
|
|
Name: "fprintf",
|
|
Type: "int (FILE *, const char *, ...)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x7fb5a90e9d40,
|
|
NewPositionFromString("col:1, /usr/include/sys/cdefs.h:351:63"),
|
|
[]Node{},
|
|
},
|
|
`0x7fb5a90ec210 <line:259:6> col:6 implicit used printf 'int (const char *, ...)' extern`: testNode{&FunctionDecl{
|
|
Addr: 0x7fb5a90ec210,
|
|
Pos: NewPositionFromString("line:259:6"),
|
|
Prev: "",
|
|
Position2: "col:6",
|
|
Name: "printf",
|
|
Type: "int (const char *, ...)",
|
|
Type2: "",
|
|
IsExtern: true,
|
|
IsImplicit: true,
|
|
IsUsed: true,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x7fb5a90ec210,
|
|
NewPositionFromString("line:259:6"),
|
|
[]Node{},
|
|
},
|
|
`0x2ae30d8 </usr/include/math.h:65:3, /usr/include/x86_64-linux-gnu/sys/cdefs.h:57:54> <scratch space>:17:1 __acos 'double (double)' extern`: testNode{&FunctionDecl{
|
|
Addr: 0x2ae30d8,
|
|
Pos: NewPositionFromString("/usr/include/math.h:65:3, /usr/include/x86_64-linux-gnu/sys/cdefs.h:57:54"),
|
|
Prev: "",
|
|
Position2: "<scratch space>:17:1",
|
|
Name: "__acos",
|
|
Type: "double (double)",
|
|
Type2: "",
|
|
IsExtern: true,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x2ae30d8,
|
|
NewPositionFromString("/usr/include/math.h:65:3, /usr/include/x86_64-linux-gnu/sys/cdefs.h:57:54"),
|
|
[]Node{},
|
|
},
|
|
`0x7fc595071500 <line:26:1, line:69:1> line:26:5 referenced main 'int (int, char **)'`: testNode{&FunctionDecl{
|
|
Addr: 0x7fc595071500,
|
|
Pos: NewPositionFromString("line:26:1, line:69:1"),
|
|
Prev: "",
|
|
Position2: "line:26:5",
|
|
Name: "main",
|
|
Type: "int (int, char **)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: true,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x7fc595071500,
|
|
NewPositionFromString("line:26:1, line:69:1"),
|
|
[]Node{},
|
|
},
|
|
`0x55973a008cb0 <line:93619:1, line:93630:1> line:93619:12 used exprIsConst 'int (Expr *, int, int)' static`: testNode{&FunctionDecl{
|
|
Addr: 0x55973a008cb0,
|
|
Pos: NewPositionFromString("line:93619:1, line:93630:1"),
|
|
Prev: "",
|
|
Position2: "line:93619:12",
|
|
Name: "exprIsConst",
|
|
Type: "int (Expr *, int, int)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: true,
|
|
IsReferenced: false,
|
|
IsStatic: true,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x55973a008cb0,
|
|
NewPositionFromString("line:93619:1, line:93630:1"),
|
|
[]Node{},
|
|
},
|
|
`0x563ade547cb8 <safe_math.h:13:1, line:25:1> line:14:2 safe_unary_minus_func_int8_t_s 'int8_t (int8_t)':'int8_t (int8_t)' static`: testNode{&FunctionDecl{
|
|
Addr: 0x563ade547cb8,
|
|
Pos: NewPositionFromString("safe_math.h:13:1, line:25:1"),
|
|
Prev: "",
|
|
Position2: "line:14:2",
|
|
Name: "safe_unary_minus_func_int8_t_s",
|
|
Type: "int8_t (int8_t)",
|
|
Type2: "int8_t (int8_t)",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: true,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x563ade547cb8,
|
|
NewPositionFromString("safe_math.h:13:1, line:25:1"),
|
|
[]Node{},
|
|
},
|
|
`0x556cac571be0 <tests/asm.c:9:1, line:13:1> line:9:26 sqlite3Hwtime1 'unsigned long (void)' inline`: testNode{&FunctionDecl{
|
|
Addr: 0x556cac571be0,
|
|
Pos: NewPositionFromString("tests/asm.c:9:1, line:13:1"),
|
|
Prev: "",
|
|
Position2: "line:9:26",
|
|
Name: "sqlite3Hwtime1",
|
|
Type: "unsigned long (void)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: false,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: true,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x556cac571be0,
|
|
NewPositionFromString("tests/asm.c:9:1, line:13:1"),
|
|
[]Node{},
|
|
},
|
|
`0x21c3da0 <line:8201:1, line:8786:1> line:8201:25 used insertvertex 'enum insertvertexresult (struct mesh *, struct behavior *, vertex, struct otri *, struct osub *, int, int)'`: testNode{&FunctionDecl{
|
|
Addr: 0x21c3da0,
|
|
Pos: NewPositionFromString("line:8201:1, line:8786:1"),
|
|
Prev: "",
|
|
Position2: "line:8201:25",
|
|
Name: "insertvertex",
|
|
Type: "enum insertvertexresult (struct mesh *, struct behavior *, vertex, struct otri *, struct osub *, int, int)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: true,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x21c3da0,
|
|
NewPositionFromString("line:8201:1, line:8786:1"),
|
|
[]Node{},
|
|
},
|
|
`0x30bdba8 parent 0x304fbb0 <col:3, col:38> col:30 used getinfo 'enum countries ()'`: testNode{&FunctionDecl{
|
|
Addr: 0x30bdba8,
|
|
Pos: NewPositionFromString("col:3, col:38"),
|
|
Prev: "",
|
|
Parent: "0x304fbb0",
|
|
Position2: "col:30",
|
|
Name: "getinfo",
|
|
Type: "enum countries ()",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: true,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x30bdba8,
|
|
NewPositionFromString("col:3, col:38"),
|
|
[]Node{},
|
|
},
|
|
`0x353d3b8 parent 0x31e9ba0 prev 0x33b0810 <col:2, col:30> col:22 used dmatrix 'double **(long, long, long, long)'`: testNode{&FunctionDecl{
|
|
Addr: 0x353d3b8,
|
|
Pos: NewPositionFromString("col:2, col:30"),
|
|
Prev: "0x33b0810",
|
|
Parent: "0x31e9ba0",
|
|
Position2: "col:22",
|
|
Name: "dmatrix",
|
|
Type: "double **(long, long, long, long)",
|
|
Type2: "",
|
|
IsExtern: false,
|
|
IsImplicit: false,
|
|
IsUsed: true,
|
|
IsReferenced: false,
|
|
IsStatic: false,
|
|
IsInline: false,
|
|
ChildNodes: []Node{},
|
|
},
|
|
0x353d3b8,
|
|
NewPositionFromString("col:2, col:30"),
|
|
[]Node{},
|
|
},
|
|
}
|
|
|
|
runNodeTests(t, nodes)
|
|
}
|