bug fix in initializing of static fields
This commit is contained in:
parent
ec3421340f
commit
db4196a9c9
13
TestSuite/classfield1.pas
Normal file
13
TestSuite/classfield1.pas
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
type
|
||||||
|
cls = class
|
||||||
|
class i: integer := 3;
|
||||||
|
j: integer := 4;
|
||||||
|
class obj: object := new object;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
assert(cls.i = 3);
|
||||||
|
assert(cls.obj <> nil);
|
||||||
|
var obj := new cls;
|
||||||
|
assert(obj.j = 4);
|
||||||
|
end.
|
||||||
|
|
@ -195,7 +195,10 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
case semantic_node_type.local_variable:
|
case semantic_node_type.local_variable:
|
||||||
return new local_variable_reference((local_variable)vd, 0, loc);
|
return new local_variable_reference((local_variable)vd, 0, loc);
|
||||||
case semantic_node_type.class_field:
|
case semantic_node_type.class_field:
|
||||||
return new class_field_reference((class_field)vd, syntax_tree_visitor.GetCurrentObjectReference((vd as class_field).cont_type.Scope,vd,loc), loc);
|
if (vd.polymorphic_state == polymorphic_state.ps_static)
|
||||||
|
return new static_class_field_reference((class_field)vd, loc);
|
||||||
|
else
|
||||||
|
return new class_field_reference((class_field)vd, syntax_tree_visitor.GetCurrentObjectReference((vd as class_field).cont_type.Scope,vd,loc), loc);
|
||||||
case semantic_node_type.namespace_variable:
|
case semantic_node_type.namespace_variable:
|
||||||
return new namespace_variable_reference((namespace_variable)vd, loc);
|
return new namespace_variable_reference((namespace_variable)vd, loc);
|
||||||
case semantic_node_type.local_block_variable:
|
case semantic_node_type.local_block_variable:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue