@@ -577,6 +577,7 @@ Parser.prototype = {
577
577
} ,
578
578
579
579
assignment : function ( ) {
580
+ var parserText = this . text ;
580
581
var left = this . ternary ( ) ;
581
582
var right ;
582
583
var token ;
@@ -587,7 +588,7 @@ Parser.prototype = {
587
588
}
588
589
right = this . ternary ( ) ;
589
590
return function $parseAssignment ( scope , locals ) {
590
- return left . assign ( scope , right ( scope , locals ) , locals ) ;
591
+ return left . assign ( scope , right ( scope , locals ) , locals , parserText ) ;
591
592
} ;
592
593
}
593
594
return left ;
@@ -686,7 +687,7 @@ Parser.prototype = {
686
687
} , {
687
688
assign : function ( scope , value , locals ) {
688
689
var o = object ( scope , locals ) ;
689
- if ( ! o ) object . assign ( scope , o = { } ) ;
690
+ if ( ! o ) object . assign ( scope , o = { } , null , parserText ) ;
690
691
return setter ( o , field , value , parserText ) ;
691
692
}
692
693
} ) ;
@@ -712,7 +713,7 @@ Parser.prototype = {
712
713
var key = ensureSafeMemberName ( indexFn ( self , locals ) , parserText ) ;
713
714
// prevent overwriting of Function.constructor which would break ensureSafeObject check
714
715
var o = ensureSafeObject ( obj ( self , locals ) , parserText ) ;
715
- if ( ! o ) obj . assign ( self , o = { } ) ;
716
+ if ( ! o ) obj . assign ( self , o = { } , null , parserText ) ;
716
717
return o [ key ] = value ;
717
718
}
718
719
} ) ;
@@ -926,8 +927,8 @@ function getterFn(path, options, fullExp) {
926
927
var evaledFnGetter = new Function ( 's' , 'l' , code ) ; // s=scope, l=locals
927
928
/* jshint +W054 */
928
929
evaledFnGetter . toString = valueFn ( code ) ;
929
- evaledFnGetter . assign = function ( self , value ) {
930
- return setter ( self , path , value , path ) ;
930
+ evaledFnGetter . assign = function ( self , value , locals , fullExp ) {
931
+ return setter ( self , path , value , fullExp || path ) ;
931
932
} ;
932
933
933
934
fn = evaledFnGetter ;
0 commit comments