@@ -48,16 +48,16 @@ internal static Completion ProcessPatterns(
48
48
BindingPattern pattern ,
49
49
JsValue argument ,
50
50
EnvironmentRecord environment ,
51
- bool checkObjectPatternPropertyReference = true )
51
+ bool checkPatternPropertyReference = true )
52
52
{
53
53
if ( pattern is ArrayPattern ap )
54
54
{
55
- return HandleArrayPattern ( context , ap , argument , environment ) ;
55
+ return HandleArrayPattern ( context , ap , argument , environment , checkPatternPropertyReference ) ;
56
56
}
57
57
58
58
if ( pattern is ObjectPattern op )
59
59
{
60
- return HandleObjectPattern ( context , op , argument , environment , checkObjectPatternPropertyReference ) ;
60
+ return HandleObjectPattern ( context , op , argument , environment , checkPatternPropertyReference ) ;
61
61
}
62
62
63
63
ExceptionHelper . ThrowArgumentException ( "Not a pattern" ) ;
@@ -83,7 +83,8 @@ private static Completion HandleArrayPattern(
83
83
EvaluationContext context ,
84
84
ArrayPattern pattern ,
85
85
JsValue argument ,
86
- EnvironmentRecord environment )
86
+ EnvironmentRecord environment ,
87
+ bool checkReference )
87
88
{
88
89
var engine = context . Engine ;
89
90
var realm = engine . Realm ;
@@ -141,7 +142,7 @@ private static Completion HandleArrayPattern(
141
142
ConsumeFromIterator ( iterator , out value , out done ) ;
142
143
}
143
144
144
- AssignToIdentifier ( engine , identifier . Name , value , environment ) ;
145
+ AssignToIdentifier ( engine , identifier . Name , value , environment , checkReference ) ;
145
146
}
146
147
else if ( left is MemberExpression me )
147
148
{
@@ -215,7 +216,7 @@ private static Completion HandleArrayPattern(
215
216
216
217
if ( restElement . Argument is Identifier leftIdentifier )
217
218
{
218
- AssignToIdentifier ( engine , leftIdentifier . Name , array , environment ) ;
219
+ AssignToIdentifier ( engine , leftIdentifier . Name , array , environment , checkReference ) ;
219
220
}
220
221
else if ( restElement . Argument is BindingPattern bp )
221
222
{
@@ -256,7 +257,7 @@ private static Completion HandleArrayPattern(
256
257
( ( FunctionInstance ) value ) . SetFunctionName ( new JsString ( leftIdentifier . Name ) ) ;
257
258
}
258
259
259
- AssignToIdentifier ( engine , leftIdentifier . Name , value , environment ) ;
260
+ AssignToIdentifier ( engine , leftIdentifier . Name , value , environment , checkReference ) ;
260
261
}
261
262
else if ( assignmentPattern . Left is BindingPattern bp )
262
263
{
@@ -350,7 +351,7 @@ private static Completion HandleObjectPattern(
350
351
( ( FunctionInstance ) value ) . SetFunctionName ( target . Name ) ;
351
352
}
352
353
353
- AssignToIdentifier ( context . Engine , target . Name , value , environment ) ;
354
+ AssignToIdentifier ( context . Engine , target . Name , value , environment , checkReference ) ;
354
355
}
355
356
else if ( p . Value is BindingPattern bindingPattern )
356
357
{
@@ -379,7 +380,7 @@ private static Completion HandleObjectPattern(
379
380
var count = Math . Max ( 0 , source . Properties ? . Count ?? 0 ) - processedProperties . Count ;
380
381
var rest = context . Engine . Realm . Intrinsics . Object . Construct ( count ) ;
381
382
source . CopyDataProperties ( rest , processedProperties ) ;
382
- AssignToIdentifier ( context . Engine , leftIdentifier . Name , rest , environment ) ;
383
+ AssignToIdentifier ( context . Engine , leftIdentifier . Name , rest , environment , checkReference ) ;
383
384
}
384
385
else if ( restElement . Argument is BindingPattern bp )
385
386
{
@@ -447,7 +448,7 @@ private static void AssignToIdentifier(
447
448
{
448
449
if ( checkReference && lhs . IsUnresolvableReference ( ) && StrictModeScope . IsStrictModeCode )
449
450
{
450
- ExceptionHelper . ThrowReferenceError ( engine . Realm , "invalid reference" ) ;
451
+ ExceptionHelper . ThrowReferenceError ( engine . Realm , lhs ) ;
451
452
}
452
453
engine . PutValue ( lhs , rval ) ;
453
454
}
0 commit comments