fix(transformers): record reflection info about abstract classes

Closes #7347
This commit is contained in:
vsavkin 2016-02-29 14:51:20 -08:00 committed by Victor Savkin
parent b47f80ec76
commit 05c185a7b1
8 changed files with 18 additions and 9 deletions

View File

@ -1,8 +1,6 @@
import {ChangeDetector} from './interfaces';
import {ChangeDetectionStrategy} from './constants';
import {Injectable} from 'angular2/src/core/di';
@Injectable()
export abstract class ChangeDetectorRef {
/**
* Marks all {@link ChangeDetectionStrategy#OnPush} ancestors as to be checked.

View File

@ -1,5 +1,4 @@
import {unimplemented} from 'angular2/src/facade/exceptions';
import {Injectable} from 'angular2/src/core/di';
import {AppElement} from './element';
/**
@ -12,7 +11,6 @@ import {AppElement} from './element';
* An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM
* element.
*/
@Injectable()
export abstract class ElementRef {
/**
* The underlying native element or `null` if direct access to native elements is not supported

View File

@ -1,5 +1,4 @@
import {ElementRef, ElementRef_} from './element_ref';
import {Injectable} from 'angular2/src/core/di';
/**
* Represents an Embedded Template that can be used to instantiate Embedded Views.
@ -13,7 +12,6 @@ import {Injectable} from 'angular2/src/core/di';
* {@link ViewContainerRef#createEmbeddedView}, which will create the View and attach it to the
* View Container.
*/
@Injectable()
export abstract class TemplateRef {
/**
* The location in the View where the Embedded View logically belongs to.

View File

@ -36,7 +36,6 @@ import {
*
* <!-- TODO(i): we are also considering ElementRef#viewContainer api -->
*/
@Injectable()
export abstract class ViewContainerRef {
/**
* Anchor element that specifies the location of this container in the containing View.

View File

@ -13,7 +13,6 @@ export class RenderDebugInfo {
export interface ParentRenderer { renderComponent(componentType: RenderComponentType): Renderer; }
@Injectable()
export abstract class Renderer implements ParentRenderer {
abstract renderComponent(componentType: RenderComponentType): Renderer;

View File

@ -67,7 +67,6 @@ class ReflectionInfoVisitor extends RecursiveAstVisitor<ReflectionInfoModel> {
@override
ReflectionInfoModel visitClassDeclaration(ClassDeclaration node) {
if (node.isAbstract) return null;
if (!node.metadata
.any((a) => _annotationMatcher.hasMatch(a.name, assetId))) {
return null;

View File

@ -0,0 +1,10 @@
library angular2.test.transform.directive_processor.abstract_classes.classes;
import 'package:angular2/angular2.dart' show Injectable;
@Injectable()
abstract class Service {
factory Service(){
return null;
}
}

View File

@ -280,6 +280,14 @@ void allTests() {
});
});
it('should record information about abstract classes',
() async {
var model = (await _testCreateModel(
'abstract_classes/classes.dart')).ngDeps;
expect(model.reflectables.first.name).toEqual("Service");
});
it('should not throw/hang on invalid urls', () async {
var logger = new RecordingLogger();
await _testCreateModel('invalid_url_files/hello.dart', logger: logger);