diff --git a/pkg/compiler/func_scope.go b/pkg/compiler/func_scope.go index 5e2534287..672b839ef 100644 --- a/pkg/compiler/func_scope.go +++ b/pkg/compiler/func_scope.go @@ -162,7 +162,6 @@ func (c *codegen) countLocalsInline(decl *ast.FuncDecl, pkg *types.Package, f *f switch n := n.(type) { case *ast.CallExpr: size += c.countLocalsCall(n, pkg) - return false case *ast.FuncType: num := n.Results.NumFields() if num != 0 && len(n.Results.List[0].Names) != 0 { diff --git a/pkg/compiler/inline_test.go b/pkg/compiler/inline_test.go index eeb9bfe3a..bf62e65a3 100644 --- a/pkg/compiler/inline_test.go +++ b/pkg/compiler/inline_test.go @@ -209,6 +209,15 @@ func TestInlineGlobalVariable(t *testing.T) { }) } +func TestInlineVariadicInInlinedCall(t *testing.T) { + src := `package foo + import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/inline" + func Main() int { + return inline.SumSquared(inline.SumVar(3, 4) - 2, 3) + }` + eval(t, src, big.NewInt(64)) +} + func TestInlineConversion(t *testing.T) { src1 := `package foo import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/inline" @@ -255,3 +264,13 @@ func TestInlineConversionQualified(t *testing.T) { require.NoError(t, err) require.Equal(t, b2, b1) } + +func TestPackageVarsInInlinedCalls(t *testing.T) { + src := `package foo + import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/inline" + import "github.com/nspcc-dev/neo-go/pkg/compiler/testdata/inline/b" + func Main() int { + return inline.Sum(inline.A, b.A) + }` + eval(t, src, big.NewInt(13)) +} diff --git a/pkg/compiler/testdata/inline/inline.go b/pkg/compiler/testdata/inline/inline.go index c319c6b1d..62aaf2c79 100644 --- a/pkg/compiler/testdata/inline/inline.go +++ b/pkg/compiler/testdata/inline/inline.go @@ -39,6 +39,10 @@ func VarSum(a int, b ...int) int { return sum } +func SumVar(a, b int) int { + return VarSum(a, b) +} + func Concat(n int) int { return n*100 + b.A*10 + A }