From 6a15518c9dcfb331e3dd2e233ec9a21fb31c901e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Mon, 19 Aug 2019 21:55:45 +0200 Subject: [PATCH] fix #2047 --- Optimizer/Optimizer.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Optimizer/Optimizer.cs b/Optimizer/Optimizer.cs index 9a601c93f..ad63d1ec7 100644 --- a/Optimizer/Optimizer.cs +++ b/Optimizer/Optimizer.cs @@ -574,8 +574,11 @@ namespace PascalABCCompiler is_break_stmt = false; sn = stmt.statements[i]; VisitStatement(sn); - if (is_break_stmt && !has_goto && i < stmt.statements.Count - 1 && stmt.statements[i + 1].semantic_node_type != semantic_node_type.empty_statement && stmt.statements[i + 1].location != null) - warns.Add(new UnreachableCodeDetected(stmt.statements[i + 1].location)); + if (is_break_stmt && !has_goto && i < stmt.statements.Count - 1 && stmt.statements[i + 1].semantic_node_type != semantic_node_type.empty_statement && stmt.statements[i + 1].location != null) + { + if (stmt.statements[i].location == null || stmt.statements[i + 1].location.ToString() != stmt.statements[i].location.ToString()) + warns.Add(new UnreachableCodeDetected(stmt.statements[i + 1].location)); + } if (!(i < stmt.statements.Count - 1 && stmt.statements[i + 1].semantic_node_type == semantic_node_type.empty_statement)) is_break_stmt = false; }