@@ -6869,11 +6869,11 @@ func TestInterpretClosureScopingFunctionExpression(t *testing.T) {
6869
6869
6870
6870
inter := parseCheckAndInterpret (t , `
6871
6871
fun test(a: Int): Int {
6872
- let bar = fun(): Int {
6873
- return a
6872
+ let bar = fun(b: Int ): Int {
6873
+ return a + b
6874
6874
}
6875
6875
let a = 2
6876
- return bar()
6876
+ return bar(b: 10 )
6877
6877
}
6878
6878
` )
6879
6879
@@ -6885,7 +6885,7 @@ func TestInterpretClosureScopingFunctionExpression(t *testing.T) {
6885
6885
AssertValuesEqual (
6886
6886
t ,
6887
6887
inter ,
6888
- interpreter .NewUnmeteredIntValueFromInt64 (1 ),
6888
+ interpreter .NewUnmeteredIntValueFromInt64 (11 ),
6889
6889
actual ,
6890
6890
)
6891
6891
}
@@ -6895,11 +6895,11 @@ func TestInterpretClosureScopingInnerFunction(t *testing.T) {
6895
6895
6896
6896
inter := parseCheckAndInterpret (t , `
6897
6897
fun test(a: Int): Int {
6898
- fun bar(): Int {
6899
- return a
6898
+ fun bar(b: Int ): Int {
6899
+ return a + b
6900
6900
}
6901
6901
let a = 2
6902
- return bar()
6902
+ return bar(b: 10 )
6903
6903
}
6904
6904
` )
6905
6905
@@ -6911,22 +6911,74 @@ func TestInterpretClosureScopingInnerFunction(t *testing.T) {
6911
6911
AssertValuesEqual (
6912
6912
t ,
6913
6913
inter ,
6914
- interpreter .NewUnmeteredIntValueFromInt64 (1 ),
6914
+ interpreter .NewUnmeteredIntValueFromInt64 (11 ),
6915
6915
value ,
6916
6916
)
6917
6917
}
6918
6918
6919
+ func TestInterpretClosureScopingFunctionExpressionInCall (t * testing.T ) {
6920
+ t .Parallel ()
6921
+
6922
+ inter := parseCheckAndInterpret (t , `
6923
+ fun foo(a: Int) {
6924
+ fun() {}
6925
+ }
6926
+
6927
+ fun test(): Int {
6928
+ let a = 1
6929
+ foo(a: 2)
6930
+ return a
6931
+ }
6932
+ ` )
6933
+
6934
+ actual , err := inter .Invoke ("test" )
6935
+ require .NoError (t , err )
6936
+
6937
+ AssertValuesEqual (
6938
+ t ,
6939
+ inter ,
6940
+ interpreter .NewUnmeteredIntValueFromInt64 (1 ),
6941
+ actual ,
6942
+ )
6943
+ }
6944
+
6945
+ func TestInterpretClosureScopingInnerFunctionInCall (t * testing.T ) {
6946
+ t .Parallel ()
6947
+
6948
+ inter := parseCheckAndInterpret (t , `
6949
+ fun foo(a: Int) {
6950
+ let f = fun() {}
6951
+ }
6952
+
6953
+ fun test(): Int {
6954
+ let a = 1
6955
+ foo(a: 2)
6956
+ return a
6957
+ }
6958
+ ` )
6959
+
6960
+ actual , err := inter .Invoke ("test" )
6961
+ require .NoError (t , err )
6962
+
6963
+ AssertValuesEqual (
6964
+ t ,
6965
+ inter ,
6966
+ interpreter .NewUnmeteredIntValueFromInt64 (1 ),
6967
+ actual ,
6968
+ )
6969
+ }
6970
+
6919
6971
func TestInterpretAssignmentAfterClosureFunctionExpression (t * testing.T ) {
6920
6972
t .Parallel ()
6921
6973
6922
6974
inter := parseCheckAndInterpret (t , `
6923
6975
fun test(): Int {
6924
6976
var a = 1
6925
- let bar = fun(): Int {
6926
- return a
6977
+ let bar = fun(b: Int ): Int {
6978
+ return a + b
6927
6979
}
6928
6980
a = 2
6929
- return bar()
6981
+ return bar(b: 10 )
6930
6982
}
6931
6983
` )
6932
6984
@@ -6936,7 +6988,7 @@ func TestInterpretAssignmentAfterClosureFunctionExpression(t *testing.T) {
6936
6988
AssertValuesEqual (
6937
6989
t ,
6938
6990
inter ,
6939
- interpreter .NewUnmeteredIntValueFromInt64 (2 ),
6991
+ interpreter .NewUnmeteredIntValueFromInt64 (12 ),
6940
6992
value ,
6941
6993
)
6942
6994
}
@@ -6947,11 +6999,11 @@ func TestInterpretAssignmentAfterClosureInnerFunction(t *testing.T) {
6947
6999
inter := parseCheckAndInterpret (t , `
6948
7000
fun test(): Int {
6949
7001
var a = 1
6950
- fun bar(): Int {
6951
- return a
7002
+ fun bar(b: Int ): Int {
7003
+ return a + b
6952
7004
}
6953
7005
a = 2
6954
- return bar()
7006
+ return bar(b: 10 )
6955
7007
}
6956
7008
` )
6957
7009
@@ -6961,7 +7013,7 @@ func TestInterpretAssignmentAfterClosureInnerFunction(t *testing.T) {
6961
7013
AssertValuesEqual (
6962
7014
t ,
6963
7015
inter ,
6964
- interpreter .NewUnmeteredIntValueFromInt64 (2 ),
7016
+ interpreter .NewUnmeteredIntValueFromInt64 (12 ),
6965
7017
value ,
6966
7018
)
6967
7019
}
0 commit comments