avm2: Also exclude interface based virtual properties from describeTypeJSON
This commit is contained in:
parent
4ae2a73b54
commit
f6ca9bcdac
|
@ -460,6 +460,15 @@ fn describe_internal_body<'gc>(
|
|||
unreachable!();
|
||||
};
|
||||
|
||||
// Don't include virtual properties that also exist in any interface
|
||||
if defining_class
|
||||
.all_interfaces()
|
||||
.iter()
|
||||
.any(|interface| interface.vtable().has_trait(&Multiname::new(ns, prop_name)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
let uri = if ns.as_uri().is_empty() {
|
||||
None
|
||||
} else {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.ruffle {
|
||||
public interface MyInterface {
|
||||
function interfaceMethod();
|
||||
function get interfaceGetter();
|
||||
}
|
||||
}
|
|
@ -26,5 +26,9 @@
|
|||
|
||||
public function interfaceMethod() {
|
||||
}
|
||||
|
||||
public function get interfaceGetter() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -94,7 +94,7 @@ isFinal = false
|
|||
isStatic = false
|
||||
name = com.ruffle::RuffleTest
|
||||
traits = [object Object]
|
||||
accessors = [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
|
||||
accessors = [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
|
||||
0 = [object Object]
|
||||
access = readonly
|
||||
declaredBy = com.ruffle::RuffleBase
|
||||
|
@ -145,6 +145,13 @@ traits = [object Object]
|
|||
type = Boolean
|
||||
uri = null
|
||||
7 = [object Object]
|
||||
access = readonly
|
||||
declaredBy = com.ruffle::RuffleTest
|
||||
metadata = null
|
||||
name = interfaceGetter
|
||||
type = *
|
||||
uri = null
|
||||
8 = [object Object]
|
||||
access = writeonly
|
||||
declaredBy = com.ruffle::RuffleTest
|
||||
metadata = null
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue