Update to dump specific context information

Added output printers for comments, types, defs, and uses maps.
This commit is contained in:
Grant Murphy 2016-11-06 11:59:24 -08:00
parent 14e6635ca6
commit d20506048f

View file

@ -36,6 +36,10 @@ func newUtils() *utilities {
utils := make(map[string]command) utils := make(map[string]command)
utils["ast"] = dumpAst utils["ast"] = dumpAst
utils["callobj"] = dumpCallObj utils["callobj"] = dumpCallObj
utils["uses"] = dumpUses
utils["types"] = dumpTypes
utils["defs"] = dumpDefs
utils["comments"] = dumpComments
return &utilities{utils, make([]string, 0)} return &utilities{utils, make([]string, 0)}
} }
@ -143,9 +147,9 @@ func dumpCallObj(files ...string) {
var obj types.Object var obj types.Object
switch node := n.(type) { switch node := n.(type) {
case *ast.Ident: case *ast.Ident:
obj = context.info.Uses[node] obj = context.info.ObjectOf(node) //context.info.Uses[node]
case *ast.SelectorExpr: case *ast.SelectorExpr:
obj = context.info.Uses[node.Sel] obj = context.info.ObjectOf(node.Sel) //context.info.Uses[node.Sel]
default: default:
obj = nil obj = nil
} }
@ -156,3 +160,39 @@ func dumpCallObj(files ...string) {
}) })
} }
} }
func dumpUses(files ...string) {
for _, file := range files {
context := createContext(file)
for ident, obj := range context.info.Uses {
fmt.Printf("IDENT: %v, OBJECT: %v\n", ident, obj)
}
}
}
func dumpTypes(files ...string) {
for _, file := range files {
context := createContext(file)
for expr, tv := range context.info.Types {
fmt.Printf("EXPR: %v, TYPE: %v\n", expr, tv)
}
}
}
func dumpDefs(files ...string) {
for _, file := range files {
context := createContext(file)
for ident, obj := range context.info.Defs {
fmt.Printf("IDENT: %v, OBJ: %v\n", ident, obj)
}
}
}
func dumpComments(files ...string) {
for _, file := range files {
context := createContext(file)
for _, group := range context.comments.Comments() {
fmt.Println(group.Text())
}
}
}