@@ -14,9 +14,10 @@ import {Key} from './key';
1414import {
1515 InjectMetadata ,
1616 InjectableMetadata ,
17- VisibilityMetadata ,
1817 OptionalMetadata ,
19- DEFAULT_VISIBILITY ,
18+ SelfMetadata ,
19+ HostMetadata ,
20+ SkipSelfMetadata ,
2021 DependencyMetadata
2122} from './metadata' ;
2223import { NoAnnotationError } from './exceptions' ;
@@ -26,12 +27,10 @@ import {resolveForwardRef} from './forward_ref';
2627 * @private
2728 */
2829export class Dependency {
29- constructor ( public key : Key , public optional : boolean , public visibility : VisibilityMetadata ,
30- public properties : List < any > ) { }
30+ constructor ( public key : Key , public optional : boolean , public lowerBoundVisibility : any ,
31+ public upperBoundVisibility : any , public properties : List < any > ) { }
3132
32- static fromKey ( key : Key ) : Dependency {
33- return new Dependency ( key , false , DEFAULT_VISIBILITY , [ ] ) ;
34- }
33+ static fromKey ( key : Key ) : Dependency { return new Dependency ( key , false , null , null , [ ] ) ; }
3534}
3635
3736const _EMPTY_LIST = CONST_EXPR ( [ ] ) ;
@@ -390,50 +389,61 @@ function _dependenciesFor(typeOrFunc): List<Dependency> {
390389 return ListWrapper . map ( params , ( p : List < any > ) => _extractToken ( typeOrFunc , p , params ) ) ;
391390}
392391
393- function _extractToken ( typeOrFunc , annotations /*List<any> | any*/ , params : List < List < any > > ) :
392+ function _extractToken ( typeOrFunc , metadata /*List<any> | any*/ , params : List < List < any > > ) :
394393 Dependency {
395394 var depProps = [ ] ;
396395 var token = null ;
397396 var optional = false ;
398397
399- if ( ! isArray ( annotations ) ) {
400- return _createDependency ( annotations , optional , DEFAULT_VISIBILITY , depProps ) ;
398+ if ( ! isArray ( metadata ) ) {
399+ return _createDependency ( metadata , optional , null , null , depProps ) ;
401400 }
402401
403- var visibility = DEFAULT_VISIBILITY ;
402+ var lowerBoundVisibility = null ;
403+ ;
404+ var upperBoundVisibility = null ;
405+ ;
404406
405- for ( var i = 0 ; i < annotations . length ; ++ i ) {
406- var paramAnnotation = annotations [ i ] ;
407+ for ( var i = 0 ; i < metadata . length ; ++ i ) {
408+ var paramMetadata = metadata [ i ] ;
407409
408- if ( paramAnnotation instanceof Type ) {
409- token = paramAnnotation ;
410+ if ( paramMetadata instanceof Type ) {
411+ token = paramMetadata ;
410412
411- } else if ( paramAnnotation instanceof InjectMetadata ) {
412- token = paramAnnotation . token ;
413+ } else if ( paramMetadata instanceof InjectMetadata ) {
414+ token = paramMetadata . token ;
413415
414- } else if ( paramAnnotation instanceof OptionalMetadata ) {
416+ } else if ( paramMetadata instanceof OptionalMetadata ) {
415417 optional = true ;
416418
417- } else if ( paramAnnotation instanceof VisibilityMetadata ) {
418- visibility = paramAnnotation ;
419+ } else if ( paramMetadata instanceof SelfMetadata ) {
420+ upperBoundVisibility = paramMetadata ;
421+
422+ } else if ( paramMetadata instanceof HostMetadata ) {
423+ upperBoundVisibility = paramMetadata ;
419424
420- } else if ( paramAnnotation instanceof DependencyMetadata ) {
421- if ( isPresent ( paramAnnotation . token ) ) {
422- token = paramAnnotation . token ;
425+ } else if ( paramMetadata instanceof SkipSelfMetadata ) {
426+ lowerBoundVisibility = paramMetadata ;
427+
428+ } else if ( paramMetadata instanceof DependencyMetadata ) {
429+ if ( isPresent ( paramMetadata . token ) ) {
430+ token = paramMetadata . token ;
423431 }
424- depProps . push ( paramAnnotation ) ;
432+ depProps . push ( paramMetadata ) ;
425433 }
426434 }
427435
428436 token = resolveForwardRef ( token ) ;
429437
430438 if ( isPresent ( token ) ) {
431- return _createDependency ( token , optional , visibility , depProps ) ;
439+ return _createDependency ( token , optional , lowerBoundVisibility , upperBoundVisibility , depProps ) ;
432440 } else {
433441 throw new NoAnnotationError ( typeOrFunc , params ) ;
434442 }
435443}
436444
437- function _createDependency ( token , optional , visibility , depProps ) : Dependency {
438- return new Dependency ( Key . get ( token ) , optional , visibility , depProps ) ;
445+ function _createDependency ( token , optional , lowerBoundVisibility , upperBoundVisibility , depProps ) :
446+ Dependency {
447+ return new Dependency ( Key . get ( token ) , optional , lowerBoundVisibility , upperBoundVisibility ,
448+ depProps ) ;
439449}
0 commit comments