From d0f350088c341f4a4873fc3117bae99e395084af Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Mon, 8 Jul 2019 21:52:13 +0300 Subject: [PATCH] =?UTF-8?q?format1.png=20=D0=B8=20=D1=87=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D1=87=D0=BD=D0=BE=D0=B5=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=201639?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SyntaxTreeConverters/StandardSyntaxConverter.cs | 6 +++--- .../YieldVisitors/ProcessYieldsCapturedVars.cs | 8 +++++++- .../TreeConversion/syntax_tree_visitor.cs | 2 +- VisualPascalABCNET/Resources/format1.png | Bin 0 -> 587 bytes 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 VisualPascalABCNET/Resources/format1.png diff --git a/SyntaxTreeConverters/StandardSyntaxConverter.cs b/SyntaxTreeConverters/StandardSyntaxConverter.cs index 494f68eea..c388b3164 100644 --- a/SyntaxTreeConverters/StandardSyntaxConverter.cs +++ b/SyntaxTreeConverters/StandardSyntaxConverter.cs @@ -68,13 +68,13 @@ namespace PascalABCCompiler.SyntaxTreeConverters /*try { - root.visit(new SimplePrettyPrinterVisitor(@"d:\\zzz4.txt")); + root.visit(new SimplePrettyPrinterVisitor(@"d:\\zzz1.txt")); } catch(Exception e) { - System.IO.File.AppendAllText(@"d:\\zzz4.txt",e.Message); - }*/ + System.IO.File.AppendAllText(@"d:\\zzz1.txt",e.Message); + }*/ #endif diff --git a/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs b/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs index 89eb93dd8..2f9c8cbb1 100644 --- a/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs +++ b/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs @@ -150,9 +150,15 @@ namespace SyntaxVisitors var stels = seqt.elements_type; var iteratorClassName = GetClassName(pd); + var classDef = UpperNode(3) as class_definition; + + var staticClass = false; + if ((classDef.attribute & class_attribute.Static) != 0) + staticClass = true; + // frninja 08/18/15 - Для захвата self - if (iteratorClassName != null) + if (iteratorClassName != null && !staticClass) { // frninja 20/04/16 - поддержка шаблонных классов var iteratorClassRef = CreateClassReference(iteratorClassName); diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 6491ef98f..0aba925e5 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -20089,7 +20089,7 @@ namespace PascalABCCompiler.TreeConverter string Consts__Self = YieldHelpers.YieldConsts.Self; // Find semantic class containing iterator (yield-method) with unknown ident - var iteratorContainingClass = context._ctn.fields.Where(f => f.name == Consts__Self).First().type; + var iteratorContainingClass = context._ctn.fields.Where(f => f.name == Consts__Self).FirstOrDefault()?.type; //var iteratorContainingClass = context._cmn.types.Where(t => t.name == _unk.ClassName.name).First(); isStaticIdent = false; diff --git a/VisualPascalABCNET/Resources/format1.png b/VisualPascalABCNET/Resources/format1.png new file mode 100644 index 0000000000000000000000000000000000000000..971c4a2a0132f8b368ba57d9f7fc74e6eb86b558 GIT binary patch literal 587 zcmV-R0<`^!P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA0n2FA?lor~h34(=SVWC}qfdo>86lnr!qF4$s1dY0wg~(2H zcXnpp*UhowJt@#qxE6*<8c*z zHO-?xeD^SVV{G(Su(k6k4J+g#NNs|YwU?swGOfIf=_jNR*Tt!V*kyA`fXpd=Z`4>^Srr_io_)W)NpSHQc#B;f9% zvK^>3@bSYMs2XY(H8wDjF$r|N0-Xxpfl{NW0-nD7lTN9`q(oKb*n7Pke@6~_inRrr z+XgJ%yMyiZ``njPaSbh+We+f|IU!?X$bp;30kd`AeB4#FRKa)PhN zM{$2gzGi4u-*~$vKL_6<%X(E+>&6=0o0sW0W%DXO?{3byG5-zV5@uVW=$@&aO#lD@ Z07*qoM6N<$g7g3Y002ovPDHLkV1g~K0f7Jj literal 0 HcmV?d00001