bug fix #1054
This commit is contained in:
parent
3c95b48083
commit
8b4b333cd0
35
TestSuite/events5.pas
Normal file
35
TestSuite/events5.pas
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
var i: integer;
|
||||
j: integer;
|
||||
|
||||
type
|
||||
TRec = record
|
||||
end;
|
||||
|
||||
TExample<T> = class
|
||||
event f: Action<T>;
|
||||
event f2: Action<List<T>>;
|
||||
constructor Create();
|
||||
begin
|
||||
f += procedure (x) -> begin i := 1; end;
|
||||
f2 += procedure (x) -> begin j := 1; end;
|
||||
end;
|
||||
procedure raiseevent;
|
||||
begin
|
||||
f(default(T));
|
||||
f2(new List<T>);
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
var o: TExample<integer>;
|
||||
o := new TExample<integer>();
|
||||
o.raiseevent;
|
||||
assert(i = 1);
|
||||
assert(j = 1);
|
||||
i := 0;
|
||||
j := 0;
|
||||
var o2 := new TExample<TRec>;
|
||||
o2.raiseevent;
|
||||
assert(i = 1);
|
||||
assert(j = 1);
|
||||
end.
|
||||
|
|
@ -196,6 +196,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
el.AddElement(cfc);
|
||||
|
||||
SymbolInfo si = exprs[0].type.find_first_in_type(compiler_string_consts.assign_name);
|
||||
if (si == null && exprs[0].type.original_generic != null)
|
||||
si = exprs[0].type.original_generic.find_first_in_type(compiler_string_consts.assign_name);
|
||||
if (si == null)
|
||||
{
|
||||
throw new CompilerInternalError("Undefined delegate operation");
|
||||
|
|
@ -223,6 +225,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
el.AddElement(cfc);
|
||||
|
||||
SymbolInfo si = exprs[0].type.find_first_in_type(compiler_string_consts.assign_name);
|
||||
if (si == null && exprs[0].type.original_generic != null)
|
||||
si = exprs[0].type.original_generic.find_first_in_type(compiler_string_consts.assign_name);
|
||||
if (si == null)
|
||||
{
|
||||
throw new CompilerInternalError("Undefined delegate operation");
|
||||
|
|
|
|||
Loading…
Reference in a new issue