This commit is contained in:
Бондарев Иван 2018-05-17 21:00:08 +02:00
parent 7e9e302f12
commit 0d592e78e0
2 changed files with 26 additions and 1 deletions

21
TestSuite/records7.pas Normal file
View file

@ -0,0 +1,21 @@
type
r1=record
class Empty := default(r1);
end;
r2=record
a,b:byte;
class Empty := default(r2);
end;
begin
var a := new r2;
var b := new r2;
assert(a = b);
assert(not (a <> b));
b.a := 2;
assert(a <> b);
end.

View file

@ -1033,7 +1033,9 @@ namespace PascalABCCompiler.TreeConverter
statements_list body = new statements_list(null);
foreach (class_field cf in _ctn.fields)
{
expression_node left = new class_field_reference(cf,new common_parameter_reference(prm1,0,null),null);
if (cf.polymorphic_state == SemanticTree.polymorphic_state.ps_static)
continue;
expression_node left = new class_field_reference(cf,new common_parameter_reference(prm1,0,null),null);
expression_node right = new class_field_reference(cf,new common_parameter_reference(prm2,0,null),null);
expression_node cond = SystemLibrary.SystemLibrary.syn_visitor.find_operator(compiler_string_consts.noteq_name,
left,right,null);
@ -1065,6 +1067,8 @@ namespace PascalABCCompiler.TreeConverter
statements_list body = new statements_list(null);
foreach (class_field cf in _ctn.fields)
{
if (cf.polymorphic_state == SemanticTree.polymorphic_state.ps_static)
continue;
expression_node left = new class_field_reference(cf,new common_parameter_reference(prm1,0,null),null);
expression_node right = new class_field_reference(cf,new common_parameter_reference(prm2,0,null),null);
expression_node cond = SystemLibrary.SystemLibrary.syn_visitor.find_operator(compiler_string_consts.eq_name,