compiler: allow to use return with no arguments

This commit is contained in:
Evgenii Stratonikov 2020-05-06 15:24:12 +03:00
parent e097e86bfa
commit 2a6be8ceef
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: case *ast.ReturnStmt:
switch n.Results[0].(type) { if len(n.Results) > 0 {
case *ast.CallExpr: switch n.Results[0].(type) {
return false case *ast.CallExpr:
return false
}
} }
case *ast.BinaryExpr: case *ast.BinaryExpr:
return false return false

View file

@ -121,7 +121,14 @@ func TestFunctionWithVoidReturn(t *testing.T) {
return x + y 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))
})
} }