mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 11:09:39 +02:00

can create ambiguities for the parser in case the field names also exist as modifiers (TP- and Delphi-compatible, mantis #13971) + tests * fixed tests that broke because of this change git-svn-id: trunk@13334 -
43 lines
952 B
ObjectPascal
43 lines
952 B
ObjectPascal
{ Source provided for Free Pascal Bug Report 2454 }
|
|
{ Submitted by "Nikolay Nikolov" on 2003-04-06 }
|
|
{ e-mail: nickysn1983@netscape.net }
|
|
{$MODE objfpc}
|
|
Program Test;
|
|
|
|
Type
|
|
TFunClass = Class(TObject)
|
|
data : Integer;
|
|
Class Procedure FunProc(q : TFunClass);
|
|
End;
|
|
|
|
Class Procedure TFunClass.FunProc(q : TFunClass);
|
|
|
|
Begin
|
|
Writeln(q.data);
|
|
With q Do
|
|
Begin
|
|
Writeln(q.data);
|
|
|
|
Writeln(data); { fpc 1.1 says: Error: Only class methods can be accessed in class methods
|
|
|
|
this is a bug, because 'data' actually means 'q.data' due to the 'with' statement,
|
|
(this can be seen if you make this a normal method by removing the 'Class' keyword
|
|
and running the program, it will writeln q.data, not self.data)
|
|
so it shouldn't cause an error
|
|
}
|
|
End;
|
|
End;
|
|
|
|
Var
|
|
c1, c2 : TFunClass;
|
|
|
|
Begin
|
|
c1 := TFunClass.Create;
|
|
c2 := TFunClass.Create;
|
|
c1.data := 5;
|
|
c2.data := 7;
|
|
c1.FunProc(c2);
|
|
c1.Destroy;
|
|
c2.Destroy;
|
|
End.
|