Am 16.07.10 12:46, schrieb Michael Van Canneyt:
Always learning something new.
One is never too old to learn :-)

Michael.
But one is always able to age faster,
while boldly going to where no man has gone
baldly before :-) (spelling intentional)

While testing with a simplified usage pattern I encountered a compiler problem.
Should I report a bug - or am I missing something ?

helmut


--snip--
program project_static2;
{$static on}
type
  Etyp=(t1,t2,t3);

  function ProxyObject_IsInSubrange(const typ:Etyp):boolean;
  begin
    ProxyObject_IsInSubrange:=typ<=t2;
  end;
type
  ProxyObject=object
    function IsInSubrange(const typ:Etyp):boolean;static;
  end;

  RealObject=object
    mytyp:Etyp;
    function IsInSubrange:boolean;
  end;

function RealObject.IsInSubrange: boolean;
begin
IsInSubrange:=ProxyObject.IsInSubrange(mytyp); // project1.lpr(25,15) Error: Class isn't a parent class of the current class IsInSubrange:=ProxyObject_IsInSubrange(mytyp); //works but very ugly (due to lots of similar code)
end;

function ProxyObject.IsInSubrange(const typ: Etyp): boolean;
begin
  IsInSubrange:=typ<=t2;
end;

var o:RealObject;

begin
 writeln(ProxyObject.IsInSubrange(t3));
 o.mytyp:=t3;
 writeln (o.IsInSubrange);
end.
--snap--

Output:
--- fpc 2.4.0:

BigMac:test helly$ /usr/local/lib/fpc/2.4.0/ppc386  project_static2.lpr
Free Pascal Compiler version 2.4.0 [2009/12/20] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Darwin for i386
Compiling project_static2.lpr
project_static2.lpr(22,29) Error: Class isn't a parent class of the current class
Fatal: Compilation aborted
An unhandled exception occurred at $000994AD :
EAccessViolation : Access violation
  $000994AD
  $001264B6
  $0012A57D
  $0012A58E
  $0012A58E
  $0012A58E
  $0012ADF0
  $00119AD9
  $00119D89
  $001118E1
  $00114BAA
  $0011555C
  $001158B2
  $0011176D
  $00114BAA
  $001507FC
  $000310F3

--- fpc 2.5.1 + debuginfo
BigMac:test helly$ /usr/local/lib/fpc/2.5.1/ppc386  project_static2.lpr
Free Pascal Compiler version 2.5.1 [2010/07/16] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Darwin for i386
Compiling project_static2.lpr
project_static2.lpr(2,2) Warning: Illegal compiler directive "$STATIC"
project_static2.lpr(22,29) Error: Class isn't a parent class of the current class
Fatal: Compilation aborted
An unhandled exception occurred at $000B2CED :
EAccessViolation : Access violation
$000B2CED TYPECHECKPASS_INTERNAL, line 70 of /Users/helly/pascal/fpc_trunk/compiler/pass_1.pas $0014B006 FACTOR, line 2317 of /Users/helly/pascal/fpc_trunk/compiler/pexpr.pas $0014EB9A SUB_EXPR, line 2772 of /Users/helly/pascal/fpc_trunk/compiler/pexpr.pas $0014EBAB SUB_EXPR, line 2774 of /Users/helly/pascal/fpc_trunk/compiler/pexpr.pas $0014EBAB SUB_EXPR, line 2774 of /Users/helly/pascal/fpc_trunk/compiler/pexpr.pas $0014EBAB SUB_EXPR, line 2774 of /Users/helly/pascal/fpc_trunk/compiler/pexpr.pas $0014F261 EXPR, line 2902 of /Users/helly/pascal/fpc_trunk/compiler/pexpr.pas $0013CD97 STATEMENT, line 1111 of /Users/helly/pascal/fpc_trunk/compiler/pstatmnt.pas $0013D0D9 STATEMENT_BLOCK, line 1219 of /Users/helly/pascal/fpc_trunk/compiler/pstatmnt.pas $001346EB BLOCK, line 246 of /Users/helly/pascal/fpc_trunk/compiler/psub.pas $00137B6A TCGPROCINFO__PARSE_BODY, line 1440 of /Users/helly/pascal/fpc_trunk/compiler/psub.pas $00138516 READ_PROC, line 1753 of /Users/helly/pascal/fpc_trunk/compiler/psub.pas $00138902 READ_DECLARATIONS, line 1862 of /Users/helly/pascal/fpc_trunk/compiler/psub.pas $00134519 BLOCK, line 171 of /Users/helly/pascal/fpc_trunk/compiler/psub.pas $00137B6A TCGPROCINFO__PARSE_BODY, line 1440 of /Users/helly/pascal/fpc_trunk/compiler/psub.pas $0017679C COMPILE, line 403 of /Users/helly/pascal/fpc_trunk/compiler/parser.pas $000334A3 COMPILE, line 249 of /Users/helly/pascal/fpc_trunk/compiler/compiler.pas

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to