2019-04-09 11:52:21 -04:00
|
|
|
package ast
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestVarDecl(t *testing.T) {
|
2019-06-04 00:14:04 -04:00
|
|
|
nodes := map[string]testNode{
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7fd5e90e5a00 <col:14> col:17 'int'`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7fd5e90e5a00,
|
|
|
|
Pos: NewPositionFromString("col:14"),
|
|
|
|
Position2: "col:17",
|
|
|
|
Name: "",
|
|
|
|
Type: "int",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: false,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7fd5e90e5a00,
|
|
|
|
NewPositionFromString("col:14"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7fd5e90e9078 <line:156:1, col:14> col:14 __stdinp 'FILE *' extern`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7fd5e90e9078,
|
|
|
|
Pos: NewPositionFromString("line:156:1, col:14"),
|
|
|
|
Position2: "col:14",
|
|
|
|
Name: "__stdinp",
|
|
|
|
Type: "FILE *",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: true,
|
|
|
|
IsUsed: false,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7fd5e90e9078,
|
|
|
|
NewPositionFromString("line:156:1, col:14"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7fd5e90ed630 <col:40, col:47> col:47 __size 'size_t':'unsigned long'`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7fd5e90ed630,
|
|
|
|
Pos: NewPositionFromString("col:40, col:47"),
|
|
|
|
Position2: "col:47",
|
|
|
|
Name: "__size",
|
|
|
|
Type: "size_t",
|
|
|
|
Type2: "unsigned long",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: false,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7fd5e90ed630,
|
|
|
|
NewPositionFromString("col:40, col:47"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7fee35907a78 <col:4, col:8> col:8 used c 'int'`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7fee35907a78,
|
|
|
|
Pos: NewPositionFromString("col:4, col:8"),
|
|
|
|
Position2: "col:8",
|
|
|
|
Name: "c",
|
|
|
|
Type: "int",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: true,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7fee35907a78,
|
|
|
|
NewPositionFromString("col:4, col:8"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7fb0fd90ba30 <col:3, /usr/include/sys/_types.h:52:33> tests/assert/assert.c:13:9 used b 'int *' cinit`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7fb0fd90ba30,
|
|
|
|
Pos: NewPositionFromString("col:3, /usr/include/sys/_types.h:52:33"),
|
|
|
|
Position2: "tests/assert/assert.c:13:9",
|
|
|
|
Name: "b",
|
|
|
|
Type: "int *",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: true,
|
|
|
|
IsCInit: true,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7fb0fd90ba30,
|
|
|
|
NewPositionFromString("col:3, /usr/include/sys/_types.h:52:33"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7fb20308bd40 <col:5, col:11> col:11 referenced a 'short'`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7fb20308bd40,
|
|
|
|
Pos: NewPositionFromString("col:5, col:11"),
|
|
|
|
Position2: "col:11",
|
|
|
|
Name: "a",
|
|
|
|
Type: "short",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: false,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: true,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7fb20308bd40,
|
|
|
|
NewPositionFromString("col:5, col:11"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x55a040ddd798 <sqlite3.c:66:1, line:770:1> line:66:27 used sqlite3azCompileOpt 'const char *const [2]' static cinit`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x55a040ddd798,
|
|
|
|
Pos: NewPositionFromString("sqlite3.c:66:1, line:770:1"),
|
|
|
|
Position2: "line:66:27",
|
|
|
|
Name: "sqlite3azCompileOpt",
|
|
|
|
Type: "const char *const [2]",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: true,
|
|
|
|
IsCInit: true,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: true,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x55a040ddd798,
|
|
|
|
NewPositionFromString("sqlite3.c:66:1, line:770:1"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x55772c7774d0 <col:3, col:27> col:27 used a 'unsigned char *' register`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x55772c7774d0,
|
|
|
|
Pos: NewPositionFromString("col:3, col:27"),
|
|
|
|
Position2: "col:27",
|
|
|
|
Name: "a",
|
|
|
|
Type: "unsigned char *",
|
|
|
|
Type2: "",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: true,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: true,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x55772c7774d0,
|
|
|
|
NewPositionFromString("col:3, col:27"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x26fd180 <col:4, col:32> col:13 used aExt 'extCoord':'extCoord' cinit`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x26fd180,
|
|
|
|
Pos: NewPositionFromString("col:4, col:32"),
|
|
|
|
Position2: "col:13",
|
|
|
|
Name: "aExt",
|
|
|
|
Type: "extCoord",
|
|
|
|
Type2: "extCoord",
|
|
|
|
IsExtern: false,
|
|
|
|
IsUsed: true,
|
|
|
|
IsCInit: true,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x26fd180,
|
|
|
|
NewPositionFromString("col:4, col:32"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
`0x7f985e0ffb10 parent 0x7f985e0246d0 <col:3, col:20> col:20 used DEFAULT_MEM_ALLOCATOR 'cmark_mem':'struct cmark_mem' extern`: testNode{&VarDecl{
|
2019-04-09 11:52:21 -04:00
|
|
|
Addr: 0x7f985e0ffb10,
|
|
|
|
Pos: NewPositionFromString("col:3, col:20"),
|
|
|
|
Position2: "col:20",
|
|
|
|
Name: "DEFAULT_MEM_ALLOCATOR",
|
|
|
|
Type: "cmark_mem",
|
|
|
|
Type2: "struct cmark_mem",
|
|
|
|
IsExtern: true,
|
|
|
|
IsUsed: true,
|
|
|
|
IsCInit: false,
|
|
|
|
IsReferenced: false,
|
|
|
|
IsStatic: false,
|
|
|
|
IsRegister: false,
|
|
|
|
Parent: 0x7f985e0246d0,
|
|
|
|
ChildNodes: []Node{},
|
|
|
|
},
|
2019-06-11 12:38:22 -04:00
|
|
|
0x7f985e0ffb10,
|
|
|
|
NewPositionFromString("col:3, col:20"),
|
|
|
|
[]Node{},
|
2019-06-04 00:14:04 -04:00
|
|
|
},
|
2019-04-09 11:52:21 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
runNodeTests(t, nodes)
|
|
|
|
}
|