Commit Graph

12123 Commits

Author SHA1 Message Date
paul
0be10ee19f compiler: fix comments
git-svn-id: trunk@16796 -
2011-01-21 02:21:15 +00:00
Jonas Maebe
9a6f574f06 * removed (already unused, because of never taken branch) handling of
interfacecom in subscriptnodes, because a COM interface cannot have fields
    -> replaced with check (that actually is performed) to give an
    internalerror() should a reference-counted class type be subscripted

git-svn-id: trunk@16786 -
2011-01-19 14:50:17 +00:00
marco
88fe11958b * one letter type fixed, reported by Vincent
git-svn-id: trunk@16783 -
2011-01-19 11:37:17 +00:00
marco
ee3004a350 * moved an \end{description} so that the user manual compiles again.
git-svn-id: trunk@16782 -
2011-01-19 10:59:49 +00:00
paul
731291aee0 compiler: change Addr function to return untyped pointer by Blaise Thorn (issue #0018512), change/add tests
git-svn-id: trunk@16777 -
2011-01-18 15:23:58 +00:00
Jonas Maebe
e85df4028c * factored out handling of static field accesses
git-svn-id: trunk@16770 -
2011-01-15 20:30:11 +00:00
Jonas Maebe
8a389c16d7 * fixed indentation
git-svn-id: trunk@16767 -
2011-01-15 14:17:50 +00:00
paul
0c9b40acb7 compiler: record operators
- allow operator also if return type match the structure type (before at least one parameter had to match)
  - search both operands symbol tables for a suitable assignment operator
  - test
based on patch of Blaise Thorn (issue #0018490)

git-svn-id: trunk@16762 -
2011-01-14 02:25:48 +00:00
paul
368c215070 compiler: always derive DispInterface from IDispatch, this solve a problem with assigning dispinterface to IUnknown or IDispatch variables
git-svn-id: trunk@16756 -
2011-01-13 04:43:49 +00:00
paul
dad8313512 compiler: handle dispinterfaces the same way as com interfaces because they are IDispatch descendants: increment/decrement they references in assignments and parameters passing by _AddRef, _Release
git-svn-id: trunk@16755 -
2011-01-13 03:38:45 +00:00
sergei
3a23a3ebe0 Initial support of parametrized dispinterface properties:
* When parsing dispinterface properties, pass parameter/index nodes to translate_disp_call() instead of dropping them.
* Distinguish property getters from regular method calls and generate appropriate call descriptors.

git-svn-id: trunk@16753 -
2011-01-12 00:39:11 +00:00
Jonas Maebe
bbf0e35a51 + Support for ARM CPS/CPSIE/CPSID instructions and mode flag bitfield
operand (patch by Jeppe Johansen, mantis #18334)

git-svn-id: trunk@16750 -
2011-01-11 16:02:51 +00:00
Jonas Maebe
d76ddcabe6 * don't give an internalerror when trying to explicitly apply an invalid
typecast to an array-of-const (mantis #18267)

git-svn-id: trunk@16749 -
2011-01-11 15:47:56 +00:00
joost
1e92e576dd * Use TDebugInfoDwarf2.appenddef_object's DoAppend also for writing the
debuginfo for standard classes in the Dwarf-3 format. (No changes for -gw2
   debuginfo. -gw3 debuginfo is changed)

git-svn-id: trunk@16748 -
2011-01-11 10:28:35 +00:00
paul
f9f316ac45 compiler: don't set a structure to routine if it accidentally match some (bug #0018452)
git-svn-id: trunk@16747 -
2011-01-11 02:00:27 +00:00
joost
d5de153e39 * Refactored TDebugInfoDwarf2.appenddef_object, no functional changes, to easy code-reuse for Dwarf3s appenddef_object
git-svn-id: trunk@16742 -
2011-01-09 12:56:36 +00:00
paul
8f7ada0db0 compiler: use anonymous inherited in all cases where the next token <> _ID (bug #0018443)
git-svn-id: trunk@16741 -
2011-01-09 05:08:04 +00:00
joost
a03c7cdc69 * Added two more Dwarf-4 constants
git-svn-id: trunk@16739 -
2011-01-08 16:56:36 +00:00
paul
86482658a8 compiler: fix tgeneric11 test:
- add stoAllowSpecialization to TSingleTypeOption enum to differentiate between any new type definition and only generic specialization
  - allow only specializations for class parents (not any other type definition)
  - allow specialization for method arguments and return types (maybe this must be allowed only in delphi mode but in this case tgeneric11 must fail)

git-svn-id: trunk@16738 -
2011-01-08 16:14:22 +00:00
Jonas Maebe
a40fe9c078 * fixed potentially wrong operation size in tgppccasenode.genlinearlist()
(was in practice currently probably always correct though)

git-svn-id: trunk@16737 -
2011-01-08 14:20:25 +00:00
joost
faeb80b55c * Write Dwarf-debug info for class constants
git-svn-id: trunk@16736 -
2011-01-08 14:11:05 +00:00
paul
def46487eb compiler: simplify _CLASS token handling in record declarations too
git-svn-id: trunk@16734 -
2011-01-08 05:27:19 +00:00
paul
d37fde7302 compiler: simplify _CLASS token handling in object declarations by Sven Barth (issue #18425)
git-svn-id: trunk@16733 -
2011-01-08 05:24:25 +00:00
Jonas Maebe
b49b3ecc61 * one more fix that should have been part of r16717: also generate
addr_pic_no_got references for linux in a_loadaddr_ref_reg()

git-svn-id: trunk@16728 -
2011-01-07 19:17:47 +00:00
paul
4e93ecda3d utils: fix ppudump generic tokenbuf reading
git-svn-id: trunk@16727 -
2011-01-07 17:47:23 +00:00
paul
f5965a9ce4 compiler: specialize record methods the same way as currently done for object and class methods + test
git-svn-id: trunk@16726 -
2011-01-07 16:57:21 +00:00
paul
e0e01899e5 compiler: move parse_generic_parameters to the interface of pdecl unit, move insert_generic_parameter_types to pdecl unit to access them from pdecsub (preparations for generic methods implementation)
git-svn-id: trunk@16724 -
2011-01-06 17:53:46 +00:00
paul
31de2aab1b compiler: change parse_proc_head pd argument access type from var to out
git-svn-id: trunk@16723 -
2011-01-06 17:14:09 +00:00
joost
d97d2490c8 * Fixed the order in which the httpd-units are searched for (bug 18405)
git-svn-id: trunk@16722 -
2011-01-06 14:42:57 +00:00
paul
2599cc63bd compiler: implement generic procedural types
- store type parameter in parasymtable, push it to the symtablestack before parsing arguments and return type
  - move procedure/function declaration parsing to procvar_dec subroutine
  - don't skip parasymtable while searching types because they store type parameters now
  - add TParaSymTable.ReadOnly field to prevent adding defs into symtable. Add defs to the parent symtable in this case (we are adding this symtable to stack to read type parameters only, add defs should go to parent in this case as it was before)

git-svn-id: trunk@16719 -
2011-01-06 11:53:51 +00:00
Jonas Maebe
0da9d36116 * fixed internal assembler for x86-64 so that it correctly handles
relocations for addr_pic_no_got references (do not go via the GOT)
  * fixed code generator so that it generates addr_pic_no_got references
    also for platforms that use the internal assembler (this will break linking
    of some tests that check static data > 2GB on Linux/x86-64, but they were
    already broken before as well because we don't use the "huge" x86-64
    execution model)
  * fixed x86-64 Linux syscall code to not expect GOT-based relocations for
    the system unit's errno variable (it's an implementation-only variable)

git-svn-id: trunk@16717 -
2011-01-06 09:28:25 +00:00
paul
749075a851 compiler: ignore case when check type parameters for identity
git-svn-id: trunk@16710 -
2011-01-05 18:27:05 +00:00
paul
0d6b62d293 compiler: allow generic inline specialization for delphi mode (like TFoo<Integer>.Create)
git-svn-id: trunk@16709 -
2011-01-05 18:12:44 +00:00
paul
d55a141d70 compiler: allow generics as class parents + fixed test
git-svn-id: trunk@16708 -
2011-01-05 05:03:21 +00:00
paul
bd64575add compiler: require generic name with type parameters for the method class prefix (like TGenericClass<T>.MethodName instead of TGenericClass.MethodName) in delphi mode
git-svn-id: trunk@16707 -
2011-01-05 04:35:56 +00:00
paul
fa41b6ffe3 compiler: allow generic classes to derive from generic classes and generic interfaces
- change id_type to single_type in readImplementedInterfacesAndProtocols to allow use of interface specializations inside class parent block
  - change single_type boolean arguments to set, add stoParseClassParent option to that set
  - move parse_generic variable assignment from parse_object_members to outer routine to setup it before parsing class parents
  - return paticular generic in generate_specialization instead of undefineddef to pass class/interface checks inside parent class block
  - add test for delphi mode
  - modify tw11431 to be syntatically correct

git-svn-id: trunk@16706 -
2011-01-04 18:20:40 +00:00
paul
4cfcc7ae7b compiler: implement delphi generic syntax for delphi mode
git-svn-id: trunk@16705 -
2011-01-04 11:06:29 +00:00
Jonas Maebe
5fc94a5076 * don't look for helper executables (assembler, linker, resource compiler,
wpo helpers) in the current directory

git-svn-id: trunk@16689 -
2011-01-02 20:25:41 +00:00
paul
dd921ffc9d utils: fix ppudump:
- show array symtable
  - support unicodestring
  - don't read "Last VTable idx" field in case of interface - this entry is not stored in ppu

git-svn-id: trunk@16688 -
2011-01-02 19:08:35 +00:00
paul
7c33505916 compiler: don't create enum defs for specializations declarations. Enums are stored in the unit symtables and generic declarations already add them there. Therefore specializations should search for enum defs declared by generics and use them instead of own.
git-svn-id: trunk@16686 -
2011-01-02 17:41:51 +00:00
Jonas Maebe
360d102ea4 * fixed some comments after r16684
git-svn-id: trunk@16685 -
2011-01-02 15:31:41 +00:00
Jonas Maebe
3ca3276400 * changed syntax of external objcclasses (see wiki/FPC_PasCocoa). Another
change is that it is now also allowed to specify an external name for
    formal external class definitions, but if they are later mixed with
    regular class definitions the external names have to match.
   o because the "external" status of methods is now set while parsing the
     class rather than afterwards, some procdir compatibility checks had to
     be inlined because they only have to be performed for 
  * also adapted the syntax for external cppclasses in the same way
  * fixed return type of NSObject.retainCount and NSObject.hash
    (NSUInteger instead of cint)
  * moved "patches" directory from cocoaint/src to cocoaint/utils/cocoa-skel
    so they are used by the conversion script when re-parsing the headers
  * updated Objective-C header parser script to
   o use the new external class syntax
   o not write inheritance information for root classes (NSObject, NSProxy)
   o use internal translation tables for some conflicting method names that
    are named specially in objcbase.pp
   and updated parsed headers
  * fixed rtl/inc/objcbase.pp and tests to conform to the new external class
    syntax

git-svn-id: trunk@16684 -
2011-01-02 14:50:46 +00:00
joost
4bd0f6db7a * Dwarf: Hide the implicit pointer from a function-parameter which is passed
by reference, and dereference the (hidden) pointer in the DW_AT_location
   block. This solves problems with function parameters defined as 'var'

git-svn-id: trunk@16683 -
2011-01-02 14:49:20 +00:00
paul
79813da090 compiler: don't allow record case with parameterized members
git-svn-id: trunk@16682 -
2011-01-02 14:01:09 +00:00
paul
55a0fefb1f compiler: implement generic array type:
- add tarraysymtable to store generic type symbols
  - process generic and specialize declarations similar to generic records and classes
  - fix insert_generic_parameter_types to use def passed in argument instead of current_structdef because generic array type can't be assigned to the current_structdef variable
  - increase ppu version because of arraydef changes
  - tests

git-svn-id: trunk@16681 -
2011-01-02 13:16:17 +00:00
paul
906ca89f4e compiler:
- allow pointermath for pchar, pwidechar, array[] of char and array[] of widechar without pointermath directive, 
  - don't check tpointerdef().has_pointer_math if this is not a tpointerdef

This fixes testsuite regression (tbs/tb0439.pp)

git-svn-id: trunk@16679 -
2011-01-02 04:35:05 +00:00
paul
7dd6cf07b4 compiler: comment TSymTableType entries + formatting
git-svn-id: trunk@16675 -
2011-01-01 16:59:33 +00:00
joost
a7cea8606f * Dwarf3: Classes are not encoded as a pointer to a class-structure, but
as a class-structure directly. Make sure that in this case:
     - The size is the size of the structure, not the size of a pointer
     - The (hidden) pointer is dereferenced
     - The class is marked as unallocated when the (hidden) pointer is nil

git-svn-id: trunk@16674 -
2010-12-31 17:45:58 +00:00
paul
fc33a2542b formatting
git-svn-id: trunk@16672 -
2010-12-31 05:46:44 +00:00
paul
e8502b8ec2 compiler: make current_genericdef, current_specializedef tstoreddef instead of tabstractrecorddef to implement generic arrays
git-svn-id: trunk@16671 -
2010-12-31 04:39:16 +00:00