Skip to content
  • paul's avatar
    merge revisions:... · aa5a5e79
    paul authored
    merge revisions: 13909,13923,13924,13934,13935,13942,13943,13944,13946,13948,13950,13951,13952,13983,13994:
    rtl: add enumerators to the basic classes
    tests: add enumerators test which compiles and work both by fpc and dcc
    compiler: 
      + start for-in loop implementation: implement for-in loop for types (enumerations and ranges), strings, arrays and sets. todo: perform type checking, optimize array and string loops - use temp for expression, implement for-in loop for classes
    test:
      + add a simple test for the 'for-in' loop
    compiler: fix string for-in loop. now it uses a temp variable to store string expression result
    complier: fix for-in array loop. use a temp variable for the loop expression only if loop is not an open array loop
    complier: continue enumerator implementation:
      + add operator enumerator which give an ability to add enumerator for an existent type (for example to override builtin string enumerator)
      + add class enumerator support via delphi compatible GetEnumerator method + enumerator class/object template (function MoveNext: Boolean; property Current)
      + tests
    compiler: fix for-in loop for arrays. delphi does not copy arrays to a temp variable and it is possible to change array during loop. + test
    compiler: add reference for the enumerator operator when it is used + another test for operator enumerator for a class
    compiler: add reference for the enumerator operator when it is used + another test for operator enumerator for a class
    compiler: enumerator directive support:
      + allow to mark methods and properties by 'enumerator MoveNext' and 'enumerator Current' modifiers. Parser checks return types and duplicates.
      + prefer *marked* by enumerator directive methods and properties than GetEnumerator and Current builtin symbols
      + increase ppu version
      + test
    rtl: add IEnumerator and IEnumerable interfaces declarations
    tests: for-in loop tests:
      + add small comment at the top of test program
    compiler: allow 'enumerator MoveNext' for the interface function declaration + test
    compiler: move all for-in loop helpers to the nflw unit
    compiler: don't allow the compiler to choose the non-valid enumerator operator for the for-in loop
    
    git-svn-id: trunk@14008 -
    aa5a5e79