Commit Graph

11385 Commits

Author SHA1 Message Date
pierre
fb8d60a03e * use same alignment for i386 solaris as for i386 linux
git-svn-id: trunk@14174 -
2009-11-14 16:27:20 +00:00
paul
bcca902839 compiler: add fpc_has_operator_enumerator define
git-svn-id: trunk@14171 -
2009-11-14 11:19:07 +00:00
Jonas Maebe
59d72f12d7 * skip hidden parameters while generating a cppdecl mangled name (patch by
Sven Barth, mantis #15063)

git-svn-id: trunk@14159 -
2009-11-12 20:08:08 +00:00
Jonas Maebe
f7360d47c5 - removed aitconst_indirect_symbol, replaced with tai_directive
(patch by Dmitry Boyarintsev, mantis #15050)

git-svn-id: trunk@14157 -
2009-11-12 19:39:41 +00:00
florian
851b00f8e9 * more properties fixed
git-svn-id: trunk@14156 -
2009-11-12 18:11:10 +00:00
Jonas Maebe
e04198d96f * prefetch next list elements while writing out assembler list, makes
that routine 15-20% faster on my Core 2

git-svn-id: trunk@14137 -
2009-11-10 19:32:49 +00:00
Jonas Maebe
3a774ce66a * fixed alignment for (non-)lazy symbol sections
* converted lazy symbol directive in arm/cgcpu.pas to section, forgotten
    in r14128 (fixes mantis #15047)

git-svn-id: trunk@14135 -
2009-11-10 10:43:15 +00:00
Jonas Maebe
8bc3dbafb7 * emit alignment of tai_section's instead of ignoring it
git-svn-id: trunk@14134 -
2009-11-10 10:34:15 +00:00
Jonas Maebe
edacea82be * changed assembler directives for darwin lazy/non-lazy symbol pointers
and init/fini routines into their section equivalents (based on patch
    by Dmitry Boyarintsev, mantis #15037)

git-svn-id: trunk@14128 -
2009-11-09 22:20:01 +00:00
Jonas Maebe
62c1781bea + mw_pascal calling convention support for ARM, ppc64 and x86_64: identical
to cdecl, except that all const record parameters are passed by reference
    (required for Mac OS X interfaces)

git-svn-id: trunk@14114 -
2009-11-08 13:42:11 +00:00
giulio2
58eb923ff5 Allow negative offset in segment:offset declarations, if the resulting
address is valid (fixes webtbs/tw1622.pp on go32v2).

git-svn-id: trunk@14100 -
2009-11-07 14:38:13 +00:00
paul
e520a2b941 compiler: for-in loop: fix temporary array range type
git-svn-id: trunk@14095 -
2009-11-07 10:56:54 +00:00
paul
cc8f91f2d0 compiler: allow enumeration of multidimensional arrays with implicit array conversion + test
git-svn-id: trunk@14093 -
2009-11-07 06:21:07 +00:00
pierre
d12c36ee32 * add to missing CPUs
git-svn-id: trunk@14090 -
2009-11-07 00:23:04 +00:00
paul
aa357a5f3b compiler: fix error message positions for the for-in loop errors
git-svn-id: trunk@14088 -
2009-11-06 17:52:42 +00:00
paul
e511555d64 compiler: fix position information of the for-in loop (needs for correct debug info)
git-svn-id: trunk@14087 -
2009-11-06 17:42:55 +00:00
pierre
b9a8592a11 * fix problem when svn is not found and add phony revision rule
git-svn-id: trunk@14085 -
2009-11-06 16:46:48 +00:00
pierre
fec158cfdf * Remove FORCE for revision.inc target, correct rule
git-svn-id: trunk@14084 -
2009-11-06 15:10:56 +00:00
pierre
a977607e49 + revision.inc rule added
git-svn-id: trunk@14083 -
2009-11-06 14:47:32 +00:00
pierre
3f28cfafe2 * Only update revision.inc if it is already present
git-svn-id: trunk@14079 -
2009-11-06 11:13:42 +00:00
pierre
2295a9f23b * add -dREVINC even when REVSTR is already set, needed for cycle
git-svn-id: trunk@14077 -
2009-11-06 10:34:24 +00:00
pierre
b6d0a93599 * Fix REVSTR for windows OS
git-svn-id: trunk@14076 -
2009-11-06 10:18:07 +00:00
pierre
9bd672b3e4 * Use SRCEXEEXT for svnversion as EXEEXT is for target and not defined in prerules
git-svn-id: trunk@14075 -
2009-11-06 09:35:16 +00:00
pierre
a0159a9740 * Adapt script to DJGPP 2.04
git-svn-id: trunk@14073 -
2009-11-06 00:13:42 +00:00
Jonas Maebe
c1cdf1e087 * merged objc branch:
+ basic support for Objective-Pascal: objcclass, objcprotocol,
      objcselector on all Darwin platforms (ppc32/64, i386, x86_64, ARM),
      see http://wiki.freepascal.org/FPC_PasCocoa and
      http://wiki.freepascal.org/FPC_PasCocoa/Differences for some dialect
      details. Use {$modeswitch objectivec1} to activate
    + Cocoa, iPhone/UIKit and WebKit interfaces for use with the new
      syntax mode

git-svn-id: trunk@14068 -
2009-11-05 16:48:28 +00:00
paul
5c660680b7 compiler: don't allow for-in loop for the enums with jumps. test should fail.
git-svn-id: trunk@14067 -
2009-11-05 15:37:07 +00:00
paul
eee6658a46 revert occasionally committed pp.lpi
git-svn-id: trunk@14064 -
2009-11-05 03:34:06 +00:00
Jonas Maebe
a60869fe64 + support for Objective-C classes/protols/options
git-svn-id: branches/objc@14050 -
2009-11-04 16:45:14 +00:00
Jonas Maebe
102a2a4796 * changed "optional" field (which denotes whether an objc protocol method is
required or optional) into a procoption flag
  * reordered some procdef fields to have less wasted space due to alignment

git-svn-id: branches/objc@14049 -
2009-11-04 16:29:39 +00:00
Jonas Maebe
559e284bd0 * merged r13762-14047 from trunk
git-svn-id: branches/objc@14048 -
2009-11-04 15:50:26 +00:00
paul
cfa89b009f compiler: check that method marked by 'enumerator MoveNext' have no required arguments. correct error message.
git-svn-id: trunk@14045 -
2009-11-04 13:33:57 +00:00
paul
2f0cde4625 compiler:
- don't find MoveNext functions with the required arguments
  - add some test from Alexander S. Klenin
(issue #0014990)

git-svn-id: trunk@14044 -
2009-11-04 13:21:10 +00:00
paul
5f7bc2d3b5 compiler:
- don't allow operator enumerator with non object/class/interface result type
  - add some test from Alexander S. Klenin
(issue #0014990)

git-svn-id: trunk@14043 -
2009-11-04 12:59:05 +00:00
paul
61ec5e1417 compiler:
- fix for-in loop for empty sets
  - add some test from Alexander S. Klenin
(issue #0014990)

git-svn-id: trunk@14042 -
2009-11-04 12:25:01 +00:00
paul
5752be310d compiler:
- fix for-in loop for string const array
  - add some test from Alexander S. Klenin
(issue #0014990)

git-svn-id: trunk@14041 -
2009-11-04 12:07:42 +00:00
marco
ac5552cec0 * German msg files from KMS, mantis 14966
git-svn-id: trunk@14009 -
2009-11-02 20:15:14 +00:00
paul
aa5a5e79ce 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 -
2009-11-02 03:24:48 +00:00
Jonas Maebe
8d65471fe2 * give a proper error when trying to use val() on a boolean (mantis #14777)
* don't allow a boolean or (wide)char to be used as the "error" parameter
    for val()

git-svn-id: trunk@14006 -
2009-11-01 17:18:40 +00:00
paul
dfef902c53 rtl: introduce new TObject methods: UnitName, GetHashCode, Equals, ToString added for compatibility with delphi 2009.
+ changes in compiler, utils, packages to resolve identifier conflicts with the new TObject methods (like changing of UnitName arguments to AUnitName, adding Classes. before the toString, etc). (issue #0014931)

git-svn-id: trunk@14005 -
2009-11-01 16:22:47 +00:00
paul
dfdfec0201 compiler: don't write zero ClassInfo pointer even if class does not have published methods rtti (issue #14930)
git-svn-id: trunk@14004 -
2009-11-01 16:01:23 +00:00
Jonas Maebe
3e624d990d * only allow one "message" modifier per method declaration (mantis #14946)
git-svn-id: trunk@14001 -
2009-11-01 15:23:57 +00:00
paul
a901cd3e91 compiler: don't select non-valid assignment operator (have more than 1 argument) since this cause an internal error (bug #0014962)
git-svn-id: trunk@13998 -
2009-11-01 14:41:33 +00:00
paul
e784ec1079 merge revisions 13898-13899:
- 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 -
2009-11-01 14:06:30 +00:00
Jonas Maebe
d61eb3528f * make strict string var checking ({$v+}) the default in TP and Delphi modes
(mantis #14929)

git-svn-id: trunk@13966 -
2009-10-29 15:52:14 +00:00
Jonas Maebe
643cbaf3b6 * made internalerror unique
git-svn-id: trunk@13964 -
2009-10-29 15:35:00 +00:00
Jonas Maebe
dd937bd32d * don't crash when looking for a local/parasym while current_procinfo is
nil, such as while parsing a property definition (mantis #14849)

git-svn-id: trunk@13958 -
2009-10-26 13:48:58 +00:00
florian
292b36205a -- Zusammenführen von r13892 in ».«:
A    tests/test/tsymlibrary1.pp
U    compiler/msgtxt.inc
U    compiler/msgidx.inc
U    compiler/htypechk.pas
U    compiler/msg/errore.msg

git-svn-id: trunk@13953 -
2009-10-25 08:58:22 +00:00
florian
ea00759588 + final modifier support for methods by Paul Ishenin
-- 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 -
2009-10-24 11:48:52 +00:00
Jonas Maebe
fffa66e2f9 * only allow implicit conversions from 0 to NIL in Delphi mode, rather than
from any ordinal constant, and give a warning for this one allowed
    conversion like Kylix does (mantis #14713)
  * this required calling simplify from typecheckpass in ttypeconvnode for
    cord_to_pointer, because this simplification prevents the type checking
    from happening (but the typecheck itself also does that simplification)

git-svn-id: trunk@13919 -
2009-10-22 19:49:08 +00:00
Jonas Maebe
7e0a5aec4c * allowed open "packed" arrays (same as regular open arrays, for
compatibility with some other Pascal compilers) (mantis #14812)

git-svn-id: trunk@13918 -
2009-10-22 19:48:35 +00:00