Skip to content

Commit

Permalink
feat: allow Type.annotations = Component(...).View(...)
Browse files Browse the repository at this point in the history
Closes #2577
  • Loading branch information
mhevery committed Jun 16, 2015
1 parent eb3586d commit b2c6694
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
15 changes: 13 additions & 2 deletions modules/angular2/src/reflection/reflection_capabilities.ts
@@ -1,4 +1,11 @@
import {Type, isPresent, global, stringify, BaseException} from 'angular2/src/facade/lang';
import {
Type,
isPresent,
isFunction,
global,
stringify,
BaseException
} from 'angular2/src/facade/lang';
import {List, ListWrapper} from 'angular2/src/facade/collection';
import {GetterFn, SetterFn, MethodFn} from './types';
import {PlatformReflectionCapabilities} from 'platform_reflection_capabilities';
Expand Down Expand Up @@ -118,7 +125,11 @@ export class ReflectionCapabilities implements PlatformReflectionCapabilities {
annotations(typeOfFunc): List<any> {
// Prefer the direct API.
if (isPresent(typeOfFunc.annotations)) {
return typeOfFunc.annotations;
var annotations = typeOfFunc.annotations;
if (isFunction(annotations) && annotations.annotations) {
annotations = annotations.annotations;
}
return annotations;
}
if (isPresent(this._reflect) && isPresent(this._reflect.getMetadata)) {
var annotations = this._reflect.getMetadata('annotations', typeOfFunc);
Expand Down
8 changes: 8 additions & 0 deletions modules/angular2/test/core/annotations/decorators_spec.ts
Expand Up @@ -11,6 +11,7 @@ import {
} from 'angular2/test_lib';

import {Component, View, Directive} from 'angular2/angular2';
import {reflector} from 'angular2/src/reflection/reflection';

export function main() {
describe('es5 decorators', () => {
Expand All @@ -24,5 +25,12 @@ export function main() {
Component({}).View({}).View({}).Class({constructor: function() { this.works = true; }});
expect(new MyComponent().works).toEqual(true);
});

it('should create type in ES5', () => {
function MyComponent(){};
var as;
(<any>MyComponent).annotations = as = Component({}).View({});
expect(reflector.annotations(MyComponent)).toEqual(as.annotations);
});
});
}

0 comments on commit b2c6694

Please sign in to comment.