avm2: Support recursive Vector<Vector<T>> lookups
This commit is contained in:
parent
6f4a9aeafb
commit
6f56016079
|
@ -298,9 +298,7 @@ impl<'gc> Domain<'gc> {
|
|||
let res = self.get_defined_value(activation, name);
|
||||
|
||||
if let Some(type_name) = type_name {
|
||||
let type_qname =
|
||||
QName::from_qualified_name(type_name, api_version, &mut activation.context);
|
||||
let type_class = self.get_defined_value(activation, type_qname)?;
|
||||
let type_class = self.get_defined_value_handling_vector(activation, type_name)?;
|
||||
if let Ok(res) = res {
|
||||
let class = res.as_object().ok_or_else(|| {
|
||||
Error::RustError(format!("Vector type {:?} was not an object", res).into())
|
||||
|
|
|
@ -58,7 +58,19 @@
|
|||
trace("Vector.<CustomClass>: " + getDefinitionByName(name));
|
||||
trace("ApplicationDomain.hasDefinition Vector.<CustomClass>: " + ApplicationDomain.currentDomain.hasDefinition(name));
|
||||
trace("ApplicationDomain.getDefinition Vector.<CustomClass>: " + ApplicationDomain.currentDomain.getDefinition(name));
|
||||
|
||||
|
||||
vec = new Vector.<Vector.<int>>();
|
||||
name = getQualifiedClassName(vec);
|
||||
trace("Vector.<Vector.<int>> name: " + name);
|
||||
trace("__AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>: " + getDefinitionByName(name));
|
||||
trace("ApplicationDomain.hasDefinition __AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>: " + ApplicationDomain.currentDomain.hasDefinition(name));
|
||||
trace("ApplicationDomain.getDefinition __AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>: " + ApplicationDomain.currentDomain.getDefinition(name));
|
||||
name = "Vector.<Vector.<int>>";
|
||||
trace("Vector.<Vector.<int>>: " + getDefinitionByName(name));
|
||||
trace("ApplicationDomain.hasDefinition Vector.<Vector.<int>>: " + ApplicationDomain.currentDomain.hasDefinition(name));
|
||||
trace("ApplicationDomain.getDefinition Vector.<Vector.<int>>: " + ApplicationDomain.currentDomain.getDefinition(name));
|
||||
trace("Vector.<Number> without namespace" + getDefinitionByName("Vector.<Number>"));
|
||||
|
||||
trace("Vector.<Number> without namespace" + getDefinitionByName("Vector.<Number>"));
|
||||
try {
|
||||
trace("Vector without namespace: " + getDefinitionByName("Vector"));
|
||||
|
|
|
@ -25,5 +25,12 @@ Vector.<CustomClass> name: __AS3__.vec::Vector.<rs.ruffle::CustomClass>
|
|||
Vector.<CustomClass>: [class Vector.<rs.ruffle::CustomClass>]
|
||||
ApplicationDomain.hasDefinition Vector.<CustomClass>: true
|
||||
ApplicationDomain.getDefinition Vector.<CustomClass>: [class Vector.<rs.ruffle::CustomClass>]
|
||||
Vector.<Vector.<int>> name: __AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>
|
||||
__AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>: [class Vector.<__AS3__.vec::Vector.<int>>]
|
||||
ApplicationDomain.hasDefinition __AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>: true
|
||||
ApplicationDomain.getDefinition __AS3__.vec::Vector.<__AS3__.vec::Vector.<int>>: [class Vector.<__AS3__.vec::Vector.<int>>]
|
||||
Vector.<Vector.<int>>: [class Vector.<__AS3__.vec::Vector.<int>>]
|
||||
ApplicationDomain.hasDefinition Vector.<Vector.<int>>: true
|
||||
ApplicationDomain.getDefinition Vector.<Vector.<int>>: [class Vector.<__AS3__.vec::Vector.<int>>]
|
||||
Vector.<Number> without namespace[class Vector.<Number>]
|
||||
Caught error: ReferenceError: Error #1065: Variable Vector is not defined.
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue