Enable eslint rule 'no-redeclare'

Enable recommended rule 'no-redeclare' [1] and manually fix violations.

[1] https://eslint.org/docs/latest/rules/no-redeclare

Ref: #8068
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
This commit is contained in:
Ralph Sennhauser 2025-06-14 12:27:36 +02:00
parent d5f4c812ea
commit 97a82cbc4a
No known key found for this signature in database
10 changed files with 112 additions and 103 deletions

View file

@ -181,14 +181,14 @@ function FSM(spec)
fsm.states[path.join(".")] = state;
var newhandlers = {};
for (var e in handlers)
for (const e in handlers)
newhandlers[e] = handlers[e];
state._name = path.join(".");
state._parent = path.slice(0, -1).join(".");
state._refs = {};
for (var key in node)
for (const key in node)
{
if (key === "enter" || key === "leave")
{
@ -207,10 +207,10 @@ function FSM(spec)
}
}
for (var e in newhandlers)
for (const e in newhandlers)
state[e] = newhandlers[e];
for (var key in node)
for (const key in node)
{
if (key.match(/^[A-Z]+$/))
{
@ -343,7 +343,7 @@ FSM.prototype.SwitchToNextState = function(obj, nextStateName)
if (equalPrefix > 0 && equalPrefix === toState.length)
--equalPrefix;
for (var i = fromState.length-1; i >= equalPrefix; --i)
for (let i = fromState.length-1; i >= equalPrefix; --i)
{
var leave = this.states[fromState[i]].leave;
if (leave)
@ -357,7 +357,7 @@ FSM.prototype.SwitchToNextState = function(obj, nextStateName)
}
}
for (var i = equalPrefix; i < toState.length; ++i)
for (let i = equalPrefix; i < toState.length; ++i)
{
var enter = this.states[toState[i]].enter;
if (enter)

View file

@ -176,10 +176,11 @@ Math.square = function(x)
*/
Math.exp = function(x)
{
let iPart;
if (x < 0)
var iPart = 1/Math.intPow(Math.E, -Math.floor(x));
iPart = 1/Math.intPow(Math.E, -Math.floor(x));
else
var iPart = Math.intPow(Math.E, Math.floor(x));
iPart = Math.intPow(Math.E, Math.floor(x));
if (x === Math.floor(x))
// no need to loop if we know the answer
@ -226,9 +227,10 @@ Math.log = function(x)
// when implemented in C, just count the number of bits before the fraction
// without leading zeros. This may be negative.
var log = 0;
let i;
if (x >= 1)
{
for (var i = 1; i <= x; i *= 2)
for (i = 1; i <= x; i *= 2)
log++;
log--;
@ -236,7 +238,7 @@ Math.log = function(x)
}
else
{
for (var i = 1; i > x; i /= 2)
for (i = 1; i > x; i /= 2)
log--;
}
// now lb(x) = log + lb(y) with y = x/i. So y \in [1,2)
@ -297,14 +299,14 @@ Math.intPow = function(x, y)
var result = 1;
var i = binary.length;
var l = binary.length;
while (y > 0)
{
if (binary[--i] <= y)
if (binary[--l] <= y)
{
result *= powers[i];
y -= binary[i];
result *= powers[l];
y -= binary[l];
}
}
// error margin = 0 (default JS error)

View file

@ -187,25 +187,27 @@ export function* generateMap(mapSettings)
yield 34;
g_Map.log("Creating forests");
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
var types = [
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
[[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]]
];
{
const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
const types = [
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
[[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]]
];
var size = forestTrees / (scaleByMapSize(2, 8) * numPlayers) *
(currentBiome() == "generic/savanna" ? 2 : 1);
const size = forestTrees / (scaleByMapSize(2, 8) * numPlayers) *
(currentBiome() == "generic/savanna" ? 2 : 1);
var num = Math.floor(size / types.length);
for (const type of types)
createAreas(
new ClumpPlacer(forestTrees / num, 0.1, 0.1, Infinity),
[
new LayeredPainter(type, [2]),
new TileClassPainter(clForest)
],
[avoidClasses(clForest, 10, clHill, 2), stayClasses(clLand, 7)],
num);
const num = Math.floor(size / types.length);
for (const type of types)
createAreas(
new ClumpPlacer(forestTrees / num, 0.1, 0.1, Infinity),
[
new LayeredPainter(type, [2]),
new TileClassPainter(clForest)
],
[avoidClasses(clForest, 10, clHill, 2), stayClasses(clLand, 7)],
num);
}
yield 38;
g_Map.log("Creating dirt patches");

View file

@ -104,7 +104,7 @@ BuildRestrictions.prototype.CheckPlacement = function()
if (!cmpPlayer.IsAI())
{
// Check whether it's in a visible or fogged region
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
const cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (!cmpRangeManager || !cmpOwnership)
return result; // Fail
@ -141,14 +141,15 @@ BuildRestrictions.prototype.CheckPlacement = function()
return result; // Fail
let ret;
if (this.template.Category == "Wall")
{
// for walls, only test the center point
var ret = cmpObstruction.CheckFoundation(passClassName, true);
ret = cmpObstruction.CheckFoundation(passClassName, true);
}
else
{
var ret = cmpObstruction.CheckFoundation(passClassName, false);
ret = cmpObstruction.CheckFoundation(passClassName, false);
}
if (ret !== "success")
@ -252,7 +253,7 @@ BuildRestrictions.prototype.CheckPlacement = function()
// Check distance restriction
if (this.template.Distance)
{
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
const cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
var cat = this.template.Distance.FromClass;
var filter = function(id)

View file

@ -82,7 +82,7 @@ EntityLimits.prototype.Init = function()
if (category in this.template.LimitChangers)
{
this.changers[category] = {};
for (var c in this.template.LimitChangers[category])
for (const c in this.template.LimitChangers[category])
this.changers[category][c] = +this.template.LimitChangers[category][c];
}
if (category in this.template.LimitRemovers)
@ -90,7 +90,7 @@ EntityLimits.prototype.Init = function()
// Keep a copy of removable limits for possible restoration.
this.removedLimit[category] = this.limit[category];
this.removers[category] = {};
for (var c in this.template.LimitRemovers[category])
for (const c in this.template.LimitRemovers[category])
{
this.removers[category][c] = this.template.LimitRemovers[category][c]._string.split(/\s+/);
if (c === "RequiredClasses")
@ -251,23 +251,26 @@ EntityLimits.prototype.OnGlobalOwnershipChanged = function(msg)
error("EntityLimits component is defined on a non-player entity");
return;
}
let modifier;
if (msg.from == cmpPlayer.GetPlayerID())
var modifier = -1;
modifier = -1;
else if (msg.to == cmpPlayer.GetPlayerID())
var modifier = 1;
modifier = 1;
else
return;
// Update entity counts
var category = null;
var cmpBuildRestrictions = Engine.QueryInterface(msg.entity, IID_BuildRestrictions);
if (cmpBuildRestrictions)
category = cmpBuildRestrictions.GetCategory();
var cmpTrainingRestrictions = Engine.QueryInterface(msg.entity, IID_TrainingRestrictions);
if (cmpTrainingRestrictions)
category = cmpTrainingRestrictions.GetCategory();
if (category)
this.ChangeCount(category, modifier);
{
let category;
const cmpBuildRestrictions = Engine.QueryInterface(msg.entity, IID_BuildRestrictions);
if (cmpBuildRestrictions)
category = cmpBuildRestrictions.GetCategory();
const cmpTrainingRestrictions = Engine.QueryInterface(msg.entity, IID_TrainingRestrictions);
if (cmpTrainingRestrictions)
category = cmpTrainingRestrictions.GetCategory();
if (category)
this.ChangeCount(category, modifier);
}
// Update entity limits
var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
@ -279,7 +282,7 @@ EntityLimits.prototype.OnGlobalOwnershipChanged = function(msg)
if (cmpFoundation)
return;
var classes = cmpIdentity.GetClassesList();
for (var category in this.changers)
for (const category in this.changers)
for (var c in this.changers[category])
if (classes.indexOf(c) >= 0)
{
@ -289,7 +292,7 @@ EntityLimits.prototype.OnGlobalOwnershipChanged = function(msg)
this.removedLimit[category] += modifier * this.changers[category][c];
}
for (var category in this.removers)
for (const category in this.removers)
if ("RequiredClasses" in this.removers[category])
for (var cls of this.removers[category].RequiredClasses)
if (classes.indexOf(cls) !== -1)

View file

@ -379,14 +379,14 @@ TechnologyManager.prototype.OnGlobalOwnershipChanged = function(msg)
var playerID = (Engine.QueryInterface(this.entity, IID_Player)).GetPlayerID();
if (msg.to == playerID)
{
var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
var template = cmpTemplateManager.GetCurrentTemplateName(msg.entity);
const cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
const template = cmpTemplateManager.GetCurrentTemplateName(msg.entity);
var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
const cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
if (!cmpIdentity)
return;
var classes = cmpIdentity.GetClassesList();
const classes = cmpIdentity.GetClassesList();
// don't use foundations for the class counts but check if techs apply (e.g. health increase)
if (!Engine.QueryInterface(msg.entity, IID_Foundation))
{
@ -403,16 +403,16 @@ TechnologyManager.prototype.OnGlobalOwnershipChanged = function(msg)
}
if (msg.from == playerID)
{
var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
var template = cmpTemplateManager.GetCurrentTemplateName(msg.entity);
const cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
const template = cmpTemplateManager.GetCurrentTemplateName(msg.entity);
// don't use foundations for the class counts
if (!Engine.QueryInterface(msg.entity, IID_Foundation))
{
var cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
const cmpIdentity = Engine.QueryInterface(msg.entity, IID_Identity);
if (cmpIdentity)
{
var classes = cmpIdentity.GetClassesList();
const classes = cmpIdentity.GetClassesList();
for (const cls of classes)
{
this.classCounts[cls] -= 1;

View file

@ -4197,7 +4197,7 @@ UnitAI.prototype.UpdateWorkOrders = function(type)
var cmpUnitAI = Engine.QueryInterface(this.formationController, IID_UnitAI);
if (cmpUnitAI)
{
for (var i = 0; i < cmpUnitAI.orderQueue.length; ++i)
for (let i = 0; i < cmpUnitAI.orderQueue.length; ++i)
{
if (isWorkType(cmpUnitAI.orderQueue[i].type))
{
@ -4209,7 +4209,7 @@ UnitAI.prototype.UpdateWorkOrders = function(type)
}
// If nothing found, take the unit orders
for (var i = 0; i < this.orderQueue.length; ++i)
for (let i = 0; i < this.orderQueue.length; ++i)
{
if (isWorkType(this.orderQueue[i].type))
{

View file

@ -1047,10 +1047,10 @@ function GetDockAngle(template, x, z)
* 6. Calculate angle using average of sequence
*/
const numPoints = 16;
for (var dist = 0; dist < 4; ++dist)
for (let dist = 0; dist < 4; ++dist)
{
var waterPoints = [];
for (var i = 0; i < numPoints; ++i)
for (let i = 0; i < numPoints; ++i)
{
var angle = (i/numPoints)*2*Math.PI;
var d = halfSize*(dist+1);
@ -1064,9 +1064,9 @@ function GetDockAngle(template, x, z)
var length = waterPoints.length;
if (!length)
continue;
for (var i = 0; i < length; ++i)
for (let i = 0; i < length; ++i)
{
var count = 0;
let count = 0;
for (let j = 0; j < length - 1; ++j)
{
if ((waterPoints[(i + j) % length] + 1) % numPoints == waterPoints[(i + j + 1) % length])
@ -1076,9 +1076,9 @@ function GetDockAngle(template, x, z)
}
consec[i] = count;
}
var start = 0;
var count = 0;
for (var c in consec)
let start = 0;
let count = 0;
for (const c in consec)
{
if (consec[c] > count)
{
@ -1191,7 +1191,7 @@ function TryConstructBuilding(player, cmpPlayer, controlAllUnits, cmd)
if (g_DebugCommands)
warn("Invalid command: build restrictions check failed with '"+ret.message+"' for player "+player+": "+uneval(cmd));
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
const cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
ret.players = [player];
cmpGuiInterface.PushNotification(ret);
@ -1224,7 +1224,7 @@ function TryConstructBuilding(player, cmpPlayer, controlAllUnits, cmd)
if (g_DebugCommands)
warn("Invalid command: required technology check failed for player "+player+": "+uneval(cmd));
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
const cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
cmpGuiInterface.PushNotification({
"type": "text",
"players": [player],
@ -1379,7 +1379,7 @@ function TryConstructWall(player, cmpPlayer, controlAllUnits, cmd)
var pieces = clone(cmd.pieces);
for (; i < pieces.length; ++i)
{
var piece = pieces[i];
const piece = pieces[i];
// All wall pieces after the first must be queued.
if (i > 0 && !queued)
@ -1475,9 +1475,9 @@ function TryConstructWall(player, cmpPlayer, controlAllUnits, cmd)
lastTowerControlGroup = cmpSnappedEndObstruction.GetControlGroup();
}
for (var j = lastBuiltPieceIndex; j >= 0; --j)
for (let j = lastBuiltPieceIndex; j >= 0; --j)
{
var piece = pieces[j];
const piece = pieces[j];
if (!piece.ent)
{

View file

@ -38,7 +38,7 @@ const configEslintRecommended = {
"no-func-assign": "warn",
"no-irregular-whitespace": "warn",
"no-obj-calls": "warn",
"no-redeclare": "off",
"no-redeclare": "warn",
"no-self-assign": "warn",
"no-shadow-restricted-names": "warn",
"no-undef": "off",

View file

@ -205,7 +205,7 @@ class Profiler2Report
var last_frame_time_start;
var stack = [];
for (var i = 0; i < data.length; ++i)
for (let i = 0; i < data.length; ++i)
{
if (data[i][0] == this.ITEM_EVENT && data[i][2] == '__framestart')
{
@ -224,7 +224,7 @@ class Profiler2Report
}
if (range.numframes)
{
for (var i = data.length - 1; i > 0; --i)
for (let i = data.length - 1; i > 0; --i)
{
if (data[i][0] == this.ITEM_EVENT && data[i][2] == '__framestart')
{
@ -234,7 +234,7 @@ class Profiler2Report
}
var framesfound = 0;
for (var i = end - 1; i > 0; --i)
for (let i = end - 1; i > 0; --i)
{
if (data[i][0] == this.ITEM_EVENT && data[i][2] == '__framestart')
{
@ -249,10 +249,10 @@ class Profiler2Report
}
else if (range.seconds)
{
var end = data.length - 1;
for (var i = end; i > 0; --i)
end = data.length - 1;
for (let i = end; i > 0; --i)
{
var type = data[i][0];
const type = data[i][0];
if (type == this.ITEM_EVENT || type == this.ITEM_ENTER || type == this.ITEM_LEAVE)
{
tmax = data[i][1];
@ -261,9 +261,9 @@ class Profiler2Report
}
tmin = tmax - range.seconds;
for (var i = end; i > 0; --i)
for (let i = end; i > 0; --i)
{
var type = data[i][0];
const type = data[i][0];
if ((type == this.ITEM_EVENT || type == this.ITEM_ENTER || type == this.ITEM_LEAVE) && data[i][1] < tmin)
break;
start = i;
@ -276,9 +276,9 @@ class Profiler2Report
tmin = range.tmin;
tmax = range.tmax;
for (var i = data.length-1; i > 0; --i)
for (let i = data.length-1; i > 0; --i)
{
var type = data[i][0];
const type = data[i][0];
if ((type == this.ITEM_EVENT || type == this.ITEM_ENTER || type == this.ITEM_LEAVE) && data[i][1] < tmax)
{
end = i;
@ -286,9 +286,9 @@ class Profiler2Report
}
}
for (var i = end; i > 0; --i)
for (let i = end; i > 0; --i)
{
var type = data[i][0];
const type = data[i][0];
if ((type == this.ITEM_EVENT || type == this.ITEM_ENTER || type == this.ITEM_LEAVE) && data[i][1] < tmin)
break;
start = i;
@ -314,30 +314,31 @@ class Profiler2Report
var events = [];
// Read events for the entire data period (not just start..end)
var lastWasEvent = false;
for (var i = 0; i < data.length; ++i)
{
if (data[i][0] == this.ITEM_EVENT)
let lastWasEvent = false;
for (let i = 0; i < data.length; ++i)
{
events.push({ 't': data[i][1], 'id': data[i][2] });
lastWasEvent = true;
}
else if (data[i][0] == this.ITEM_ATTRIBUTE)
{
if (lastWasEvent)
if (data[i][0] == this.ITEM_EVENT)
{
if (!events[events.length-1].attrs)
events[events.length-1].attrs = [];
events[events.length-1].attrs.push(data[i][1]);
events.push({ 't': data[i][1], 'id': data[i][2] });
lastWasEvent = true;
}
else if (data[i][0] == this.ITEM_ATTRIBUTE)
{
if (lastWasEvent)
{
if (!events[events.length-1].attrs)
events[events.length-1].attrs = [];
events[events.length-1].attrs.push(data[i][1]);
}
}
else
{
lastWasEvent = false;
}
}
else
{
lastWasEvent = false;
}
}
var intervals = [];
var intervals_by_type = {};
@ -346,7 +347,7 @@ class Profiler2Report
var lastT = 0;
var lastWasEvent = false;
for (var i = start; i <= end; ++i)
for (let i = start; i <= end; ++i)
{
if (data[i][0] == this.ITEM_EVENT)
{