diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 1d9c8ee61..3a838eae9 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "3"; public const string Build = "0"; - public const string Revision = "1555"; + public const string Revision = "1556"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 34f0be296..ab8dcccaf 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%COREVERSION%=0 -%REVISION%=1555 %MINOR%=3 +%REVISION%=1556 +%COREVERSION%=0 %MAJOR%=3 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 29a7f81e6..0938f9e48 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.3.0.1555' +!define VERSION '3.3.0.1556' diff --git a/TestSuite/CompilationSamples/GraphABC.pas b/TestSuite/CompilationSamples/GraphABC.pas index d4f23f586..8da22919b 100644 --- a/TestSuite/CompilationSamples/GraphABC.pas +++ b/TestSuite/CompilationSamples/GraphABC.pas @@ -3972,7 +3972,7 @@ begin gr := Graphics.FromHwnd(f.Handle); - if (System.Environment.OSVersion.Version.Major >= 6) then SetProcessDPIAware(); + //if (System.Environment.OSVersion.Version.Major >= 6) then SetProcessDPIAware(); InitBMP; end; diff --git a/TestSuite/CompilationSamples/Lambda_global1.pas b/TestSuite/CompilationSamples/Lambda_global1.pas new file mode 100644 index 000000000..fee61fc88 --- /dev/null +++ b/TestSuite/CompilationSamples/Lambda_global1.pas @@ -0,0 +1,11 @@ +var glob1: real -> real := x->x*x; +var a := ArrGen(10,x->x); + +var y := 222; +var glob2: real -> real := x->x+y; + + +begin + Print(glob1(2)); + Print(glob2(2)); +end. \ No newline at end of file diff --git a/TestSuite/CompilationSamples/graph3d.pas b/TestSuite/CompilationSamples/graph3d.pas index e584dcbd2..060e14b36 100644 --- a/TestSuite/CompilationSamples/graph3d.pas +++ b/TestSuite/CompilationSamples/graph3d.pas @@ -209,8 +209,8 @@ type function GetUD: Vector3D := Invoke&(()->Cam.UpDirection); procedure SetDP(d: real); begin - var dist := Position.DistanceTo(P3D(0,0,0)); - Position := Position.Multiply(d/dist); + var dist := Cam.Position.DistanceTo(P3D(0,0,0)); + Cam.Position := Cam.Position.Multiply(d/dist); end; procedure SetD(d: real) := Invoke(SetDP,d); function GetD: real := Invoke&(()->Cam.Position.DistanceTo(P3D(0,0,0))); diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index c12978e2b..008c04a6a 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -2503,6 +2503,7 @@ namespace PascalABCCompiler.TreeConverter public override void visit(SyntaxTree.block _block) { + var tt = context.converting_block(); List declarations_with_lambdas = new List(); if (/*context.converting_block() != block_type.namespace_block && */_block.defs != null && _block.defs.defs != null) { @@ -2526,9 +2527,11 @@ namespace PascalABCCompiler.TreeConverter foreach (var_def_statement vds in vd.list) { var lambdaSearcher = new LambdaSearcher(vds); - if (lambdaSearcher.CheckIfContainsLambdas()) + if (lambdaSearcher.CheckIfContainsLambdas() && !(vds.inital_value is function_lambda_definition)) // SSM 27/10/17 { - procedure_definition func = new short_func_definition(SyntaxTreeBuilder.BuildShortFuncDefinition(new formal_parameters(), new procedure_attributes_list(), new method_name("<>lambda_initializer" + lambda_init_index), null, vds.inital_value, null)); + procedure_definition func = + new short_func_definition( + SyntaxTreeBuilder.BuildShortFuncDefinition(new formal_parameters(), new procedure_attributes_list(), new method_name("<>lambda_initializer" + lambda_init_index), null, vds.inital_value, null)); vds.inital_value = new method_call(new ident("<>lambda_initializer"+lambda_init_index), new expression_list()); _block.defs.InsertBefore(vd, func); diff --git a/VisualPlugins/SyntaxTreeVisualisator/Visitors/visualizator.cs b/VisualPlugins/SyntaxTreeVisualisator/Visitors/visualizator.cs index 0f561f5ce..13921a469 100644 --- a/VisualPlugins/SyntaxTreeVisualisator/Visitors/visualizator.cs +++ b/VisualPlugins/SyntaxTreeVisualisator/Visitors/visualizator.cs @@ -1138,6 +1138,12 @@ namespace VisualPascalABCPlugins prepare_node(node.left, "left"); prepare_node(node.right, "right"); } + public override void visit(short_func_definition node) + { + prepare_node(node.proc_header, "proc_header"); + prepare_node(node.proc_body, "proc_body"); + prepare_node(node.procdef, "procdef"); + } }