Skip to content

Commit 161eeda

Browse files
committed
fix
1 parent b4d10eb commit 161eeda

File tree

6 files changed

+18
-22
lines changed

6 files changed

+18
-22
lines changed

Jint.Tests.Test262/test/skipped.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,10 @@
300300

301301
// Esprima problems
302302

303+
{
304+
"source": "built-ins/GeneratorFunction/instance-yield-expr-in-param.js",
305+
"reason": "Esprima doesn't detect invalid yield param"
306+
},
303307
{
304308
"source": "language/expressions/object/method-definition/name-super-prop-param.js",
305309
"reason": "Esprima problem"

Jint/EsprimaExtensions.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,6 @@ internal static void GetBoundNames(this Node? parameter, List<string> target)
222222
else if (parameter is AssignmentPattern assignmentPattern)
223223
{
224224
parameter = assignmentPattern.Left;
225-
if (assignmentPattern.Right is ClassExpression classExpression)
226-
{
227-
// TODO check if there's more generic rule
228-
if (classExpression.Id is not null)
229-
{
230-
target.Add(classExpression.Id.Name!);
231-
}
232-
}
233225
continue;
234226
}
235227
break;

Jint/Native/Generator/GeneratorInstance.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ private JsValue ResumeExecution(ExecutionContext genContext, EvaluationContext c
101101
}
102102
else if (result.Type == CompletionType.Return)
103103
{
104-
var value = result.Value.IsUndefined() ? context.ResumedCompletion.GetValueOrDefault() : result.Value;
105-
resultValue = new IteratorInstance.ValueIteratorPosition(_engine, value, false);
104+
resultValue = new IteratorInstance.ValueIteratorPosition(_engine, result.Value, false);
106105
if (_generatorBody.Completed)
107106
{
108107
_generatorState = GeneratorState.Completed;

Jint/Runtime/Interpreter/Expressions/BindingPatternAssignmentExpression.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,16 @@ internal static Completion ProcessPatterns(
4848
BindingPattern pattern,
4949
JsValue argument,
5050
EnvironmentRecord environment,
51-
bool checkObjectPatternPropertyReference = true)
51+
bool checkPatternPropertyReference = true)
5252
{
5353
if (pattern is ArrayPattern ap)
5454
{
55-
return HandleArrayPattern(context, ap, argument, environment);
55+
return HandleArrayPattern(context, ap, argument, environment, checkPatternPropertyReference);
5656
}
5757

5858
if (pattern is ObjectPattern op)
5959
{
60-
return HandleObjectPattern(context, op, argument, environment, checkObjectPatternPropertyReference);
60+
return HandleObjectPattern(context, op, argument, environment, checkPatternPropertyReference);
6161
}
6262

6363
ExceptionHelper.ThrowArgumentException("Not a pattern");
@@ -83,7 +83,8 @@ private static Completion HandleArrayPattern(
8383
EvaluationContext context,
8484
ArrayPattern pattern,
8585
JsValue argument,
86-
EnvironmentRecord environment)
86+
EnvironmentRecord environment,
87+
bool checkReference)
8788
{
8889
var engine = context.Engine;
8990
var realm = engine.Realm;
@@ -141,7 +142,7 @@ private static Completion HandleArrayPattern(
141142
ConsumeFromIterator(iterator, out value, out done);
142143
}
143144

144-
AssignToIdentifier(engine, identifier.Name, value, environment);
145+
AssignToIdentifier(engine, identifier.Name, value, environment, checkReference);
145146
}
146147
else if (left is MemberExpression me)
147148
{
@@ -215,7 +216,7 @@ private static Completion HandleArrayPattern(
215216

216217
if (restElement.Argument is Identifier leftIdentifier)
217218
{
218-
AssignToIdentifier(engine, leftIdentifier.Name, array, environment);
219+
AssignToIdentifier(engine, leftIdentifier.Name, array, environment, checkReference);
219220
}
220221
else if (restElement.Argument is BindingPattern bp)
221222
{
@@ -256,7 +257,7 @@ private static Completion HandleArrayPattern(
256257
((FunctionInstance) value).SetFunctionName(new JsString(leftIdentifier.Name));
257258
}
258259

259-
AssignToIdentifier(engine, leftIdentifier.Name, value, environment);
260+
AssignToIdentifier(engine, leftIdentifier.Name, value, environment, checkReference);
260261
}
261262
else if (assignmentPattern.Left is BindingPattern bp)
262263
{
@@ -350,7 +351,7 @@ private static Completion HandleObjectPattern(
350351
((FunctionInstance) value).SetFunctionName(target.Name);
351352
}
352353

353-
AssignToIdentifier(context.Engine, target.Name, value, environment);
354+
AssignToIdentifier(context.Engine, target.Name, value, environment, checkReference);
354355
}
355356
else if (p.Value is BindingPattern bindingPattern)
356357
{
@@ -379,7 +380,7 @@ private static Completion HandleObjectPattern(
379380
var count = Math.Max(0, source.Properties?.Count ?? 0) - processedProperties.Count;
380381
var rest = context.Engine.Realm.Intrinsics.Object.Construct(count);
381382
source.CopyDataProperties(rest, processedProperties);
382-
AssignToIdentifier(context.Engine, leftIdentifier.Name, rest, environment);
383+
AssignToIdentifier(context.Engine, leftIdentifier.Name, rest, environment, checkReference);
383384
}
384385
else if (restElement.Argument is BindingPattern bp)
385386
{
@@ -447,7 +448,7 @@ private static void AssignToIdentifier(
447448
{
448449
if (checkReference && lhs.IsUnresolvableReference() && StrictModeScope.IsStrictModeCode)
449450
{
450-
ExceptionHelper.ThrowReferenceError(engine.Realm, "invalid reference");
451+
ExceptionHelper.ThrowReferenceError(engine.Realm, lhs);
451452
}
452453
engine.PutValue(lhs, rval);
453454
}

Jint/Runtime/Interpreter/Statements/JintForInForOfStatement.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ private Completion BodyEvaluation(
231231
_assignmentPattern,
232232
nextValue,
233233
iterationEnv,
234-
checkObjectPatternPropertyReference: _lhsKind != LhsKind.VarBinding);
234+
checkPatternPropertyReference: _lhsKind != LhsKind.VarBinding);
235235

236236
if (lhsKind == LhsKind.Assignment)
237237
{

Jint/Runtime/Interpreter/Statements/JintVariableDeclaration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ protected override Completion ExecuteInternal(EvaluationContext context)
100100
declaration.LeftPattern,
101101
completion.Value,
102102
environment,
103-
checkObjectPatternPropertyReference: _statement.Kind != VariableDeclarationKind.Var);
103+
checkPatternPropertyReference: _statement.Kind != VariableDeclarationKind.Var);
104104
}
105105
else if (declaration.LeftIdentifierExpression == null
106106
|| JintAssignmentExpression.SimpleAssignmentExpression.AssignToIdentifier(

0 commit comments

Comments
 (0)