@@ -26,13 +26,17 @@ var Common = require('./Common');
2626 }
2727
2828 if ( plugin . name in Plugin . _registry ) {
29- var registered = Plugin . _registry [ plugin . name ] ;
29+ var registered = Plugin . _registry [ plugin . name ] ,
30+ pluginVersion = Plugin . versionParse ( plugin . version ) . number ,
31+ registeredVersion = Plugin . versionParse ( registered . version ) . number ;
3032
31- if ( Plugin . versionParse ( plugin . version ) . number >= Plugin . versionParse ( registered . version ) . number ) {
33+ if ( pluginVersion > registeredVersion ) {
3234 Common . warn ( 'Plugin.register:' , Plugin . toString ( registered ) , 'was upgraded to' , Plugin . toString ( plugin ) ) ;
3335 Plugin . _registry [ plugin . name ] = plugin ;
34- } else {
36+ } else if ( pluginVersion < registeredVersion ) {
3537 Common . warn ( 'Plugin.register:' , Plugin . toString ( registered ) , 'can not be downgraded to' , Plugin . toString ( plugin ) ) ;
38+ } else if ( plugin !== registered ) {
39+ Common . warn ( 'Plugin.register:' , Plugin . toString ( plugin ) , 'is already registered to different plugin object' ) ;
3640 }
3741 } else {
3842 Plugin . _registry [ plugin . name ] = plugin ;
@@ -59,7 +63,7 @@ var Common = require('./Common');
5963 * @return {string } Pretty printed plugin name and version.
6064 */
6165 Plugin . toString = function ( plugin ) {
62- return ( plugin . name || 'anonymous' ) + '@' + ( plugin . version || plugin . range || '0.0.0' ) ;
66+ return typeof plugin === 'string' ? plugin : ( plugin . name || 'anonymous' ) + '@' + ( plugin . version || plugin . range || '0.0.0' ) ;
6367 } ;
6468
6569 /**
@@ -191,6 +195,10 @@ var Common = require('./Common');
191195 module = Plugin . resolve ( module ) || module ;
192196
193197 tracked [ name ] = Common . map ( module . uses || [ ] , function ( dependency ) {
198+ if ( Plugin . isPlugin ( dependency ) ) {
199+ Plugin . register ( dependency ) ;
200+ }
201+
194202 var parsed = Plugin . dependencyParse ( dependency ) ,
195203 resolved = Plugin . resolve ( dependency ) ;
196204
@@ -204,7 +212,7 @@ var Common = require('./Common');
204212 module . _warned = true ;
205213 } else if ( ! resolved ) {
206214 Common . warn (
207- 'Plugin.dependencies:' , dependency , 'used by' ,
215+ 'Plugin.dependencies:' , Plugin . toString ( dependency ) , 'used by' ,
208216 Plugin . toString ( parsedBase ) , 'could not be resolved.'
209217 ) ;
210218
0 commit comments