From 245a43ac0bfb86129f91bf07d4ead5463df4948d Mon Sep 17 00:00:00 2001
From: Misko Hevery <misko@hevery.com>
Date: Fri, 3 Jul 2015 10:53:07 +0200
Subject: [PATCH] fix(.d.ts): correct ComponentAnnotation inheritance

Closes #2356
---
 .../templates/angular2/angular2.d.ts.template.html |  1 -
 .../templates/type-definition.template.html        | 14 +++++++++-----
 modules/angular2/angular2.api.ts                   |  6 +-----
 3 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/docs/dgeni-package/templates/angular2/angular2.d.ts.template.html b/docs/dgeni-package/templates/angular2/angular2.d.ts.template.html
index f902e923ce4882..a8332d7d5ce2f8 100644
--- a/docs/dgeni-package/templates/angular2/angular2.d.ts.template.html
+++ b/docs/dgeni-package/templates/angular2/angular2.d.ts.template.html
@@ -9,7 +9,6 @@
 interface List<T> extends Array<T> {}
 interface Map<K,V> {}
 interface StringMap<K,V> extends Map<K,V> {}
-declare type Type = ng.Type;
 
 declare module ng {
   type SetterFn = typeof Function;
diff --git a/docs/dgeni-package/templates/type-definition.template.html b/docs/dgeni-package/templates/type-definition.template.html
index a5cac56be5583e..0e8ee0ca4f6c70 100644
--- a/docs/dgeni-package/templates/type-definition.template.html
+++ b/docs/dgeni-package/templates/type-definition.template.html
@@ -10,12 +10,16 @@
 
 {%- macro memberInfo(member, level) -%}
 {$ commentBlock(member, level) $}
-{$ member.name $}{% if member.optional %}?{% endif -%}
+{% if member.name == '__new' -%}
+  new
+{%- elif member.name == '__call' -%}
+{%- else -%}
+  {$ member.name $}
+{%- endif -%}{% if member.optional %}?{% endif -%}
 {% if member.typeParameters %}<{% for typeParam in member.typeParameters %}{$ typeParam $}{% if not loop.last %}, {% endif %}{% endfor %}>{% endif -%}
 {%- if member.parameters -%}({% for param in member.parameters %}{$ param $}{% if not loop.last %}, {% endif %}{% endfor %}){%- endif -%}
-{%- if member.returnType -%}
-  : {$ member.returnType $}{%- else -%}: any
-{%- endif -%};
+{%- if member.returnType == 'Directive' %}: DirectiveAnnotation{%- elif member.returnType -%}: {$ member.returnType $}{%- else -%}: any{%- endif -%}
+;
 {%- endmacro -%}
 
 
@@ -38,7 +42,7 @@
   {%- if export.content -%}
     {$ commentBlock(export, 3) $}
   {%- endif %}
-  {$ export.docType $} {$ export.name $}{$ export.typeParams $}{$ export.heritage $}
+  {$ export.docType $} {$ export.name $}{$ export.typeParams $}{%- if export.heritage == ' extends  Directive' %} extends DirectiveAnnotation{% else %}{$ export.heritage $}{% endif %}
   {%- if export.docType == 'class' or export.docType == 'interface' %} {
   {%- if export.newMember %}
     {$ memberInfo(export.newMember, 5) $}
diff --git a/modules/angular2/angular2.api.ts b/modules/angular2/angular2.api.ts
index ba4c75782054fd..9bc678bac5c0b5 100644
--- a/modules/angular2/angular2.api.ts
+++ b/modules/angular2/angular2.api.ts
@@ -11,13 +11,9 @@ export * from './angular2';
 // 1) if the symbol is intended to be part of the public API, then re-export somewhere else
 // 2) if the symbol should be omitted from the public API, then the class exposing it should
 //    not be exported, or should avoid exposing the symbol.
-export {ProtoRecord, RecordType} from './src/change_detection/proto_record';
 export * from './src/core/compiler/element_injector';
 export {DependencyAnnotation} from './src/di/annotations_impl';
-// FIXME: this is a workaround for https://github.com/angular/angular/issues/2356
-// We export the Directive *annotation* instead of the *decorator*.
-// But it breaks the build.
-export {Directive, LifecycleEvent} from './src/core/annotations_impl/annotations';
+export {LifecycleEvent} from './src/core/annotations_impl/annotations';
 export {Form} from './src/forms/directives/form_interface';
 export {TypeDecorator, ClassDefinition} from './src/util/decorators';
 export {Query} from './src/core/annotations_impl/di';