@@ -44,7 +44,12 @@ function ReflectionObject(name, options) {
4444 /**
4545 * Resolved Features.
4646 */
47- this . _features = null ;
47+ this . _features = { } ;
48+
49+ /**
50+ * Resolved Features.
51+ */
52+ this . _proto_features = null ;
4853
4954 /**
5055 * Parent namespace.
@@ -152,7 +157,8 @@ ReflectionObject.prototype.resolve = function resolve() {
152157 if ( this . resolved )
153158 return this ;
154159 this . _resolveFeatures ( ) ;
155- this . resolved = true ;
160+ if ( this . root instanceof Root || this . parent )
161+ this . resolved = true ;
156162 return this ;
157163} ;
158164
@@ -166,10 +172,14 @@ ReflectionObject.prototype._resolveFeatures = function _resolveFeatures() {
166172 // (Breaks the bundler and eslint)
167173 // If we don't create a shallow copy, we end up also altering the parent's
168174 // features
169- var parentFeatures = Object . assign ( { } , this . parent . _features ) ;
170- this . _features = Object . assign ( parentFeatures , this . _features || { } ) ;
175+ var parentFeatures = Object . assign ( { } , this . parent . _proto_features ) ;
176+ this . _features = Object . assign ( parentFeatures , this . _proto_features || { } ) ;
177+ // this._proto_features = this._features;
171178 this . parent . _resolveFeatures ( ) ;
179+ } else {
180+ this . _features = Object . assign ( { } , this . _proto_features ) ;
172181 }
182+ this . _proto_features = this . _features ;
173183} ;
174184
175185/**
@@ -207,7 +217,7 @@ ReflectionObject.prototype.setParsedOption = function setParsedOption(name, valu
207217 if ( ! this . parsedOptions ) {
208218 this . parsedOptions = [ ] ;
209219 }
210- var isFeature = / f e a t u r e s / . test ( name ) ;
220+ var isFeature = / ^ f e a t u r e s / . test ( name ) ;
211221 var parsedOptions = this . parsedOptions ;
212222 if ( propName ) {
213223 // If setting a sub property of an option then try to merge it
@@ -236,8 +246,9 @@ ReflectionObject.prototype.setParsedOption = function setParsedOption(name, valu
236246
237247 if ( isFeature ) {
238248 var features = parsedOptions . find ( x => { return Object . prototype . hasOwnProperty . call ( x , "features" ) ; } ) ;
239- this . _features = features . features || { } ;
249+ this . _proto_features = features . features || { } ;
240250 }
251+
241252 return this ;
242253} ;
243254
0 commit comments