This commit is contained in:
parent
73369527c8
commit
2007fd155c
|
|
@ -1847,7 +1847,10 @@ namespace PascalABCCompiler.PCU
|
|||
common_method_node raise_meth = null;
|
||||
if (CanReadObject())
|
||||
raise_meth = GetClassMethod(br.ReadInt32());
|
||||
class_field cf = GetClassField(br.ReadInt32());
|
||||
int field_off = br.ReadInt32();
|
||||
class_field cf = null;
|
||||
if (field_off > 0)
|
||||
cf = GetClassField(br.ReadInt32());
|
||||
common_type_node cont = (common_type_node)GetTypeReference(br.ReadInt32());
|
||||
if (name==null)
|
||||
name = GetStringInClass(cont, name_ref);
|
||||
|
|
|
|||
|
|
@ -3021,7 +3021,10 @@ namespace PascalABCCompiler.PCU
|
|||
bw.Write(GetMemberOffset(_event.remove_method));
|
||||
if (CanWriteObject(_event.raise_method))
|
||||
bw.Write(GetMemberOffset(_event.raise_method));
|
||||
bw.Write(GetMemberOffset(_event.field));
|
||||
if (!_event.cont_type.IsInterface)
|
||||
bw.Write(GetMemberOffset(_event.field));
|
||||
else
|
||||
bw.Write(0);
|
||||
bw.Write(offset);
|
||||
bw.Write((byte)_event.field_access_level);
|
||||
bw.Write((byte)_event.polymorphic_state);
|
||||
|
|
|
|||
10
TestSuite/units/u_events6.pas
Normal file
10
TestSuite/units/u_events6.pas
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
unit u_events6;
|
||||
|
||||
uses System;
|
||||
|
||||
type
|
||||
I1 = interface
|
||||
event E1: Action;
|
||||
end;
|
||||
|
||||
end.
|
||||
20
TestSuite/usesunits/use_events6.pas
Normal file
20
TestSuite/usesunits/use_events6.pas
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
uses u_events6, System;
|
||||
|
||||
type TClass = class(I1)
|
||||
event E1: Action;
|
||||
|
||||
procedure RaiseMethod;
|
||||
begin
|
||||
if E1 <> nil then
|
||||
E1();
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
begin
|
||||
var i := 0;
|
||||
var o := new TClass;
|
||||
o.E1 += () -> begin Inc(i) end;
|
||||
o.RaiseMethod();
|
||||
assert(i = 1);
|
||||
end.
|
||||
Loading…
Reference in a new issue