Je reçois une callstack très bizarre dans mon projet Flex (AS3).Compilateur Actionscript Problème: Erreur # 1068: Array et * ne peuvent pas être réconciliés
Main Thread (Suspended:
VerifyError: Error #1068: Array and * cannot be reconciled.)
J'ai été capable de le reproduire en utilisant ce bloc de code. Si vous déboguez, vous n'obtiendrez jamais la fonction "échec".
private var testArray:Array = [{},{},{}]
private function run():void {
this.failure({});
}
private function failure(o:Object):void {
for each(var el:Object in testArray) {
o.ids = (o.ids||[]).concat(getArray());
}
}
private function getArray():Array { return [Math.random()]; }
Quand je lance le programme, ce callstack est une ligne, mais ce Conole montre un grand désordre comme si elle était une erreur de segmentation:
> verify monkeyTest/failure()
> stack:
> scope: [global Object$ flash.events::EventDispatcher$
> flash.display::DisplayObject$
> flash.display::InteractiveObject$
> flash.display::DisplayObjectContainer$
> flash.display::Sprite$
> mx.core::FlexSprite$
> mx.core::UIComponent$
> mx.core::Container$
> mx.core::LayoutContainer$
> mx.core::Application$ monkeyTest$]
> locals: monkeyTest Object? * * *
Toutes les suggestions? À votre santé.
EDIT:
Ce code ne produit l'erreur:
private function failure(o:Object):void {
for each(var el:Object in testArray) {
o.ids = o.ids || [];
o.ids = o.ids.concat(getArray());
}
}
Vous avez raison, cela fonctionne. Mais après quelques tests, cela n'explique toujours pas pourquoi le problème se produit. Voir ma dernière modification à la question. – Glenn
Intéressant ... Je pense qu'Amarghosh a raison de dire qu'il y a un problème avec le compilateur. Je suis en train de tester sur Flex 4 SDK, je vais vous dire le résultat bientôt pour voir si nous avons vraiment besoin de signaler un bug. –
Reproduit dans Flex SDK 3.4 et 4.0.0.6898. Rempli le bogue à https://bugs.adobe.com/jira/browse/ASC-3844 –