compiler: process literals in analyzeVoidCalls

Function call can occur in the slice or map literal
and its result surely isn't unused.
This commit is contained in:
Evgenii Stratonikov 2020-09-24 20:29:52 +03:00
parent 5f3b8c6d51
commit fd52dee79f
3 changed files with 34 additions and 0 deletions

View file

@ -136,6 +136,18 @@ func (c *funcScope) analyzeVoidCalls(node ast.Node) bool {
c.voidCalls[n] = true
}
return false
case *ast.CompositeLit:
for _, e := range n.Elts {
switch val := e.(type) {
case *ast.CallExpr: // slice
c.voidCalls[val] = false
case *ast.KeyValueExpr: // struct and map
ce, ok := val.Value.(*ast.CallExpr)
if ok {
c.voidCalls[ce] = false
}
}
}
}
return true
}