cmd/guru: report 'whicherrs' in modes of 'what' query

A 'what' query reports which other query modes are applicable to the
selected syntax.  A 'whicherrs' query is similar to a 'pointsto'
query, so we enable it using the same criteria.

Fixes issue golang/go#18938

Change-Id: Iae062e0c933c7764bc335488adabf816d63ac837
Reviewed-on: https://go-review.googlesource.com/37349
Reviewed-by: Dominik Honnef <dominik@honnef.co>
This commit is contained in:
Alan Donovan 2017-02-24 16:57:05 -05:00
parent a663d825ff
commit 3537037b0b
1 changed files with 7 additions and 3 deletions

View File

@ -74,7 +74,7 @@ func what(q *Query) error {
} }
} }
// For pointsto, we approximate findInterestingNode. // For pointsto and whicherrs, we approximate findInterestingNode.
if _, ok := enable["pointsto"]; !ok { if _, ok := enable["pointsto"]; !ok {
switch n.(type) { switch n.(type) {
case ast.Stmt, case ast.Stmt,
@ -84,10 +84,14 @@ func what(q *Query) error {
*ast.InterfaceType, *ast.InterfaceType,
*ast.MapType, *ast.MapType,
*ast.ChanType: *ast.ChanType:
enable["pointsto"] = false // not an expr // not an expression
enable["pointsto"] = false
enable["whicherrs"] = false
case ast.Expr, ast.Decl, *ast.ValueSpec: case ast.Expr, ast.Decl, *ast.ValueSpec:
enable["pointsto"] = true // an expr, maybe // an expression, maybe
enable["pointsto"] = true
enable["whicherrs"] = true
default: default:
// Comment, Field, KeyValueExpr, etc: ascend. // Comment, Field, KeyValueExpr, etc: ascend.