From a969d6de9c4e580f311fcd600bae22bbcb461f6a Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Tue, 26 Mar 2024 21:49:51 +0100 Subject: [PATCH] #3063 --- TestSuite/lambdas23.pas | 21 +++++++++++++++++++ .../Closure/CapturedVariablesTreeBuilder.cs | 5 +++++ 2 files changed, 26 insertions(+) create mode 100644 TestSuite/lambdas23.pas diff --git a/TestSuite/lambdas23.pas b/TestSuite/lambdas23.pas new file mode 100644 index 000000000..7263f5a2a --- /dev/null +++ b/TestSuite/lambdas23.pas @@ -0,0 +1,21 @@ +var j := 0; +type + t1 = class + + static property prop1: integer read 1; + + static constructor; + begin + var p := ()-> + begin + j := prop1; + end; + p; + end; + + end; + +begin + var i := t1.prop1; + assert(j = 1); +end. \ No newline at end of file diff --git a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs index b3ddc5efb..839426fed 100644 --- a/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs +++ b/TreeConverter/LambdaExpressions/Closure/CapturedVariablesTreeBuilder.cs @@ -275,6 +275,11 @@ namespace TreeConverter.LambdaExpressions.Closure dn = new dot_node(getClassIdent(classField.cont_type), new ident(id.name, id.source_context), id.source_context); } + else if (si.sym_info is common_property_node cpn && cpn.polymorphic_state == polymorphic_state.ps_static) + { + dn = new dot_node(getClassIdent(cpn.common_comprehensive_type), + new ident(id.name, id.source_context), id.source_context); + } else if (si.sym_info is class_constant_definition ccd) { dn = new dot_node(getClassIdent(ccd.comperehensive_type),