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 -
- compiler: allow message after the *deprecated* keyword
- compiler: raise an internal error if deprecated message is trying to set to a non clear string pointer
git-svn-id: trunk@13997 -
-- Zusammenführen von r13887 in ».«:
A tests/test/tfinal1.pp
U compiler/msgtxt.inc
U compiler/msgidx.inc
U compiler/pdecsub.pas
U compiler/tokens.pas
U compiler/symconst.pas
U compiler/msg/errore.msg
U compiler/utils/ppudump.pp
-- Zusammenführen von r13890 in ».«:
G compiler/msgtxt.inc
G compiler/msgidx.inc
U compiler/nobj.pas
G compiler/msg/errore.msg
-- Zusammenführen von r13891 in ».«:
A tests/test/tfinal2.pp
git-svn-id: trunk@13938 -
-- Zusammenführen von r13884 in ».«:
U compiler/msgtxt.inc
U compiler/msgidx.inc
U compiler/pdecsub.pas
U compiler/pdecobj.pas
U compiler/tokens.pas
U compiler/ppu.pas
U compiler/symconst.pas
U compiler/msg/errore.msg
U compiler/utils/ppudump.pp
-- Zusammenführen von r13885 in ».«:
A tests/test/tsealed1.pp
A tests/test/tabstract1.pp
A tests/test/tsealed2.pp
-- Zusammenführen von r13893 in ».«:
A tests/test/tsealed3.pp
A tests/test/tsealed4.pp
git-svn-id: trunk@13908 -
+ added support for ibresources, ibwpofile, ibmainname, iblinkotherframeworks
* fixed reading of tobjectdef since we started storing the vmt entries as
part of the objectdef, and since the addition of df_copied_def and
po_dispid
* fixed/completed various copies of enums in symconst/globtype
+ added note to "uses" clause about why we don't just use those units
(to save people from making the same mistake as me, realising it, and
having to change everything back)
git-svn-id: trunk@12803 -
svn+ssh://jonas@svn.freepascal.org/FPC/svn/fpc/branches/wpo
........
r11894 | jonas | 2008-10-13 00:13:19 +0200 (Mon, 13 Oct 2008) | 3 lines
* fixed error that only really caused progblems if the total size
of the messages text is a multiple of 240
........
r12317 | jonas | 2008-12-08 20:03:53 +0100 (Mon, 08 Dec 2008) | 3 lines
* fixed error in fix committed r11894 (we don't write out the last new
line, but we have to reserve memory for the terminating #0)
........
git-svn-id: trunk@12333 -
because due to the mach-o executable format which can contain
binaries for different architectures in a single file, different
names for native and cross compilers are not used on Mac OS X
(mantis #10067)
git-svn-id: trunk@10270 -
http://svn.freepascal.org/svn/fpc/branches/avr
........
r5891 | florian | 2007-01-11 17:30:12 +0100 (Do, 11 Jan 2007) | 2 lines
+ some initial work
........
r10170 | florian | 2008-02-03 11:02:04 +0100 (So, 03 Feb 2008) | 2 lines
* continued to work on avr port
........
r10180 | florian | 2008-02-03 15:29:30 +0100 (So, 03 Feb 2008) | 2 lines
+ a lot of skeleton code for avr added
........
git-svn-id: trunk@10186 -