From 632c42ca1086f48eeabafb4b64597719795a5d46 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Mon, 1 Apr 2019 07:25:01 +0300 Subject: [PATCH] fix #1897 --- SyntaxTree/tree/TreeHelper.cs | 5 +++++ TestSuite/errors/err0317.pas | 3 +++ TestSuite/loopn.pas | 10 ++++++++++ TreeConverter/TreeConversion/syntax_tree_visitor.cs | 3 +++ 4 files changed, 21 insertions(+) create mode 100644 TestSuite/errors/err0317.pas create mode 100644 TestSuite/loopn.pas diff --git a/SyntaxTree/tree/TreeHelper.cs b/SyntaxTree/tree/TreeHelper.cs index 9cd04e29b..33bcd06e4 100644 --- a/SyntaxTree/tree/TreeHelper.cs +++ b/SyntaxTree/tree/TreeHelper.cs @@ -1836,5 +1836,10 @@ namespace PascalABCCompiler.SyntaxTree } } + public partial class semantic_check_sugared_statement_node + { + public bool visited = false; + } + } diff --git a/TestSuite/errors/err0317.pas b/TestSuite/errors/err0317.pas new file mode 100644 index 000000000..9e1cbf4fc --- /dev/null +++ b/TestSuite/errors/err0317.pas @@ -0,0 +1,3 @@ +begin + Writeln(1 mod 0); +end. \ No newline at end of file diff --git a/TestSuite/loopn.pas b/TestSuite/loopn.pas new file mode 100644 index 000000000..5dc0438c8 --- /dev/null +++ b/TestSuite/loopn.pas @@ -0,0 +1,10 @@ +begin + var n := 10; + loop n do + Print(1); + var p: procedure; + p := ()->begin + Print(n); + end; + Assert(1=1); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 217a3af6b..0fd3849aa 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -20111,6 +20111,9 @@ namespace PascalABCCompiler.TreeConverter public override void visit(SyntaxTree.semantic_check_sugared_statement_node st) { + if (st.visited) + return; + st.visited = true; if (st.typ as System.Type == typeof(SyntaxTree.assign_tuple)) { var vars = st.lst[0] as SyntaxTree.addressed_value_list;