@@ -234,8 +234,10 @@ Parser.prototype.initializeEvaluating = function() {
234234 this . plugin ( "evaluate MemberExpression" , function ( expression ) {
235235 var expr = expression ;
236236 var exprName = [ ] ;
237- while ( expr . type === "MemberExpression" && ! expr . computed ) {
238- exprName . unshift ( expr . property . name ) ;
237+ while ( expr . type === "MemberExpression" &&
238+ expr . property . type === ( expr . computed ? "Literal" : "Identifier" )
239+ ) {
240+ exprName . unshift ( expr . property . name || expr . property . value ) ;
239241 expr = expr . object ;
240242 }
241243 if ( expr . type === "Identifier" ) {
@@ -255,10 +257,11 @@ Parser.prototype.initializeEvaluating = function() {
255257 } ) ;
256258 this . plugin ( "evaluate CallExpression" , function ( expr ) {
257259 if ( expr . callee . type !== "MemberExpression" ) return ;
258- if ( expr . callee . computed ) return ;
260+ if ( expr . callee . property . type !== ( expr . callee . computed ? "Literal" : "Identifier" ) ) return ;
259261 var param = this . evaluateExpression ( expr . callee . object ) ;
260262 if ( ! param ) return ;
261- return this . applyPluginsBailResult ( "evaluate CallExpression ." + expr . callee . property . name , expr , param ) ;
263+ var property = expr . callee . property . name || expr . callee . property . value ;
264+ return this . applyPluginsBailResult ( "evaluate CallExpression ." + property , expr , param ) ;
262265 } ) ;
263266 this . plugin ( "evaluate CallExpression .replace" , function ( expr , param ) {
264267 if ( ! param . isString ( ) ) return ;
@@ -683,8 +686,10 @@ Parser.prototype.walkUnaryExpression = function walkUnaryExpression(expression)
683686 if ( expression . operator === "typeof" ) {
684687 var expr = expression . argument ;
685688 var exprName = [ ] ;
686- while ( expr . type === "MemberExpression" && ! expr . computed ) {
687- exprName . unshift ( expr . property . name ) ;
689+ while ( expr . type === "MemberExpression" &&
690+ expr . property . type === ( expr . computed ? "Literal" : "Identifier" )
691+ ) {
692+ exprName . unshift ( expr . property . name || expr . property . value ) ;
688693 expr = expr . object ;
689694 }
690695 if ( expr . type === "Identifier" && this . scope . definitions . indexOf ( expr . name ) === - 1 ) {
@@ -821,8 +826,10 @@ Parser.prototype.walkCallExpression = function walkCallExpression(expression) {
821826Parser . prototype . walkMemberExpression = function walkMemberExpression ( expression ) {
822827 var expr = expression ;
823828 var exprName = [ ] ;
824- while ( expr . type === "MemberExpression" && ! expr . computed ) {
825- exprName . unshift ( expr . property . name ) ;
829+ while ( expr . type === "MemberExpression" &&
830+ expr . property . type === ( expr . computed ? "Literal" : "Identifier" )
831+ ) {
832+ exprName . unshift ( expr . property . name || expr . property . value ) ;
826833 expr = expr . object ;
827834 }
828835 if ( expr . type === "Identifier" && this . scope . definitions . indexOf ( expr . name ) === - 1 ) {
0 commit comments