Check-in [67f26787c0]
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add test cases for && and ||. Note that the LAND and LOR instructions are never generated, since they are intrinsically buggy.
Timelines: family | ancestors | descendants | both | kbk-domain-check | notworing
Files: files | file ages | folders
SHA3-256: 67f26787c014af100c2caf6b29c6d8ab6030c74ee030e61cfa972eb0a4a78e56
User & Date: kbk 2018-03-26 02:36:40
Context
2018-03-26
03:21
Comment out one crashing test case check-in: cbc4e47dbe user: kbk tags: kbk-domain-check, notworking
02:36
Add test cases for && and ||. Note that the LAND and LOR instructions are never generated, since they are intrinsically buggy. check-in: 67f26787c0 user: kbk tags: kbk-domain-check, notworing
02:10
Avoid type promotion on jumpTrue and jumpFalse. check-in: 5913b29fcd user: kbk tags: kbk-domain-check, notworking
Changes

Changes to demos/perftest/tester.tcl.

615
616
617
618
619
620
621





























622
623
624
625
626
627
628
....
1990
1991
1992
1993
1994
1995
1996














1997
1998
1999
2000
2001
2002
2003
....
2248
2249
2250
2251
2252
2253
2254


2255
2256
2257
2258
2259
2260
2261
proc nottest {val} {
    expr {!$val}
}

proc iftest {val} {
    if {$val} {return yes} {return no}
}






























proc booltest {val} {
    set res {}
    if {[string is boolean -strict $val]} {
	lappend res ok
    }
    lappend res [string is boolean $val]
................................................................................
    {iftest yes}
    {iftest no}
    {iftest 1}
    {iftest 0}
    {iftest 0.0}
    {iftest 2.0}
    {list [catch {iftest fruitbat} stat] $stat}














    {list [booltest on] [booltest no] [booltest ""] [booltest fruitbat]}
    {stristest ""}
    {stristest x}
    {stristest 0}
    {stristest 1.2}
    {stristest 0xAB}
    # List operations (also see some [try] tests)
................................................................................
    matchtest
    replacing replacing2 replacing3
    strclasstest
    jumptable
    concatenater
    nottest
    iftest


    booltest
    stristest
    regsubtest
    # Failure handling, [subst], [try]
    wideretest
    substtest
    substtest2






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>







615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
....
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
....
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
proc nottest {val} {
    expr {!$val}
}

proc iftest {val} {
    if {$val} {return yes} {return no}
}

proc landtest {val} {
    expr {$val && $val}

    # Tcl 8.7 does not generate INST_LAND except when the bytecode assembler
    # requests it. If we wanted to test INST_LAND, we'd need a sequence like
    #
    #    tcl::unsupported::assemble {
    #	     load val
    #	     load val
    #	     land
    #    }
}

proc lortest {val} {
    expr {$val || $val}

    # Tcl 8.7 does not generate INST_LOR except when the bytecode assembler
    # requests it. If we wanted to test INST_LOR, we'd need a sequence like
    #
    #    tcl::unsupported::assemble {
    #	     load val
    #	     load val
    #	     lor
    #    }
    #
    # But that's not implemented in the code generator, and there's no
    # really good reason to implement it, since Tcl doesn't use it.
}

proc booltest {val} {
    set res {}
    if {[string is boolean -strict $val]} {
	lappend res ok
    }
    lappend res [string is boolean $val]
................................................................................
    {iftest yes}
    {iftest no}
    {iftest 1}
    {iftest 0}
    {iftest 0.0}
    {iftest 2.0}
    {list [catch {iftest fruitbat} stat] $stat}
    {landtest yes}
    {landtest no}
    {landtest 1}
    {landtest 0}
    {landtest 2.0}
    {landtest 0.0}
    {list [catch {landtest fruitbat} stat] $stat}
    {lortest yes}
    {lortest no}
    {lortest 1}
    {lortest 0}
    {lortest 2.0}
    {lortest 0.0}
    {list [catch {lortest fruitbat} stat] $stat}
    {list [booltest on] [booltest no] [booltest ""] [booltest fruitbat]}
    {stristest ""}
    {stristest x}
    {stristest 0}
    {stristest 1.2}
    {stristest 0xAB}
    # List operations (also see some [try] tests)
................................................................................
    matchtest
    replacing replacing2 replacing3
    strclasstest
    jumptable
    concatenater
    nottest
    iftest
    landtest
    lortest
    booltest
    stristest
    regsubtest
    # Failure handling, [subst], [try]
    wideretest
    substtest
    substtest2