mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-01 16:44:55 +02:00
* use fact that a method belongs to an objectsymtable to determine that
it is a method (_class is also set for nested procedures of methods), resolves problem reported in http://lists.freepascal.org/lists/fpc-pascal/2010-August/026259.html git-svn-id: trunk@15898 -
This commit is contained in:
parent
a8600c5bed
commit
821d0c5d26
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -9309,6 +9309,7 @@ tests/test/tmaclocalprocparam4d.pp svneol=native#text/plain
|
||||
tests/test/tmaclocalprocparam4e.pp svneol=native#text/plain
|
||||
tests/test/tmaclocalprocparam4f.pp svneol=native#text/plain
|
||||
tests/test/tmaclocalprocparam4g.pp svneol=native#text/plain
|
||||
tests/test/tmaclocalprocparam4h.pp svneol=native#text/plain
|
||||
tests/test/tmacnonlocalexit.pp svneol=native#text/plain
|
||||
tests/test/tmacnonlocalgoto.pp svneol=native#text/plain
|
||||
tests/test/tmacpas1.pp svneol=native#text/plain
|
||||
|
@ -3350,7 +3350,9 @@ implementation
|
||||
|
||||
function tprocdef.is_methodpointer:boolean;
|
||||
begin
|
||||
result:=assigned(_class);
|
||||
{ don't check assigned(_class), that's also the case for nested
|
||||
procedures inside methods }
|
||||
result:=owner.symtabletype=ObjectSymtable;
|
||||
end;
|
||||
|
||||
|
||||
|
39
tests/test/tmaclocalprocparam4h.pp
Normal file
39
tests/test/tmaclocalprocparam4h.pp
Normal file
@ -0,0 +1,39 @@
|
||||
{$mode macpas}
|
||||
type
|
||||
myObject = object
|
||||
procedure procA (x: integer);
|
||||
procedure procC (procedure procD (var y: myObject));
|
||||
end;
|
||||
|
||||
procedure myObject. procC (procedure procD (var y: myObject));
|
||||
var
|
||||
x: myobject;
|
||||
begin
|
||||
procD (x);
|
||||
{more code here ...}
|
||||
end;
|
||||
|
||||
var
|
||||
ok: boolean;
|
||||
|
||||
procedure myObject.ProcA (x: integer);
|
||||
|
||||
procedure ProcB (var y: myObject);
|
||||
begin
|
||||
ok:=true;
|
||||
end;
|
||||
|
||||
begin
|
||||
procC(ProcB);
|
||||
end;
|
||||
|
||||
var
|
||||
o: myobject;
|
||||
begin
|
||||
ok:=false;
|
||||
new(o);
|
||||
o.proca(1);
|
||||
dispose(o);
|
||||
if not ok then
|
||||
halt(1);
|
||||
end.
|
Loading…
Reference in New Issue
Block a user