You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2019/11/08 22:02:21 UTC
[royale-asjs] branch develop updated: Fix: Don't try to coerce to
'any' type.
This is an automated email from the ASF dual-hosted git repository.
gregdove pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 25295a3 Fix: Don't try to coerce to 'any' type.
25295a3 is described below
commit 25295a31d1bcdc658d22bae8effdd9304540ac9d
Author: greg-dove <gr...@gmail.com>
AuthorDate: Sat Nov 9 11:02:01 2019 +1300
Fix: Don't try to coerce to 'any' type.
---
.../royale/org/apache/royale/reflection/AccessorDefinition.as | 10 +++++++---
.../royale/org/apache/royale/reflection/VariableDefinition.as | 10 +++++++---
.../flexUnitTests/reflection/ReflectionTesterTestEdgeCases.as | 9 +++++++++
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/AccessorDefinition.as b/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/AccessorDefinition.as
index bc2c7b8..310143d 100644
--- a/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/AccessorDefinition.as
+++ b/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/AccessorDefinition.as
@@ -122,11 +122,15 @@ package org.apache.royale.reflection {
}
var fieldName:String = name;
if (uri) fieldName = QName.getAsObjectAccessFormat(uri, fieldName);
- var valueClass:Class = getDefinitionByName(_rawData.type);
+ var valueClass:Class;
+ var type:String = _rawData.type;
+ if (type && type != '*') {
+ valueClass = getDefinitionByName(type);
+ }
if (isStatic) {
_setter = function(value:*):* {
//coerce
- value = Language.as(value, valueClass, true);
+ if (valueClass) value = Language.as(value, valueClass, true);
cl[fieldName] = value
}
} else {
@@ -135,7 +139,7 @@ package org.apache.royale.reflection {
if (arguments.length != 2 || (!(instance is cl))) throw 'invalid setValue parameters';
}
//coerce
- value = Language.as(value, valueClass, true);
+ if (valueClass) value = Language.as(value, valueClass, true);
instance[fieldName] = value;
}
}
diff --git a/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/VariableDefinition.as b/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/VariableDefinition.as
index 1c9b161..b225ee0 100755
--- a/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/VariableDefinition.as
+++ b/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/VariableDefinition.as
@@ -122,7 +122,11 @@ package org.apache.royale.reflection
COMPILE::JS {
var f:Function = _rawData.get_set;
- var valueClass:Class = getDefinitionByName(_rawData.type);
+ var valueClass:Class;
+ var type:String = _rawData.type;
+ if (type && type != '*') {
+ valueClass = getDefinitionByName(type);
+ }
if (isStatic) {
_setter = function(value:*):* {
if (goog.DEBUG) {
@@ -130,7 +134,7 @@ package org.apache.royale.reflection
//todo: more robust runtime checking of value here for debug mode
}
//coerce
- value = Language.as(value, valueClass, true);
+ if (valueClass) value = Language.as(value, valueClass, true);
f(value);
}
} else {
@@ -140,7 +144,7 @@ package org.apache.royale.reflection
//todo: more robust runtime checking of value here for debug mode
}
//coerce
- value = Language.as(value, valueClass, true);
+ if (valueClass) value = Language.as(value, valueClass, true);
f(instance, value);
}
}
diff --git a/frameworks/projects/Reflection/src/test/royale/flexUnitTests/reflection/ReflectionTesterTestEdgeCases.as b/frameworks/projects/Reflection/src/test/royale/flexUnitTests/reflection/ReflectionTesterTestEdgeCases.as
index ff4f6c0..557ef2c 100644
--- a/frameworks/projects/Reflection/src/test/royale/flexUnitTests/reflection/ReflectionTesterTestEdgeCases.as
+++ b/frameworks/projects/Reflection/src/test/royale/flexUnitTests/reflection/ReflectionTesterTestEdgeCases.as
@@ -296,6 +296,8 @@ package flexUnitTests.reflection
assertEquals( TestClass6.testnamespace::myStaticAccessor,'setViaCustomNSReflection', 'unexpected accessor post-write access result');
}
+
+ public static var anything:*;
[Test]
public function testWrongSetValueType():void{
@@ -315,6 +317,13 @@ package flexUnitTests.reflection
var accessorTestDef:AccessorDefinition = subset[0];
accessorTestDef.setValue(inst, 0.0);
assertStrictlyEquals(inst.accessorTest, '0', 'unexpected assigned value');
+
+ def = describeType(this);
+ collection = getMembers(def,true,MemberTypes.VARIABLES|MemberTypes.STATIC_ONLY);
+ subset = getMembersWithNameMatch(collection,'anything');
+ testVarDef = subset[0];
+ testVarDef.setValue('anything');
+ assertStrictlyEquals(ReflectionTesterTestEdgeCases.anything, 'anything', 'unexpected assigned value');
}
}