Changeset 181036c for tests


Ignore:
Timestamp:
Aug 13, 2022, 1:30:37 PM (3 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, ast-experimental, master, pthread-emulation
Children:
3f1059e
Parents:
62c5a55 (diff), 082af5b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
tests
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • tests/.expect/loop_else.txt

    r62c5a55 r181036c  
    33330 1 2 3 4 5 6 7 8 9 else
    34340 1 2 3 4 5 6 7 8 9 10 else
    35 10 9 8 7 6 5 4 3 2 1 else
     3510 9 8 7 6 5 4 3 2 1 0 else
    3636
    37373 6 9 else
    38 
    39 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
    40 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
    41 
    42 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
    43 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
    44 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)else
    45 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)else
    46 
    47 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)else
    48 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)else
    49 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)else
    50 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)else
    5138
    52390 -5 1 -4 2 -3 3 -2 4 -1 5 0 6 1 7 2 8 3 9 4 else
     
    63500 -5 1.5 1 -7 2.5 2 -9 3.5 3 -11 4.5 4 -13 5.5 5 -15 6.5 6 -17 7.5 7 -19 8.5 8 -21 9.5 9 -23 10.5 else
    64510 -5 1.5 1 -7 2.5 2 -9 3.5 3 -11 4.5 4 -13 5.5 5 -15 6.5 6 -17 7.5 7 -19 8.5 8 -21 9.5 9 -23 10.5 else
     52(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
     53(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
     54
     55(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
     56(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)else
     57(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)else
     58(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)else
     59
     60(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)else
     61(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)else
     62(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)else
     63(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)else
     64
  • tests/.expect/loopctrl.txt

    r62c5a55 r181036c  
    31310 1 2 3 4 5 6 7 8 9
    32320 1 2 3 4 5 6 7 8 9 10
    33 10 9 8 7 6 5 4 3 2 1
     3310 9 8 7 6 5 4 3 2 1 0
    3434
    35353 6 9
    36 
    37 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
    38 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
    39 
    40 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
    41 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
    42 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)
    43 (0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)
    44 
    45 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)
    46 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)
    47 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)
    48 (10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)
    4936
    50370 -5 1 -4 2 -3 3 -2 4 -1 5 0 6 1 7 2 8 3 9 4
     
    61480 -5 1.5 1 -7 2.5 2 -9 3.5 3 -11 4.5 4 -13 5.5 5 -15 6.5 6 -17 7.5 7 -19 8.5 8 -21 9.5 9 -23 10.5
    62490 -5 1.5 1 -7 2.5 2 -9 3.5 3 -11 4.5 4 -13 5.5 5 -15 6.5 6 -17 7.5 7 -19 8.5 8 -21 9.5 9 -23 10.5
     50(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
     51(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
     52
     53(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
     54(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)
     55(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)
     56(0 0)(1 1)(2 2)(3 3)(4 4)(5 5)(6 6)(7 7)(8 8)(9 9)(10 10)
     57
     58(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)
     59(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)
     60(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)
     61(10 10)(9 9)(8 8)(7 7)(6 6)(5 5)(4 4)(3 3)(2 2)(1 1)(0 0)
     62
     63A A A A A A A A A A
     64B B B B B B B B B B B
     65C C C C C C C C C C
     66D D D D D D D D D D D
     67A A A A A A A A A A
     68B B B B B B B B B B B
     69C C C C C C C C C C
     70D D D D D D D D D D D
     71A A A A A
     72B B B B B B
     73C C C C C
     74D D D D D D
     750 1 2 3 4 5 6 7 8 9
     760 1 2 3 4 5 6 7 8 9 10
     7710 9 8 7 6 5 4 3 2 1
     7810 9 8 7 6 5 4 3 2 1 0
     790 1 2 3 4 5 6 7 8 9
     800 1 2 3 4 5 6 7 8 9 10
     8110 9 8 7 6 5 4 3 2 1
     8210 9 8 7 6 5 4 3 2 1 0
     830 2 4 6 8
     840 2 4 6 8 10
     8510 8 6 4 2
     8610 8 6 4 2 0
     870 1 2 3 4 5 6 7 8 9
     880 1 2 3 4 5 6 7 8 9
     890 1 2 3 4 5 6 7 8 9 10
     9010 9 8 7 6 5 4 3 2 1
     9110 9 8 7 6 5 4 3 2 1 0
     920 1 2 3 4 5 6 7 8 9
     930 1 2 3 4 5 6 7 8 9 10
     9410 9 8 7 6 5 4 3 2 1
     9510 9 8 7 6 5 4 3 2 1 0
     960 2 4 6 8
     970 2 4 6 8 10
     9810 8 6 4 2
     9910 8 6 4 2 0
     1000 1 2 3 4 5 6 7 8 9
     1010 -1 -2 -3 -4 -5 -6 -7 -8 -9
     1020 2 4 6 8
     1030 -2 -4 -6 -8
     1040 1 2 3 4 5 6 7 8 9
     1050 2 4 6 8
     1060 -2 -4 -6 -8
     1070 2 4 6 8
     1080 -2 -4 -6 -8
     1090 1 2 3 4 5 6 7 8 9
  • tests/heap.cfa

    r62c5a55 r181036c  
    1010// Created On       : Tue Nov  6 17:54:56 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 15 12:11:51 2020
    13 // Update Count     : 79
     12// Last Modified On : Wed Aug 10 09:57:01 2022
     13// Update Count     : 86
    1414//
    1515
     
    2626//      return __CFA_DEFAULT_PREEMPTION__;
    2727// }
    28 
    29 size_t default_heap_expansion() {
    30         return 10 * 1024 * 1024;
    31 } // default_heap_expansion
    32 
    33 size_t default_mmap_start() {
    34         return 512 * 1024 + 1;
    35 } // default_mmap_start
    3628
    3729thread Worker {
     
    6658                        for ( k; i ) locns[i][k] = '\345';
    6759                } // for
    68                 for ( i; NoOfAllocs - 1 -~= 0 ) {
     60                for ( i; -~= NoOfAllocs - 1 ) {
    6961                        //sout | (void *)locns[i];
    7062                        for ( k; i ) if ( locns[i][k] != '\345' ) abort( "new/delete corrupt storage2" );
     
    9991
    10092        for ( i; NoOfMmaps ) {
    101                 size_t s = i + default_mmap_start();                    // cross over point
     93                size_t s = i + malloc_mmap_start();                     // cross over point
    10294                char * area = (char *)malloc( s );
    10395                area[0] = '\345'; area[s - 1] = '\345';                 // fill first/last
     
    10799
    108100        for ( i; NoOfMmaps ) {
    109                 size_t s = i + default_mmap_start();                    // cross over point
     101                size_t s = i + malloc_mmap_start();                     // cross over point
    110102                locns[i] = (char *)malloc( s );
    111103                locns[i][0] = '\345'; locns[i][s - 1] = '\345'; // fill first/last
     
    113105        } // for
    114106        for ( i; NoOfMmaps ) {
    115                 size_t s = i + default_mmap_start();                    // cross over point
     107                size_t s = i + malloc_mmap_start();                     // cross over point
    116108                if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
    117109                         locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "malloc/free corrupt storage" );
     
    151143
    152144        for ( i; NoOfMmaps ) {
    153                 size_t s = i + default_mmap_start();                    // cross over point
     145                size_t s = i + malloc_mmap_start();                     // cross over point
    154146                char * area = (char *)calloc( 1, s );
    155147                if ( area[0] != '\0' || area[s - 1] != '\0' ) abort( "calloc/free corrupt storage4.1" );
     
    162154
    163155        for ( i; NoOfMmaps ) {
    164                 size_t s = i + default_mmap_start();                    // cross over point
     156                size_t s = i + malloc_mmap_start();                     // cross over point
    165157                locns[i] = (char *)calloc( 1, s );
    166158                if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
     
    171163        } // for
    172164        for ( i; NoOfMmaps ) {
    173                 size_t s = i + default_mmap_start();                    // cross over point
     165                size_t s = i + malloc_mmap_start();                     // cross over point
    174166                if ( locns[i][0] != '\345' || locns[i][s - 1] != '\345' ||
    175167                         locns[i][malloc_usable_size( locns[i] ) - 1] != '\345' ) abort( "calloc/free corrupt storage6" );
     
    198190                //sout | alignments[a];
    199191                for ( i; 1 ~ NoOfMmaps ) {
    200                         size_t s = i + default_mmap_start();            // cross over point
     192                        size_t s = i + malloc_mmap_start();             // cross over point
    201193                        char * area = (char *)memalign( a, s );
    202194                        //sout | i | area;
     
    232224        for ( i; 2 ~ NoOfAllocs ~ 12 ) {
    233225                // initial N byte allocation
    234                 size_t s = i + default_mmap_start();                    // cross over point
     226                size_t s = i + malloc_mmap_start();                     // cross over point
    235227                char * area = (char *)malloc( s );
    236228                area[0] = '\345'; area[s - 1] = '\345';                 // fill first/penultimate byte
     
    269261        for ( i; 2 ~ NoOfAllocs ~ 12 ) {
    270262                // initial N byte allocation
    271                 size_t s = i + default_mmap_start();                    // cross over point
     263                size_t s = i + malloc_mmap_start();                     // cross over point
    272264                char * area = (char *)malloc( s );
    273265                area[0] = '\345'; area[s - 1] = '\345';                 // fill first/penultimate byte
     
    307299        for ( i; 1 ~ 10_000 ~ 12 ) {
    308300                // initial N byte allocation
    309                 size_t s = i + default_mmap_start();                    // cross over point
     301                size_t s = i + malloc_mmap_start();                     // cross over point
    310302                char * area = (char *)calloc( 1, s );
    311303                if ( area[0] != '\0' || area[s - 1] != '\0' ||
     
    481473
    482474int main() {
    483         const unsigned int NoOfWorkers = 4;
     475        enum { NoOfWorkers = 4 };
    484476        {
    485477                processor processors[NoOfWorkers - 1] __attribute__(( unused )); // more than one processor
  • tests/loop_else.cfa

    r62c5a55 r181036c  
    2020
    2121int main() {
    22     sout | nlOff;                                                                               // turn off auto newline
    23         while () { sout | "empty"; break; } else { sout | "else"; }                                         sout | nl;
    24         do { sout | "empty"; break; } while () else { sout | "else"; }                              sout | nl;
    25         for () { sout | "empty"; break; } else { sout | "else"; }                                           sout | nl | nl;
     22        // Test some loop options.
    2623
    27     do { sout | "false"; } while (false) else { sout | "else"; }                                    sout | nl | nl;
     24        sout | nlOff;                                                                           // turn off auto newline
     25        while () { sout | "empty"; break; } else { sout | "else"; }                                             sout | nl;
     26        do { sout | "empty"; break; } while () else { sout | "else"; }                                  sout | nl;
     27        for () { sout | "empty"; break; } else { sout | "else"; }                                               sout | nl | nl;
    2828
    29         for ( 0 ) { sout | "A"; } else { sout | "else"; }                                                   sout | "zero" | nl;
     29        do { sout | "false"; } while (false) else { sout | "else"; }                                    sout | nl | nl;
     30
     31        for ( 0 ) { sout | "A"; } else { sout | "else"; }                                                               sout | "zero" | nl;
    3032        for ( 1 ) { sout | "A"; } else { sout | "else"; }                                                               sout | nl;
    31         for ( 10 ) { sout | "A"; } else { sout | "else"; }                                                          sout | nl;
    32         for ( = 10 ) { sout | "A"; } else { sout | "else"; }                                                    sout | nl;
     33        for ( 10 ) { sout | "A"; } else { sout | "else"; }                                                              sout | nl;
     34        for ( ~= 10 ) { sout | "A"; } else { sout | "else"; }                                                   sout | nl;
    3335        for ( 1 ~= 10 ~ 2 ) { sout | "B"; } else { sout | "else"; }                                             sout | nl;
    34         for ( 10 -~= 1 ~ 2 ) { sout | "C"; } else { sout | "else"; }                                    sout | nl;
     36        for ( 1 -~= 10 ~ 2 ) { sout | "C"; } else { sout | "else"; }                                    sout | nl;
    3537        for ( 0.5 ~ 5.5 ) { sout | "D"; } else { sout | "else"; }                                               sout | nl;
    36         for ( 5.5 -~ 0.5 ) { sout | "E"; } else { sout | "else"; }                                              sout | nl | nl;
     38        for ( 0.5 -~ 5.5 ) { sout | "E"; } else { sout | "else"; }                                              sout | nl | nl;
    3739
    3840        for ( i; 10 ) { sout | i; } else { sout | "else"; }                                                             sout | nl;
    39         for ( i; = 10 ) { sout | i; } else { sout | "else"; }                                                   sout | nl;
     41        for ( i; ~= 10 ) { sout | i; } else { sout | "else"; }                                                  sout | nl;
    4042        for ( i; 1 ~= 10 ~ 2 ) { sout | i; } else { sout | "else"; }                                    sout | nl;
    41         for ( i; 10 -~= 1 ~ 2 ) { sout | i; } else { sout | "else"; }                                   sout | nl;
     43        for ( i; 1 -~= 10 ~ 2 ) { sout | i; } else { sout | "else"; }                                   sout | nl;
    4244        for ( i; 0.5 ~ 5.5 ) { sout | i; } else { sout | "else"; }                                              sout | nl;
    43         for ( i; 5.5 -~ 0.5 ) { sout | i; } else { sout | "else"; }                                             sout | nl;
     45        for ( i; 0.5 -~ 5.5 ) { sout | i; } else { sout | "else"; }                                             sout | nl;
    4446        for ( ui; 2u ~= 10u ~ 2u ) { sout | ui; } else { sout | "else"; }                               sout | nl;
    45         for ( ui; 10u -~= 2u ~ 2u ) { sout | ui; } else { sout | "else"; }                              sout | nl | nl;
     47        for ( ui; 2u -~= 10u ~ 2u ) { sout | ui; } else { sout | "else"; }                              sout | nl | nl;
    4648
    4749        // @ means do nothing
     
    5052                sout | i;
    5153        } else { sout | "else"; }                                                                                                               sout | nl;
    52         for ( i; 10 -~ @ ) {
     54        for ( i; @ -~ 10 ) {
    5355          if ( i < 0 ) break;
    5456                sout | i;
     
    6365                i += 1.7;
    6466        } else { sout | "else"; }                                                                                                               sout | nl;
    65         for ( i; 10 -~ @ ~ 2 ) {
     67        for ( i; @ -~ 10 ~ 2 ) {
    6668          if ( i < 0 ) break;
    6769                sout | i;
     
    7678        for ( N ) { sout | "N"; } else { sout | "else"; }                                                       sout | nl;
    7779        for ( i; N ) { sout | i; } else { sout | "else"; }                                                      sout | nl;
    78         for ( i; = N ) { sout | i; } else { sout | "else"; }                                            sout | nl;
    79         for ( i; N -~ 0 ) { sout | i; } else { sout | "else"; }                                         sout | nl | nl;
     80        for ( i; ~= N ) { sout | i; } else { sout | "else"; }                                           sout | nl;
     81        for ( i; -~= N ) { sout | i; } else { sout | "else"; }                                          sout | nl | nl;
    8082
    8183        const int start = 3, comp = 10, inc = 2;
    8284        for ( i; start ~ comp ~ inc + 1 ) { sout | i; } else { sout | "else"; }         sout | nl | nl;
     85
     86        for ( i; 10 : j; -5 ~ @ ) { sout | i | j; } else { sout | "else"; } sout | nl;
     87        for ( i; 10 : j; @ -~ -5 ) { sout | i | j; } else { sout | "else"; } sout | nl;
     88        for ( i; 10 : j; -5 ~ @ ~ 2 ) { sout | i | j; } else { sout | "else"; } sout | nl;
     89        for ( i; 10 : j; @ -~ -5 ~ 2 ) { sout | i | j; } else { sout | "else"; } sout | nl | nl;
     90
     91        for ( j; -5 ~ @ : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl;
     92        for ( j; @ -~ -5 : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl;
     93        for ( j; -5 ~ @ ~ 2 : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl;
     94        for ( j; @ -~ -5 ~ 2 : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl | nl;
     95
     96        for ( j; @ -~ -5 ~ 2 : i; 10 : k; 1.5 ~ @ ) { sout | i | j | k; } else { sout | "else"; } sout | nl;
     97        for ( j; @ -~ -5 ~ 2 : k; 1.5 ~ @ : i; 10 ) { sout | i | j | k; } else { sout | "else"; } sout | nl;
     98        for ( k; 1.5 ~ @ : j; @ -~ -5 ~ 2 : i; 10 ) { sout | i | j | k; } else { sout | "else"; } sout | nl;
    8399
    84100        for ( S s = (S){0}; s < (S){10,10}; s += (S){1} ) { sout | s; } else { sout | "else"; } sout | nl;
     
    90106        for ( s; (S){0} ~= (S){10,10} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl;
    91107        sout | nl;
    92         for ( s; (S){10,10} -~ (S){0} ) { sout | s; } else { sout | "else"; }            sout | nl;
    93         for ( s; (S){10,10} -~ (S){0} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl;
    94         for ( s; (S){10,10} -~= (S){0} ) { sout | s; } else { sout | "else"; }           sout | nl;
    95         for ( s; (S){10,10} -~= (S){0} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl | nl;
    96 
    97         for ( i; 10 : j; -5 ~ @ ) { sout | i | j; } else { sout | "else"; } sout | nl;
    98         for ( i; 10 : j; -5 -~ @ ) { sout | i | j; } else { sout | "else"; } sout | nl;
    99         for ( i; 10 : j; -5 ~ @ ~ 2 ) { sout | i | j; } else { sout | "else"; } sout | nl;
    100         for ( i; 10 : j; -5 -~ @ ~ 2 ) { sout | i | j; } else { sout | "else"; } sout | nl | nl;
    101 
    102         for ( j; -5 ~ @ : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl;
    103         for ( j; -5 -~ @ : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl;
    104         for ( j; -5 ~ @ ~ 2 : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl;
    105         for ( j; -5 -~ @ ~ 2 : i; 10 ) { sout | i | j; } else { sout | "else"; } sout | nl | nl;
    106 
    107         for ( j; -5 -~ @ ~ 2 : i; 10 : k; 1.5 ~ @ ) { sout | i | j | k; } else { sout | "else"; } sout | nl;
    108         for ( j; -5 -~ @ ~ 2 : k; 1.5 ~ @ : i; 10 ) { sout | i | j | k; } else { sout | "else"; } sout | nl;
    109         for ( k; 1.5 ~ @ : j; -5 -~ @ ~ 2 : i; 10 ) { sout | i | j | k; } else { sout | "else"; } sout | nl;
     108        for ( s; (S){0} -~  (S){10,10} ) { sout | s; } else { sout | "else"; }           sout | nl;
     109        for ( s; (S){0} -~  (S){10,10} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl;
     110        for ( s; (S){0} -~= (S){10,10} ) { sout | s; } else { sout | "else"; }           sout | nl;
     111        for ( s; (S){0} -~= (S){10,10} ~ (S){1} ) { sout | s; } else { sout | "else"; } sout | nl | nl;
    110112}
  • tests/loopctrl.cfa

    r62c5a55 r181036c  
    1010// Created On       : Wed Aug  8 18:32:59 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Dec 12 17:55:26 2019
    13 // Update Count     : 108
     12// Last Modified On : Thu Aug 11 23:04:35 2022
     13// Update Count     : 160
    1414//
    1515
    1616#include <fstream.hfa>
     17
     18void fred() {
     19        // Test all possible loop syntax.
     20
     21        int s = 0, c = 10, i = 2;
     22
     23        for ( c ) { sout | "A"; }                                               sout | nl;
     24        for ( ~= c ) { sout | "B"; }                                    sout | nl;
     25        for ( -~ c ) { sout | "C"; }                                    sout | nl;
     26        for ( -~= c ) { sout | "D"; }                                   sout | nl;
     27
     28        for ( s ~ c ) { sout | "A"; }                                   sout | nl;
     29        for ( s ~= c ) { sout | "B"; }                                  sout | nl;
     30        for ( s -~ c ) { sout | "C"; }                                  sout | nl;
     31        for ( s -~= c ) { sout | "D"; }                                 sout | nl;
     32
     33        for ( s ~ c ~ i ) { sout | "A"; }                               sout | nl;
     34        for ( s ~= c ~ i ) { sout | "B"; }                              sout | nl;
     35        for ( s -~ c ~ i ) { sout | "C"; }                              sout | nl;
     36        for ( s -~= c ~ i ) { sout | "D"; }                             sout | nl;
     37
     38        for ( j; c ) { sout | j; }                                                      sout | nl;
     39        for ( j; ~= c ) { sout | j; }                                   sout | nl;
     40        for ( j; -~ c ) { sout | j; }                                   sout | nl;
     41        for ( j; -~= c ) { sout | j; }                                  sout | nl;
     42
     43        for ( j; s ~ c ) { sout | j; }                                  sout | nl;
     44        for ( j; s ~= c ) { sout | j; }                                 sout | nl;
     45        for ( j; s -~ c ) { sout | j; }                                 sout | nl;
     46        for ( j; s -~= c ) { sout | j; }                                sout | nl;
     47
     48        for ( j; s ~ c ~ i ) { sout | j; }                              sout | nl;
     49        for ( j; s ~= c ~ i ) { sout | j; }                             sout | nl;
     50        for ( j; s -~ c ~ i ) { sout | j; }                             sout | nl;
     51        for ( j; s -~= c ~ i ) { sout | j; }                    sout | nl;
     52
     53        // CANNOT DIRECTLY INITIALIZE INDEX VARIABLE, ONLY SINGLE LOOP INDEX VARIABLE IN DECLARATION
     54
     55        for ( j; c ) { sout | j; }                                              sout | nl;
     56        for ( int j; c ) { sout | j; }                                  sout | nl;
     57        for ( int j; ~= c ) { sout | j; }                               sout | nl;
     58        for ( int j; -~ c ) { sout | j; }                               sout | nl;
     59        for ( int j; -~= c ) { sout | j; }                              sout | nl;
     60
     61        for ( int j; s ~ c ) { sout | j; }                              sout | nl;
     62        for ( int j; s ~= c ) { sout | j; }                             sout | nl;
     63        for ( int j; s -~ c ) { sout | j; }                             sout | nl;
     64        for ( int j; s -~= c ) { sout | j; }                    sout | nl;
     65
     66        for ( int j; s ~ c ~ i ) { sout | j; }                  sout | nl;
     67        for ( int j; s ~= c ~ i ) { sout | j; }                 sout | nl;
     68        for ( int j; s -~ c ~ i ) { sout | j; }                 sout | nl;
     69        for ( int j; s -~= c ~ i ) { sout | j; }                sout | nl;
     70
     71        for ( j; s ~ @ ) { if ( j == 10 ) break; sout | j; }                            sout | nl;
     72        for ( j; @ -~ s ) { if ( j == -10 ) break; sout | j; }                          sout | nl;
     73        for ( j; s ~ @ ~ i ) { if ( j == 10 ) break; sout | j; }                        sout | nl;
     74        for ( j; @ -~ s ~ i ) { if ( j == -10 ) break; sout | j; }                      sout | nl;
     75        for ( j; s ~ @ ~ @ ) { if ( j == 10 ) break; sout | j; j += 1; }        sout | nl;
     76
     77        for ( int j; s ~ @ ) { if ( j == 10 ) break; sout | j; j += 1; }        sout | nl;
     78        for ( int j; @ -~ s ) { if ( j == -10 ) break; sout | j; j -= 1; }      sout | nl;
     79        for ( int j; s ~ @ ~ i ) { if ( j == 10 ) break; sout | j; }            sout | nl;
     80        for ( int j; @ -~ s ~ i ) { if ( j == -10 ) break; sout | j; }          sout | nl;
     81        for ( int j; s ~ @ ~ @ ) { if ( j == 10 ) break; sout | j; j += 1; } sout | nl;
     82
     83        // enum E { A, B, C, D };
     84        // for ( e; A ~= C ) { sout | j; }
     85        // for ( e; A ~= D ) { sout | j; }
     86        // for ( e; A -~= D ~ 2 ) { sout | j; }
     87        // for ( e; E ) { sout | j; }
     88        // for ( e; -~ E ) { sout | j; }
     89}
    1790
    1891struct S { int i, j; };
     
    35108
    36109int main() {
     110        // Test some loop options.
     111
    37112        sout | nlOff;                                                                           // turn off auto newline
    38113        while () { sout | "empty"; break; }                                     sout | nl;
     
    43118        for ( 1 ) { sout | "A"; }                                                       sout | nl;
    44119        for ( 10 ) { sout | "A"; }                                                      sout | nl;
    45         for ( = 10 ) { sout | "A"; }                                            sout | nl;
     120        for ( ~= 10 ) { sout | "A"; }                                           sout | nl;
    46121        for ( 1 ~= 10 ~ 2 ) { sout | "B"; }                                     sout | nl;
    47         for ( 10 -~= 1 ~ 2 ) { sout | "C"; }                            sout | nl;
     122        for ( 1 -~= 10 ~ 2 ) { sout | "C"; }                            sout | nl;
    48123        for ( 0.5 ~ 5.5 ) { sout | "D"; }                                       sout | nl;
    49         for ( 5.5 -~ 0.5 ) { sout | "E"; }                                      sout | nl | nl;
     124        for ( 0.5 -~ 5.5 ) { sout | "E"; }                                      sout | nl | nl;
    50125
    51126        for ( i; 10 ) { sout | i; }                                                     sout | nl;
    52         for ( i; = 10 ) { sout | i; }                                           sout | nl;
     127        for ( i; ~= 10 ) { sout | i; }                                          sout | nl;
    53128        for ( i; 1 ~= 10 ~ 2 ) { sout | i; }                            sout | nl;
    54         for ( i; 10 -~= 1 ~ 2 ) { sout | i; }                           sout | nl;
     129        for ( i; 1 -~= 10 ~ 2 ) { sout | i; }                           sout | nl;
    55130        for ( i; 0.5 ~ 5.5 ) { sout | i; }                                      sout | nl;
    56         for ( i; 5.5 -~ 0.5 ) { sout | i; }                                     sout | nl;
     131        for ( i; 0.5 -~ 5.5 ) { sout | i; }                                     sout | nl;
    57132        for ( ui; 2u ~= 10u ~ 2u ) { sout | ui; }                       sout | nl;
    58         for ( ui; 10u -~= 2u ~ 2u ) { sout | ui; }                      sout | nl | nl;
     133        for ( ui; 2u -~= 10u ~ 2u ) { sout | ui; }                      sout | nl | nl;
    59134
    60135        // @ means do nothing
     
    63138                sout | i;
    64139        }                                                                                                       sout | nl;
    65         for ( i; 10 -~ @ ) {
     140        for ( i; @ -~ 10 ) {
    66141          if ( i < 0 ) break;
    67142                sout | i;
     
    76151                i += 1.7;
    77152        }                                                                                                       sout | nl;
    78         for ( i; 10 -~ @ ~ 2 ) {
     153        for ( i; @ -~ 10 ~ 2 ) {
    79154          if ( i < 0 ) break;
    80155                sout | i;
     
    89164        for ( N ) { sout | "N"; }                                                       sout | nl;
    90165        for ( i; N ) { sout | i; }                                                      sout | nl;
    91         for ( i; = N ) { sout | i; }                                            sout | nl;
    92         for ( i; N -~ 0 ) { sout | i; }                                         sout | nl | nl;
     166        for ( i; ~= N ) { sout | i; }                                           sout | nl;
     167        for ( i; -~= N ) { sout | i; }                                          sout | nl | nl;
    93168
    94169        const int start = 3, comp = 10, inc = 2;
    95170        for ( i; start ~ comp ~ inc + 1 ) { sout | i; }         sout | nl | nl;
     171
     172        for ( i; 10 : j; -5 ~ @ ) { sout | i | j; } sout | nl;
     173        for ( i; 10 : j; @ -~ -5 ) { sout | i | j; } sout | nl;
     174        for ( i; 10 : j; -5 ~ @ ~ 2 ) { sout | i | j; } sout | nl;
     175        for ( i; 10 : j; @ -~ -5 ~ 2 ) { sout | i | j; } sout | nl | nl;
     176
     177        for ( j; -5 ~ @ : i; 10 ) { sout | i | j; } sout | nl;
     178        for ( j; @ -~ -5 : i; 10 ) { sout | i | j; } sout | nl;
     179        for ( j; -5 ~ @ ~ 2 : i; 10 ) { sout | i | j; } sout | nl;
     180        for ( j; @ -~ -5 ~ 2 : i; 10 ) { sout | i | j; } sout | nl | nl;
     181
     182        for ( j; @ -~ -5 ~ 2 : i; 10 : k; 1.5 ~ @ ) { sout | i | j | k; } sout | nl;
     183        for ( j; @ -~ -5 ~ 2 : k; 1.5 ~ @ : i; 10 ) { sout | i | j | k; } sout | nl;
     184        for ( k; 1.5 ~ @ : j; @ -~ -5 ~ 2 : i; 10 ) { sout | i | j | k; } sout | nl;
    96185
    97186        for ( S s = (S){0}; s < (S){10,10}; s += (S){1} ) { sout | s; } sout | nl;
     
    103192        for ( s; (S){0} ~= (S){10,10} ~ (S){1} ) { sout | s; } sout | nl;
    104193        sout | nl;
    105         for ( s; (S){10,10} -~ (S){0} ) { sout | s; }            sout | nl;
    106         for ( s; (S){10,10} -~ (S){0} ~ (S){1} ) { sout | s; } sout | nl;
    107         for ( s; (S){10,10} -~= (S){0} ) { sout | s; }           sout | nl;
    108         for ( s; (S){10,10} -~= (S){0} ~ (S){1} ) { sout | s; } sout | nl | nl;
    109 
    110         for ( i; 10 : j; -5 ~ @ ) { sout | i | j; } sout | nl;
    111         for ( i; 10 : j; -5 -~ @ ) { sout | i | j; } sout | nl;
    112         for ( i; 10 : j; -5 ~ @ ~ 2 ) { sout | i | j; } sout | nl;
    113         for ( i; 10 : j; -5 -~ @ ~ 2 ) { sout | i | j; } sout | nl | nl;
    114 
    115         for ( j; -5 ~ @ : i; 10 ) { sout | i | j; } sout | nl;
    116         for ( j; -5 -~ @ : i; 10 ) { sout | i | j; } sout | nl;
    117         for ( j; -5 ~ @ ~ 2 : i; 10 ) { sout | i | j; } sout | nl;
    118         for ( j; -5 -~ @ ~ 2 : i; 10 ) { sout | i | j; } sout | nl | nl;
    119 
    120         for ( j; -5 -~ @ ~ 2 : i; 10 : k; 1.5 ~ @ ) { sout | i | j | k; } sout | nl;
    121         for ( j; -5 -~ @ ~ 2 : k; 1.5 ~ @ : i; 10 ) { sout | i | j | k; } sout | nl;
    122         for ( k; 1.5 ~ @ : j; -5 -~ @ ~ 2 : i; 10 ) { sout | i | j | k; } sout | nl;
     194        for ( s; (S){0} -~  (S){10,10} ) { sout | s; }           sout | nl;
     195        for ( s; (S){0} -~  (S){10,10} ~ (S){1} ) { sout | s; } sout | nl;
     196        for ( s; (S){0} -~= (S){10,10} ) { sout | s; }           sout | nl;
     197        for ( s; (S){0} -~= (S){10,10} ~ (S){1} ) { sout | s; } sout | nl | nl;
     198
     199        fred();
    123200}
    124201
Note: See TracChangeset for help on using the changeset viewer.