e8c5a51c3b
For a script '()=>42', the anonymous arrow function has both start and end position the same as the script function itself. This causes issues when sorting the SourcePositionEvents of the function, in two ways: * If the start positions are the same, we should order by *furthest* end position to ensure the stack is in the right order * If both start and end are the same, we need to order by function literal id to make sure that start order and end order are inversed. Also, MapLiterals assumes that start+end position uniquely identifies a function, which is false in this case, so we process the top-level script function separately in MapLiterals. Change-Id: I2b2185dc2825018b7ea44c7d0918238e9b1dd972 Reviewed-on: https://chromium-review.googlesource.com/1141741 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#54525}
14 lines
416 B
JavaScript
14 lines
416 B
JavaScript
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Flags: --allow-natives-syntax
|
|
|
|
// ()=>42 will have the same start and end position as the top-level script.
|
|
var foo = eval("()=>{ return 42 }");
|
|
assertEquals(42, foo());
|
|
|
|
%LiveEditPatchScript(foo, "()=>{ return 13 }");
|
|
|
|
assertEquals(13, foo());
|