compiler: allow to use return with no arguments

This commit is contained in:
Evgenii Stratonikov 2020-05-06 15:24:12 +03:00
parent 9afcd71be3
commit 770cff8b91
2 changed files with 14 additions and 5 deletions

View file

@ -65,9 +65,11 @@ func (c *funcScope) analyzeVoidCalls(node ast.Node) bool {
}
}
case *ast.ReturnStmt:
switch n.Results[0].(type) {
case *ast.CallExpr:
return false
if len(n.Results) > 0 {
switch n.Results[0].(type) {
case *ast.CallExpr:
return false
}
}
case *ast.BinaryExpr:
return false

View file

@ -121,7 +121,14 @@ func TestFunctionWithVoidReturn(t *testing.T) {
return x + y
}
func getSomeInteger() { }
func getSomeInteger() { %s }
`
eval(t, src, big.NewInt(6))
t.Run("EmptyBody", func(t *testing.T) {
src := fmt.Sprintf(src, "")
eval(t, src, big.NewInt(6))
})
t.Run("SingleReturn", func(t *testing.T) {
src := fmt.Sprintf(src, "return")
eval(t, src, big.NewInt(6))
})
}