Page MenuHomeWildfire Games

Use clone instead of slice
Needs RevisionPublic

Authored by elexis on Jan 3 2018, 3:47 PM.

Details

Reviewers
wraitii
Group Reviewers
Restricted Owners Package(Owns No Changed Paths)
Summary

Since recently, we have a clone() function available to all JS contexts.
It seems slightly more readable than a slice call without arguments.

Test Plan

Notice that Object.keys, String.slice and Array.slice return copies.

Event Timeline

elexis created this revision.Jan 3 2018, 3:47 PM
Vulcan added a subscriber: Vulcan.Jan 3 2018, 4:47 PM

Successful build - Chance fights ever on the side of the prudent.

Updating workspaces...
Build (release)...
Build (debug)...
Running release tests...
Running cxxtest tests (308 tests)....................................................................................................................................................................................................................................................................................................................OK!
Running debug tests...
Running cxxtest tests (308 tests)....................................................................................................................................................................................................................................................................................................................OK!
Checking XML files...
Vulcan added a comment.Jan 3 2018, 4:50 PM
Executing section Default...
Executing section Source...
Executing section JS...

binaries/data/mods/public/globalscripts/Technologies.js
| 226| »   »   let·civPermitted·=·undefined;·//·tri-state·(undefined,·false,·or·true)
|    | [NORMAL] JSHintBear:
|    | It's not necessary to initialize 'civPermitted' to 'undefined'.

binaries/data/mods/public/globalscripts/Technologies.js
| 249| »   »   »   »   »   return·false;
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'case'.

binaries/data/mods/public/globalscripts/Technologies.js
| 259| »   »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'case'.

binaries/data/mods/public/globalscripts/Technologies.js
| 328| »   »   »   »   }
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'case'.

binaries/data/mods/public/globalscripts/Technologies.js
| 334| »   »   »   »   civPermitted·=·true;
|    | [NORMAL] JSHintBear:
|    | Expected a 'break' statement before 'case'.

binaries/data/mods/public/simulation/components/UnitAI.js
| 356| »   »   ····&&·(this.lastShorelinePosition.z·==·cmpPosition.GetPosition().z))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|1906| »   »   »   »   »   »   var·cmpFormation·=·Engine.QueryInterface(this.formationController,·IID_Formation);
|    | [NORMAL] JSHintBear:
|    | 'cmpFormation' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
|2038| »   »   »   »   »   »   &&·this.order.data.target·!=·msg.data.attacker·&&·this.GetBestAttackAgainst(msg.data.attacker,·true)·!=·"Capture")
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2122| »   »   »   »   »   »   »   »   ·&&·((type.generic·==·"treasure"·&&·oldType.generic·==·"treasure")
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2123| »   »   »   »   »   »   »   »   ·||·(type.specific·==·oldType.specific
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2124| »   »   »   »   »   »   »   »   ·&&·(type.specific·!=·"meat"·||·oldTemplate·==·template)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2147| »   »   »   »   »   »   »   »   var·nearby·=·this.FindNearestDropsite(oldType.generic);
|    | [NORMAL] JSHintBear:
|    | 'nearby' is already defined.

binaries/data/mods/public/simulation/components/UnitAI.js
|2187| »   »   »   »   »   »   »   »   &&·((type.generic·==·"treasure"·&&·oldType.generic·==·"treasure")
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2188| »   »   »   »   »   »   »   »   ||·(type.specific·==·oldType.specific
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2189| »   »   »   »   »   »   »   »   &&·(type.specific·!=·"meat"·||·oldTemplate·==·template)))
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '&&'; readers may interpret this as an expression boundary.

binaries/data/mods/public/simulation/components/UnitAI.js
|2233| »   »   »   »   »   »   »   ||·(type.specific·==·resourceType.specific
|    | [NORMAL] JSHintBear:
|    | Misleading line break before '||';
elexis retitled this revision from Use clone instead of splice to Use clone instead of slice.Jan 3 2018, 4:52 PM
bb added a subscriber: bb.Jan 3 2018, 6:06 PM
bb added inline comments.
binaries/data/mods/public/simulation/ai/petra/_petrabot.js
137

onsave:

ERROR: JavaScript error: simulation/ai/petra/_petrabot.js line 137
TypeError: unsupported type for structured data
  m.PetraBot.prototype.Serialize@simulation/ai/petra/_petrabot.js:137:1
  reallySaveGame@gui/savegame/save.js:74:3
  saveGame@gui/savegame/save.js:57:3
  __eventhandler180 (press)@__internal(4) press:0:1
ERROR: AI script Serialize call failed
binaries/data/mods/public/simulation/ai/petra/headquarters.js
751

on ai only replay:

ERROR: JavaScript error: simulation/ai/petra/headquarters.js line 751
TypeError: unsupported type for structured data
  m.HQ.prototype.bulkPickWorkers@simulation/ai/petra/headquarters.js:751:17
  m.HQ.prototype.checkEvents@simulation/ai/petra/headquarters.js:202:19
  m.HQ.prototype.update@simulation/ai/petra/headquarters.js:2459:2
  m.PetraBot.prototype.OnUpdate@simulation/ai/petra/_petrabot.js:119:3
  m.BaseAI.prototype.HandleMessage@simulation/ai/common-api/baseAI.js:64:2
binaries/data/mods/public/simulation/components/Formation.js
981

?

wraitii requested changes to this revision.Jan 22 2018, 10:13 AM
wraitii added a reviewer: Restricted Owners Package.
This revision now requires changes to proceed.Jan 22 2018, 10:13 AM
elexis added a comment.Mar 3 2018, 5:26 AM

This might still go into the trashbin for the most part since clone does a recursive copy while slice only creates a new array with the same objects.