[fpc-devel] Method pointers to RECORD methods
Blaise at blaise.ru
Blaise at blaise.ru
Wed Dec 16 15:01:33 CET 2020
The patch http://hg.blaise.ru/public/fpc/rev/0a8aff8d8273 (attached) fixes the following:
-------8<-------
{$Mode Delphi}
type R = record
var X: Integer;
function Foo: Integer;
end;
function R.Foo: Integer;
begin
result := X
end;
var F: function : Integer of object;
Z: R = (X:42);
begin
// EXPECTED: gets compiled
// ACTUAL: 'Error: Incompatible types'
F := Z.Foo;
writeln( F() = 42 )
end.
-------8<-------
The patch does not check for m_delphi: I did not came up with a case where that would make a semantic difference.
--
βþ
-------------- next part --------------
# HG changeset patch
# User Blaise.ru
# Date 1608125930 -10800
! tprocdef.is_methodpointer: allow method pointers to RECORD methods
diff -r 6a8b4a8fc96e -r 8dc95aab5009 symdef.pas
--- a/symdef.pas Tue Dec 15 20:45:13 2020 +0300
+++ b/symdef.pas Wed Dec 16 16:38:50 2020 +0300
@@ -6636,7 +6636,7 @@
begin
{ don't check assigned(_class), that's also the case for nested
procedures inside methods }
- result:=(owner.symtabletype=ObjectSymtable)and not no_self_node;
+ result:=(owner.symtabletype in [recordsymtable,ObjectSymtable]) and not no_self_node;
end;
More information about the fpc-devel
mailing list