Since recently, we have a clone() function available to all JS contexts.
It seems slightly more readable than a slice call without arguments.
Details
Details
- Reviewers
wraitii - Group Reviewers
Restricted Owners Package (Owns No Changed Paths)
Notice that Object.keys, String.slice and Array.slice return copies.
Diff Detail
Diff Detail
- Repository
- rP 0 A.D. Public Repository
- Branch
- /ps/trunk
- Lint
Lint OK - Unit
No Unit Test Coverage - Build Status
Buildable 4304 Build 7556: Vulcan Build (Windows) Jenkins Build 7555: Vulcan Build Jenkins Build 7554: arc lint + arc unit
Event Timeline
Comment Actions
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...
Comment Actions
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 '||';
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 | ? |
Comment Actions
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.