From 136e976b2a99ff56df81f46410c81e8fb74b141a Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <c.oelckers@users.noreply.github.com>
Date: Sat, 3 Dec 2016 12:33:58 +0100
Subject: [PATCH] - added an error check for duplicate local variable
 definitions.

Note that this only applies if both are in the same block. Just like in C++, it is perfectly legal to have the same variable name in two different nested scopes.
---
 src/scripting/codegeneration/codegen.cpp | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/scripting/codegeneration/codegen.cpp b/src/scripting/codegeneration/codegen.cpp
index 6a0f840a56..c392d97d32 100644
--- a/src/scripting/codegeneration/codegen.cpp
+++ b/src/scripting/codegeneration/codegen.cpp
@@ -9975,6 +9975,19 @@ FxExpression *FxLocalVariableDeclaration::Resolve(FCompileContext &ctx)
 		if (Init) Init = new FxTypeCast(Init, ValueType, false);
 		SAFE_RESOLVE_OPT(Init, ctx);
 	}
+	if (Name != NAME_None)
+	{
+		for (auto l : ctx.Block->LocalVars)
+		{
+			if (l->Name == Name)
+			{
+				ScriptPosition.Message(MSG_ERROR, "Local variable %s already defined", Name.GetChars());
+				l->ScriptPosition.Message(MSG_ERROR, "Original definition is here ");
+				delete this;
+				return nullptr;
+			}
+		}
+	}
 	ctx.Block->LocalVars.Push(this);
 	return this;
 }