fpc/compiler/i386
paul 56bf42de57 compiler: implement record methods and class methods:
- rename tprocdef._class to tprocdef.struct and change the type from tobjectdef to tabstractrecorddef because methods can belong not to classes only now but to records too
  - replace in many places use of current_objectdef to current_structdef with typcast where is needed
  - add an argument to comp_expr, expr, factor, sub_expr to notify that we are searching type only symbol to solve the problem with records,objects,classes which contains fields with the same name as previosly declared type (like:
  HWND = type Handle;
  rec = record 
    hWnd: HWND;
  end;)
  - disable check in factor_read_id which was made for object that only static fields can be accessed as TObjectType.FieldName outside the object because it makes SizeOf(TObjectType.FieldName) imposible and since the same method was extended to handle records it also breaks a52 package compilation
  - rename tcallcandidates.collect_overloads_in_class to tcallcandidates.collect_overloads_in_struct and addapt the code to handle overloads in records too
  - fix searchsym_type to search also in object ancestors if we found an object symtable
  - add pd_record, pd_notrecord flags to mark procedure modifies which can or can't be used with records. Disallow the next modifiers for records: abstract, dynamic, export, external, far, far16, final, forward, internconst, internproc, interrupt, message, near, override, public, reintroduce, virtual, weakexternal,
Allow the next modifiers for records: static

git-svn-id: branches/paul/extended_records@16526 -
2010-12-09 02:24:46 +00:00
..
ag386nsm.pas + "CExtended" type that is the same as "extended", but conforming to the 2010-02-14 13:45:58 +00:00
aopt386.pas
cgcpu.pas compiler: implement record methods and class methods: 2010-12-09 02:24:46 +00:00
cpubase.inc
cpuinfo.pas * rename cpu instruction set define cpu386 to cpu80386. cpu386 is used already as a family define 2010-01-17 21:16:23 +00:00
cpunode.pas + added {$modeswitch objectivec1}/-Mobjectivec1 mode switch to enable 2009-03-08 18:40:32 +00:00
cpupara.pas * Merged XPCom branch into trunk, added support for constref and changed 2010-10-17 20:58:22 +00:00
cpupi.pas + i386/iphonesim target for the new iPhoneSimulator in Xcode 3.2.4 and 2010-09-29 21:56:47 +00:00
cputarg.pas * initial version of internal Mach-O/i386 assembler by Dmitry Boyarintsev 2010-01-12 19:52:55 +00:00
csopt386.pas * optbase empty skeleton removed with two dependancies. Duplicate unit name caused problems. 2009-05-03 21:31:33 +00:00
daopt386.pas * Fixed spell error revealed by lintian. 2010-10-06 20:33:57 +00:00
i386att.inc * disallow pusha*/popa* for x86_64 (mantis #14862) 2010-07-10 16:22:46 +00:00
i386atts.inc * disallow pusha*/popa* for x86_64 (mantis #14862) 2010-07-10 16:22:46 +00:00
i386int.inc * disallow pusha*/popa* for x86_64 (mantis #14862) 2010-07-10 16:22:46 +00:00
i386nop.inc * fixes assembling of mov ax,<mem16> 2008-11-09 10:24:59 +00:00
i386op.inc * disallow pusha*/popa* for x86_64 (mantis #14862) 2010-07-10 16:22:46 +00:00
i386prop.inc * disallow pusha*/popa* for x86_64 (mantis #14862) 2010-07-10 16:22:46 +00:00
i386tab.inc * disallow pusha*/popa* for x86_64 (mantis #14862) 2010-07-10 16:22:46 +00:00
n386add.pas
n386cal.pas + i386/iphonesim target for the new iPhoneSimulator in Xcode 3.2.4 and 2010-09-29 21:56:47 +00:00
n386inl.pas
n386mat.pas
n386mem.pas * the compiler now explicitly keeps track of the minimally guaranteed 2009-02-08 13:00:24 +00:00
n386set.pas
popt386.pas * perform simple imul->lea transformations also for Pentium 3-class target 2010-11-26 10:30:46 +00:00
r386ari.inc
r386att.inc
r386con.inc
r386dwrf.inc
r386int.inc
r386iri.inc
r386nasm.inc
r386nor.inc
r386nri.inc
r386num.inc
r386op.inc
r386ot.inc
r386rni.inc
r386sri.inc
r386stab.inc
r386std.inc
ra386att.pas
ra386int.pas
rgcpu.pas
rropt386.pas * the compiler now explicitly keeps track of the minimally guaranteed 2009-02-08 13:00:24 +00:00