fix(bug): reflect Dart interfaces from superclass as well
fixes #4221 Closes #4222
This commit is contained in:
parent
9dd32d658e
commit
577ee3744a
|
@ -272,8 +272,13 @@ class ReflectionCapabilities implements PlatformReflectionCapabilities {
|
|||
}
|
||||
|
||||
List interfaces(type) {
|
||||
ClassMirror classMirror = reflectType(type);
|
||||
return classMirror.superinterfaces.map((si) => si.reflectedType).toList();
|
||||
return _interfacesFromMirror(reflectType(type));
|
||||
}
|
||||
|
||||
List _interfacesFromMirror(classMirror) {
|
||||
return classMirror.superinterfaces.map((si) => si.reflectedType).toList()
|
||||
..addAll(classMirror.superclass == null ? []
|
||||
: _interfacesFromMirror(classMirror.superclass));
|
||||
}
|
||||
|
||||
GetterFn getter(String name) {
|
||||
|
|
|
@ -51,7 +51,11 @@ class TestObj {
|
|||
|
||||
class Interface {}
|
||||
|
||||
class ClassImplementingInterface implements Interface {}
|
||||
class Interface2 {}
|
||||
|
||||
class SuperClassImplementingInterface implements Interface2 {}
|
||||
|
||||
class ClassImplementingInterface extends SuperClassImplementingInterface implements Interface {}
|
||||
|
||||
export function main() {
|
||||
describe('Reflector', () => {
|
||||
|
@ -191,7 +195,7 @@ export function main() {
|
|||
describe("interfaces", () => {
|
||||
it("should return an array of interfaces for a type", () => {
|
||||
var p = reflector.interfaces(ClassImplementingInterface);
|
||||
expect(p).toEqual([Interface]);
|
||||
expect(p).toEqual([Interface, Interface2]);
|
||||
});
|
||||
|
||||
it("should return an empty array otherwise", () => {
|
||||
|
|
Loading…
Reference in New Issue