Commit Graph

33755 Commits

Author SHA1 Message Date
svenbarth
3ebb2522f1 consume_generic_type_parameter now parses the available parameters first before deciding which generic def is the correct one (this is stored in the "def" variable of the parent frame). The count of the parameters and the order is checked.
parse_proc_head itself uses the correct def (the def found by consume_generic_type_parameter in mode Delphi and the first generic def of the symbol in the other modes) which is available in the "def" variable.

Status of generics:
Non-Delphi generics now work as before and declarations of Delphi generics work as well. Inline specialisations don't work currently.

git-svn-id: branches/svenbarth/generics@17396 -
2011-05-02 19:47:53 +00:00
svenbarth
bc45405a15 Added two TODOs for places that I'll need to adjust for inline specializations.
git-svn-id: branches/svenbarth/generics@17395 -
2011-05-02 19:46:41 +00:00
svenbarth
b18772916b * ptype.pas:
"generate_specialization" now parses the generic parameters without verifying them. The verification is done after their count is known and thus the correct generic def can be determined.

Note: It does currently only work with the first found symbol, the extended lookup needs to be implemented yet (including the unit name works though)

* pexpr.pas:
In "factor_read_id" an "identifer not found" error is generated if the undefined non-generic def is used (e.g. as a type for a variable)

Note: This check needs to be adjusted for the case "typeonly=false".

Status of generics:
Specializations can now be parsed, but declarations containing methods are still broken, because the correct def is not yet resolved (not even talking about inline specializations yet ;) )

git-svn-id: branches/svenbarth/generics@17394 -
2011-05-02 19:45:34 +00:00
svenbarth
80100734c5 *type symbol overloads are only allowed in mode Delphi
*a check for overloads with the same count of arguments is not yet in place
*in non-Delphi modes overloads need to be checked for non-generics as well, e.g. "TTest<T>" is already defined and now a "TTest" is declared
*when a generic is encountered and the symbol does not yet exist, a new symbol with an undefineddef is added and the generic def is added as an overload; if the symbol already exists, the generic is just added
*if a non-generic is parsed and the symbol is already defined (but the typedef is still an undefineddef) then the typedef is updated
*the symtable tree (up to the unit symtable (global or local)) gets the "sto_has_generic" flag which will be used when searching generics with the same name, but different parameter counts in different units

State of generics:
broken, because the generic defs are not yet searched/found

git-svn-id: branches/svenbarth/generics@17393 -
2011-05-02 19:44:14 +00:00
svenbarth
39d702f79d Extend ttypesym by a list that will contain all generic "overloads" of this symbol.
git-svn-id: branches/svenbarth/generics@17392 -
2011-05-02 19:42:40 +00:00
svenbarth
dd60ae0203 Rebase to revision 17340
git-svn-id: branches/svenbarth/generics@17341 -
2011-04-18 21:15:52 +00:00
sergei
dd950d3ceb * Fixed bug #19188 again, this time with *correct* value of the AND mask.
* Additionally, fixed result size for unaligned branch of IndexWord and removed the last 'ret' instruction.

git-svn-id: trunk@17340 -
2011-04-18 18:03:18 +00:00
sergei
e1616fd8ef * Replaced 'movzbl %r8b, %r8' because it is rejected by GAS (suffix does not match the operand size). The correct instruction is 'movzbq %r8b, %r8' but that one is rejected by FPC reader instead. Provides a fix for broken builds of targets using external assembler (Mantis #19188).
git-svn-id: trunk@17339 -
2011-04-18 13:31:07 +00:00
vladob
46d50c9ebc fcl-stl fixes2
git-svn-id: trunk@17338 -
2011-04-18 12:05:27 +00:00
vladob
80dcd5f937 fcl-stl fixes
git-svn-id: trunk@17337 -
2011-04-18 12:05:09 +00:00
paul
f904f41664 compiler: don't allow local or anonymous records to have types (the second part of issue #0019099)
git-svn-id: trunk@17336 -
2011-04-18 06:10:56 +00:00
paul
550ad700c3 compiler: allow class declarations inside records (1 part of issue #0019099)
git-svn-id: trunk@17335 -
2011-04-18 03:26:46 +00:00
paul
56cd7b3450 compiler: allow use of default properties for records (issue #0019098)
git-svn-id: trunk@17334 -
2011-04-18 03:15:58 +00:00
sergei
62e11742bf * Reverted STD_xxx_HANDLE constants back to DWORD type (issue introduced in r15824). These are not handles, and are 32-bit even in Win64. See http://msdn.microsoft.com/en-us/library/ms683231.aspx
+ added a test to help detecting this happening again.

git-svn-id: trunk@17333 -
2011-04-17 22:27:56 +00:00
florian
d3e0105ba8 + Italian UTF-8 message file, contributed by Massimo Soricetti, resolves #19179
git-svn-id: trunk@17332 -
2011-04-16 20:41:59 +00:00
florian
6b4f13c1d7 * workaround for bug in GetThreadLocale on some W7, resolves #18574
git-svn-id: trunk@17331 -
2011-04-16 20:38:04 +00:00
michael
953560eeaa * Fixed compilation of apache modules in Lazarus
git-svn-id: trunk@17329 -
2011-04-16 14:36:19 +00:00
florian
ee54a8b879 * Merged helper branch made by Sven Barth
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
 U   rtl/inc/objc1.inc
U    rtl/inc/system.inc
U    rtl/objpas/typinfo.pp
A    tests/test/tchlp30.pp
A    tests/test/thlp35.pp
A    tests/test/tchlp3.pp
A    tests/test/thlp7.pp
A    tests/test/trhlp24.pp
A    tests/test/tchlp13.pp
A    tests/test/thlp44.pp
A    tests/test/thlp18.pp
A    tests/test/trhlp33.pp
A    tests/test/tchlp22.pp
A    tests/test/thlp27.pp
A    tests/test/trhlp16.pp
A    tests/test/tchlp31.pp
A    tests/test/thlp36.pp
A    tests/test/tchlp4.pp
A    tests/test/thlp8.pp
A    tests/test/trhlp25.pp
A    tests/test/trhlp1.pp
A    tests/test/uhlp41a.pp
A    tests/test/tchlp40.pp
A    tests/test/tchlp14.pp
A    tests/test/thlp19.pp
A    tests/test/trhlp34.pp
 U   tests/test/ttpara1.pp
A    tests/test/tchlp23.pp
A    tests/test/thlp28.pp
A    tests/test/urhlp14.pp
A    tests/test/trhlp17.pp
A    tests/test/tchlp32.pp
A    tests/test/uhlp43.pp
A    tests/test/thlp37.pp
A    tests/test/tchlp5.pp
A    tests/test/thlp9.pp
A    tests/test/trhlp26.pp
A    tests/test/trhlp2.pp
A    tests/test/uchlp12.pp
A    tests/test/tchlp41.pp
A    tests/test/uhlp41b.pp
A    tests/test/tchlp15.pp
A    tests/test/trhlp35.pp
 U   tests/test/ttpara2.pp
A    tests/test/tchlp50.pp
A    tests/test/tchlp24.pp
A    tests/test/thlp29.pp
A    tests/test/trhlp18.pp
A    tests/test/thlp10.pp
 U   tests/test/cg/ttincdec.pp
A    tests/test/tchlp33.pp
A    tests/test/thlp38.pp
A    tests/test/tchlp6.pp
A    tests/test/trhlp27.pp
A    tests/test/trhlp3.pp
A    tests/test/tchlp42.pp
A    tests/test/tchlp16.pp
A    tests/test/trhlp36.pp
A    tests/test/tchlp51.pp
A    tests/test/tchlp25.pp
A    tests/test/trhlp19.pp
A    tests/test/thlp11.pp
A    tests/test/tchlp34.pp
A    tests/test/thlp39.pp
A    tests/test/tchlp7.pp
A    tests/test/trhlp28.pp
A    tests/test/thlp20.pp
A    tests/test/trhlp4.pp
A    tests/test/tchlp43.pp
A    tests/test/tchlp17.pp
A    tests/test/trhlp37.pp
A    tests/test/tchlp52.pp
A    tests/test/tchlp26.pp
A    tests/test/thlp1.pp
A    tests/test/urhlp17.pp
A    tests/test/thlp12.pp
A    tests/test/tchlp35.pp
A    tests/test/tchlp8.pp
A    tests/test/trhlp29.pp
A    tests/test/thlp21.pp
A    tests/test/trhlp5.pp
A    tests/test/tchlp44.pp
A    tests/test/tchlp18.pp
A    tests/test/trhlp10.pp
A    tests/test/trhlp38.pp
A    tests/test/thlp30.pp
A    tests/test/tchlp53.pp
A    tests/test/tchlp27.pp
A    tests/test/thlp2.pp
A    tests/test/thlp13.pp
A    tests/test/tchlp36.pp
A    tests/test/tchlp9.pp
A    tests/test/thlp22.pp
A    tests/test/trhlp6.pp
A    tests/test/tchlp45.pp
A    tests/test/tchlp19.pp
A    tests/test/trhlp11.pp
A    tests/test/trhlp39.pp
A    tests/test/thlp31.pp
A    tests/test/tchlp54.pp
A    tests/test/tchlp28.pp
A    tests/test/uhlp39.pp
A    tests/test/thlp3.pp
A    tests/test/trhlp20.pp
A    tests/test/thlp40.pp
A    tests/test/thlp14.pp
A    tests/test/tchlp37.pp
A    tests/test/thlp23.pp
A    tests/test/trhlp7.pp
A    tests/test/tchlp46.pp
A    tests/test/trhlp12.pp
A    tests/test/thlp32.pp
A    tests/test/tchlp29.pp
A    tests/test/thlp4.pp
A    tests/test/trhlp21.pp
A    tests/test/tchlp10.pp
A    tests/test/thlp41.pp
A    tests/test/thlp15.pp
A    tests/test/tchlp38.pp
U    tests/test/trtti1.pp
A    tests/test/trhlp30.pp
A    tests/test/thlp24.pp
A    tests/test/trhlp8.pp
A    tests/test/uchlp18.pp
A    tests/test/tchlp47.pp
A    tests/test/trhlp13.pp
A    tests/test/thlp33.pp
A    tests/test/tchlp1.pp
A    tests/test/thlp5.pp
A    tests/test/trhlp22.pp
A    tests/test/tchlp11.pp
A    tests/test/thlp42.pp
A    tests/test/thlp16.pp
A    tests/test/tchlp39.pp
A    tests/test/uhlp3.pp
A    tests/test/trhlp31.pp
A    tests/test/tchlp20.pp
A    tests/test/uhlp31.pp
A    tests/test/thlp25.pp
A    tests/test/trhlp9.pp
A    tests/test/tchlp48.pp
A    tests/test/trhlp40.pp
A    tests/test/trhlp14.pp
A    tests/test/thlp34.pp
A    tests/test/tchlp2.pp
A    tests/test/thlp6.pp
A    tests/test/trhlp23.pp
A    tests/test/tchlp12.pp
A    tests/test/thlp43.pp
A    tests/test/thlp17.pp
A    tests/test/trhlp32.pp
A    tests/test/tchlp21.pp
A    tests/test/thlp26.pp
A    tests/test/tchlp49.pp
A    tests/test/trhlp41.pp
A    tests/test/trhlp15.pp
 U   tests/webtbf/tw13815.pp
 U   tests/tbf/tb0216.pp
U    compiler/msgtxt.inc
U    compiler/nld.pas
U    compiler/dbgdwarf.pas
U    compiler/sparc/cgcpu.pas
U    compiler/fmodule.pas
U    compiler/i386/cgcpu.pas
U    compiler/msgidx.inc
U    compiler/pdecsub.pas
U    compiler/ncgld.pas
U    compiler/symdef.pas
U    compiler/nobj.pas
U    compiler/nflw.pas
U    compiler/pdecobj.pas
U    compiler/objcdef.pas
U    compiler/pinline.pas
U    compiler/pexpr.pas
U    compiler/ncgrtti.pas
U    compiler/x86_64/cgcpu.pas
U    compiler/htypechk.pas
U    compiler/parser.pas
U    compiler/tokens.pas
U    compiler/symbase.pas
U    compiler/ncal.pas
U    compiler/symtable.pas
U    compiler/pp.lpi
U    compiler/m68k/cgcpu.pas
U    compiler/ppu.pas
U    compiler/rautils.pas
U    compiler/arm/cgcpu.pas
U    compiler/ptype.pas
U    compiler/symconst.pas
U    compiler/mips/cgcpu.pas
U    compiler/msg/errore.msg
U    compiler/psub.pas
U    compiler/utils/ppudump.pp
 U   compiler/utils
U    compiler/pdecvar.pas
U    compiler/ncgcal.pas
U    compiler/pdecl.pas
U    compiler/dbgstabs.pas
U    compiler/ppcgen/cgppc.pas
 U   packages/fcl-xml/tests/README_DOM.txt
 U   packages/unzip/src/unzip51g.pp
 U   packages/winunits-base/src/dwmapi.pp
 U   .

git-svn-id: trunk@17328 -
2011-04-16 14:01:44 +00:00
florian
a31c879e7b * run test only if the platform supports the extended type
git-svn-id: trunk@17325 -
2011-04-15 20:53:11 +00:00
paul
872d9e98ea rtl: fix return type of 2 callback procedures (UINT -> UINT_PTR)
git-svn-id: trunk@17324 -
2011-04-15 13:02:46 +00:00
sergei
06311e5aad * i386-win32: Pass const variants by reference to safecall procedures, confirmed this behavior with Delphi (in general, safecall on win32 must behave as close as possible to stdcall).
git-svn-id: trunk@17323 -
2011-04-15 12:12:36 +00:00
michael
6408dbfbb3 * Free Contents of TFPWebAction in Destructor
git-svn-id: trunk@17322 -
2011-04-15 08:13:05 +00:00
michael
48b79b9c31 * TParam.AsXXX now also sets Bound
git-svn-id: trunk@17321 -
2011-04-14 21:40:23 +00:00
florian
58fcf9dc52 * probably mark an overloaded := operator used as type conversion as used, resolves #18909
git-svn-id: trunk@17320 -
2011-04-14 21:11:27 +00:00
sergei
6bca660e76 * Patch from LacaK, eliminates redundant variant finalization and try..finally block in TFMTBcdFactory.CastTo
git-svn-id: trunk@17319 -
2011-04-14 20:25:41 +00:00
sergei
30f7bff09d * Did a clean rewrite of IndexByte and IndexWord, resulting in somewhat less instructions.
+ IndexWord for the case of unaligned buffer: implemented using aligned reads.
+ tindex.pp: Added testing correctness of IndexWord with unlimited length.

git-svn-id: trunk@17317 -
2011-04-14 17:12:04 +00:00
svenbarth
52eb6fe904 Created a branch for working on various aspects of generics
git-svn-id: branches/svenbarth/generics@17316 -
2011-04-14 07:11:07 +00:00
vladob
9781c0d051 more tests in fcl-stl
git-svn-id: trunk@17315 -
2011-04-13 10:14:24 +00:00
svenbarth
35b47e491c Rebase to revision 17306
git-svn-id: branches/svenbarth/classhelpers@17314 -
2011-04-13 10:04:14 +00:00
svenbarth
9eafb5e7cd For "inherited" the use of helpers must be allowed as well, as those might use a ttypenode of a helper as well.
git-svn-id: branches/svenbarth/classhelpers@17313 -
2011-04-13 09:46:33 +00:00
paul
16b2db1b8f winunits-base: don't use "packed records", pack all records according to winapi headers definition: {$packrecords 1} for non win64 mode
git-svn-id: trunk@17312 -
2011-04-13 09:12:12 +00:00
paul
32ec75216c rtl: fix printer hook procedures - they return PTR_UINT instead of UINT
git-svn-id: trunk@17311 -
2011-04-13 08:47:05 +00:00
vladob
5dd0d99368 iterators for fcl-stl containers
git-svn-id: trunk@17310 -
2011-04-12 13:50:19 +00:00
svenbarth
3c477c67ec Removing "current_syssym" again
git-svn-id: branches/svenbarth/classhelpers@17309 -
2011-04-12 07:15:32 +00:00
svenbarth
24243f87e8 Added a check similar to the "allowed" one to be able to remove the "current_syssym" variable again.
* nld.pas:
- added "helperallowed" boolean field to ttypenode which is set to false by default
- check that field in ttypenode.pass_1 and generate an error if it's false
* ncal.pas:
check the "helperallowed" field if the methodpointer node is a typenode and contains a helper; this is needed, because pass_1 of ttypenode is never called in case of "TSomeHelper.SomeMethod"
* pexpr.pas: 
- allow helpers in "sizeof" and "typeinfo"
- remove the check against "TSomeHelper.SomeMethod", but leave an explaining comment there

git-svn-id: branches/svenbarth/classhelpers@17308 -
2011-04-12 07:10:36 +00:00
svenbarth
798cc01ffe Corrected two tests ("modeswitch" => "mode")
git-svn-id: branches/svenbarth/classhelpers@17307 -
2011-04-12 07:02:57 +00:00
pierre
83e0b5207d + Add graph, wincrt and winmouse units for win64 OS target
git-svn-id: trunk@17306 -
2011-04-11 10:20:46 +00:00
pierre
d3d34c61f6 * Use system thread functions and allow win64 compilation
git-svn-id: trunk@17305 -
2011-04-11 10:19:43 +00:00
pierre
9420a8ddf4 * Change Message function return type to be Win64 compatible
git-svn-id: trunk@17304 -
2011-04-11 10:19:04 +00:00
marco
5595aafa90 * support for Delphi/64 NativeInt and NativeUint as shown in several promotions on the web. (aliases for ptrint/ptruint)
git-svn-id: trunk@17303 -
2011-04-11 09:48:51 +00:00
sekelsenmat
a37d6edba2 fpvectorial: Merges changes, improved DXF reading, adds pen and color data to the data structures
git-svn-id: trunk@17301 -
2011-04-11 07:28:30 +00:00
florian
4d19f6c532 * patch by Jeppe Johansen to be able to generate debug info if an rtl without variant support is used, resolves #18483
git-svn-id: trunk@17300 -
2011-04-10 21:11:03 +00:00
vladob
ae8a0c44bb hash set + hash map 2
git-svn-id: trunk@17299 -
2011-04-10 20:31:01 +00:00
vladob
cda5fa8f32 hash set + hash map
git-svn-id: trunk@17298 -
2011-04-10 20:24:57 +00:00
florian
ff6ab60508 * prefer typecast currency->extended over currency->single/double because the former loses no precision while the latter might cause a loss of precision, resolves #19077
git-svn-id: trunk@17297 -
2011-04-10 19:40:18 +00:00
florian
c97869bd89 * merge user sections support branch
git-svn-id: trunk@17285 -
2011-04-10 18:08:59 +00:00
sergei
c939beee70 * Changed register allocation order for x86_64, putting first registers that don't need to be preserved by procedure. This way registers needing preservation are allocated less frequently (and for non-complex leaf functions not allocated at all), reducing amount of entry/exit code.
git-svn-id: trunk@17284 -
2011-04-10 18:04:17 +00:00
michael
1d07ae97c4 * Added combined example: login using RPC and edit data using FPWebdata
git-svn-id: trunk@17283 -
2011-04-10 17:59:36 +00:00
michael
eb2e21587b * Published CreateSession property
git-svn-id: trunk@17282 -
2011-04-10 17:18:38 +00:00
sergei
c5e7902e4b + x86_64 optimized assembler functions IndexByte and IndexWord
+ Extended tests of IndexByte with checks to verify correct operation when passed length is -1.

git-svn-id: trunk@17281 -
2011-04-10 17:05:18 +00:00