--- parser3/tests/360.html 2016/10/11 21:24:43 1.1 +++ parser3/tests/360.html 2021/02/11 22:07:15 1.3 @@ -1,14 +1,32 @@ @main[] $n(1) -# code junctions ignore in expression flag, this it works +code junctions ignore in expression flag, this it works: $x(^if(2){^n.int[]^n.int[]}) $x -#this code will work if OPTIMIZE_CALL is undefined after OP_PREPARE_TO_EXPRESSION removed (#1104) +this code works after #1211: ^try-catch{ $y(^test[]) } $y +this code does not work in 3.4.4: +^try-catch{ $z(^test-wrapper[]) } +$z + +^try-catch{ string and number: $s(^test-string[]) $s $s.CLASS_NAME} +string and object[]: $s[^test-object[]] $s.CLASS_NAME +string and object(): $n(^test-object[]) $n.CLASS_NAME + +#since 3.4.7 numbers are converted to strings in expression context @test[] -#test is in expression + CO_WITHOUT_WCONTEXT is on by default, thus exception ^n.int[]^n.int[] + +#in 3.4.5-3.4.6 wrapper hided "in expression" flag, thus no exception +@test-wrapper[] +^test[] + +@test-string[] +-^n.int[] + +@test-object[] +string value (even non-whitespace!) is ignored if object (^hash::create[]) is returned.