This commit is contained in:
parent
73369527c8
commit
2007fd155c
|
|
@ -1847,7 +1847,10 @@ namespace PascalABCCompiler.PCU
|
||||||
common_method_node raise_meth = null;
|
common_method_node raise_meth = null;
|
||||||
if (CanReadObject())
|
if (CanReadObject())
|
||||||
raise_meth = GetClassMethod(br.ReadInt32());
|
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());
|
common_type_node cont = (common_type_node)GetTypeReference(br.ReadInt32());
|
||||||
if (name==null)
|
if (name==null)
|
||||||
name = GetStringInClass(cont, name_ref);
|
name = GetStringInClass(cont, name_ref);
|
||||||
|
|
|
||||||
|
|
@ -3021,7 +3021,10 @@ namespace PascalABCCompiler.PCU
|
||||||
bw.Write(GetMemberOffset(_event.remove_method));
|
bw.Write(GetMemberOffset(_event.remove_method));
|
||||||
if (CanWriteObject(_event.raise_method))
|
if (CanWriteObject(_event.raise_method))
|
||||||
bw.Write(GetMemberOffset(_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(offset);
|
||||||
bw.Write((byte)_event.field_access_level);
|
bw.Write((byte)_event.field_access_level);
|
||||||
bw.Write((byte)_event.polymorphic_state);
|
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