fix(reflector): merge prop metadata from getters and setters
Closes #4006
This commit is contained in:
parent
4ec4dcabe9
commit
15164a8e6c
|
@ -259,7 +259,8 @@ class ReflectionCapabilities implements PlatformReflectionCapabilities {
|
|||
final res = {};
|
||||
reflectClass(typeOrFunc).declarations.forEach((k,v) {
|
||||
var name = _normalizeName(MirrorSystem.getName(k));
|
||||
res[name] = v.metadata.map((fm) => fm.reflectee).toList();
|
||||
if (res[name] == null) res[name] = [];
|
||||
res[name].addAll(v.metadata.map((fm) => fm.reflectee));
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -27,3 +27,8 @@ ParamDecorator paramDecorator(value) {
|
|||
PropDecorator propDecorator(value) {
|
||||
return new PropDecorator(value);
|
||||
}
|
||||
|
||||
class HasGetterAndSetterDecorators {
|
||||
@PropDecorator("get") get a {}
|
||||
@PropDecorator("set") set a(v) {}
|
||||
}
|
|
@ -31,3 +31,6 @@ export function propDecorator(value) {
|
|||
export var ClassDecorator = makeDecorator(ClassDecoratorMeta);
|
||||
export var ParamDecorator = makeParamDecorator(ParamDecoratorMeta);
|
||||
export var PropDecorator = makePropDecorator(PropDecoratorMeta);
|
||||
|
||||
// used only in Dart
|
||||
export class HasGetterAndSetterDecorators {}
|
|
@ -7,7 +7,8 @@ import {
|
|||
PropDecorator,
|
||||
classDecorator,
|
||||
paramDecorator,
|
||||
propDecorator
|
||||
propDecorator,
|
||||
HasGetterAndSetterDecorators
|
||||
} from './reflector_common';
|
||||
import {IS_DART} from '../../platform';
|
||||
|
||||
|
@ -160,6 +161,13 @@ export function main() {
|
|||
reflector.registerType(TestObj, new ReflectionInfo(null, null, null, null, {"a": [1, 2]}));
|
||||
expect(reflector.propMetadata(TestObj)).toEqual({"a": [1, 2]});
|
||||
});
|
||||
|
||||
if (IS_DART) {
|
||||
it("should merge metadata from getters and setters", () => {
|
||||
var p = reflector.propMetadata(HasGetterAndSetterDecorators);
|
||||
expect(p["a"]).toEqual([propDecorator("get"), propDecorator("set")]);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
describe("annotations", () => {
|
||||
|
|
Loading…
Reference in New Issue