fixed many bugs with variable visibility in mixed scopes

This commit is contained in:
sergeych committed 2025-08-17 12:24:39 +03:00
1 parent eca746b189
commit 464a6dcb99
14 files changed
+285 -162

No files matched your search

+7 -7
View File
@@ -1359,9 +1359,6 @@ class ScriptTest {
}
val prefix = ":"
val lambda = {
prefix + getText() + "!"
}
val text = "invalid"
val t1 = T("foo")
@@ -1371,18 +1368,22 @@ class ScriptTest {
// it must take "text" from class t1:
assertEquals("foo", text)
assertEquals( "foo!", getText() )
assertEquals( ":foo!!", lambda() )
assertEquals( ":foo!!", {
prefix + getText() + "!"
}())
}
t2.apply {
assertEquals("bar", text)
assertEquals( "bar!", getText() )
assertEquals( ":bar!!", lambda() )
assertEquals( ":bar!!", {
prefix + getText() + "!"
}())
}
// worst case: names clash
fun badOne() {
val prefix = "&"
t1.apply {
assertEquals( ":foo!!", lambda() )
assertEquals( ":foo!!", prefix + getText() + "!" )
}
}
badOne()
@@ -2941,5 +2942,4 @@ class ScriptTest {
}
}
+13 -2
View File
@@ -23,8 +23,9 @@ class StdlibTest {
@Test
fun testIterableFilter() = runTest {
eval("""
assertEquals([1,3,5,7], (1..8).filter{ it % 2 == 1 }.toList() )
assertEquals([2,4,6,8], (1..8).filter{ it % 2 == 0 }.toList() )
assertEquals([2,4,6,8], (1..8).filter{ println("call2"); it % 2 == 0 }.toList() )
println("-------------------")
assertEquals([1,3,5,7], (1..8).filter{ println("call1"); it % 2 == 1 }.toList() )
""".trimIndent())
}
@@ -46,6 +47,16 @@ class StdlibTest {
""".trimIndent())
}
@Test
fun testAnyAndAll() = runTest {
eval("""
assert( [1,2,3].any { it > 2 } )
assert( ![1,2,3].any { it > 4 } )
assert( [1,2,3].all { it <= 3 } )
""".trimIndent())
}
@Test
fun testRingBuffer() = runTest {
eval("""