[inspector] moved var initialization break location before init expression (reland)
This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
Benefits (see test for details):
- only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
- removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:5909
Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
Reviewed-on: https://chromium-review.googlesource.com/518116
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45598}
2017-05-30 12:25:55 +00:00
|
|
|
Tests breakable locations in variable initializations.
|
|
|
|
|
|
|
|
Running test: testBreakLocations
|
|
|
|
|
|
|
|
Running test: testStepInto
|
|
|
|
|
|
|
|
function testFunction() {
|
|
|
|
var obj1 = |_|{a : 1};
|
|
|
|
var arr1 = |_|[1];
|
|
|
|
var promise = |_|Promise.|C|resolve(1).|C|then(x => x |_|* 2|R|).|C|then(x => x |_|/ 2|R|);
|
|
|
|
|_|Promise.|C|resolve(1).|C|then(x => x |_|* 2|R|).|C|then(x => x |_|/ 2|R|);
|
|
|
|
|_|promise = Promise.|C|resolve(1).|C|then(x => x |_|* 2|R|).|C|then(x => x |_|/ 2|R|);
|
|
|
|
var a = |_|1;
|
|
|
|
const x = |_|(a = 20);
|
|
|
|
var y = |_|(a = 100);
|
|
|
|
var z = |_|x + (a = 1) + (a = 2) + (a = 3) + |C|f();
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = |_|{ x: 0, y: 1 }; y |_|> 0; --|_|y) { let z = |_|x + y; }
|
|
|
|
|R|}
|
2017-07-17 19:02:35 +00:00
|
|
|
var b = obj1.|_|a;
|
[inspector] moved var initialization break location before init expression (reland)
This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
Benefits (see test for details):
- only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
- removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:5909
Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
Reviewed-on: https://chromium-review.googlesource.com/518116
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45598}
2017-05-30 12:25:55 +00:00
|
|
|
|_|(async function asyncF() {
|
|
|
|
let r = |_|await Promise.|C|resolve(42);
|
|
|
|
|_|return r;
|
|
|
|
|R|})|C|();
|
2017-07-14 17:50:09 +00:00
|
|
|
|_|return promise;|R|
|
|
|
|
}
|
[inspector] moved var initialization break location before init expression (reland)
This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
Benefits (see test for details):
- only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
- removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:5909
Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
Reviewed-on: https://chromium-review.googlesource.com/518116
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45598}
2017-05-30 12:25:55 +00:00
|
|
|
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
|
|
|
|
|
|
|
|
testFunction (test.js:2:13)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function testFunction() {
|
|
|
|
var obj1 = #{a : 1};
|
|
|
|
var arr1 = [1];
|
|
|
|
|
|
|
|
testFunction (test.js:3:13)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var obj1 = {a : 1};
|
|
|
|
var arr1 = #[1];
|
|
|
|
var promise = Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
|
|
|
|
testFunction (test.js:4:16)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var arr1 = [1];
|
|
|
|
var promise = #Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
|
|
|
|
testFunction (test.js:5:2)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var promise = Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
#Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
promise = Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
|
|
|
|
testFunction (test.js:6:2)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
#promise = Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
var a = 1;
|
|
|
|
|
|
|
|
testFunction (test.js:7:10)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
promise = Promise.resolve(1).then(x => x * 2).then(x => x / 2);
|
|
|
|
var a = #1;
|
|
|
|
const x = (a = 20);
|
|
|
|
|
|
|
|
testFunction (test.js:8:12)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var a = 1;
|
|
|
|
const x = #(a = 20);
|
|
|
|
var y = (a = 100);
|
|
|
|
|
|
|
|
testFunction (test.js:9:10)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
const x = (a = 20);
|
|
|
|
var y = #(a = 100);
|
|
|
|
var z = x + (a = 1) + (a = 2) + (a = 3) + f();
|
|
|
|
|
|
|
|
testFunction (test.js:10:10)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var y = (a = 100);
|
|
|
|
var z = #x + (a = 1) + (a = 2) + (a = 3) + f();
|
|
|
|
function f() {
|
|
|
|
|
|
|
|
f (test.js:12:24)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = #{ x: 0, y: 1 }; y > 0; --y) { let z = x + y; }
|
|
|
|
}
|
|
|
|
|
|
|
|
f (test.js:12:42)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = { x: 0, y: 1 }; y #> 0; --y) { let z = x + y; }
|
|
|
|
}
|
|
|
|
|
|
|
|
f (test.js:12:62)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = { x: 0, y: 1 }; y > 0; --y) { let z = #x + y; }
|
|
|
|
}
|
|
|
|
|
|
|
|
f (test.js:12:49)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = { x: 0, y: 1 }; y > 0; --#y) { let z = x + y; }
|
|
|
|
}
|
|
|
|
|
|
|
|
f (test.js:12:42)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = { x: 0, y: 1 }; y #> 0; --y) { let z = x + y; }
|
|
|
|
}
|
|
|
|
|
|
|
|
f (test.js:13:2)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
for (let { x, y } = { x: 0, y: 1 }; y > 0; --y) { let z = x + y; }
|
|
|
|
#}
|
|
|
|
var b = obj1.a;
|
|
|
|
|
2017-07-17 19:02:35 +00:00
|
|
|
testFunction (test.js:14:15)
|
[inspector] moved var initialization break location before init expression (reland)
This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
Benefits (see test for details):
- only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
- removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:5909
Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
Reviewed-on: https://chromium-review.googlesource.com/518116
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45598}
2017-05-30 12:25:55 +00:00
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
}
|
2017-07-17 19:02:35 +00:00
|
|
|
var b = obj1.#a;
|
[inspector] moved var initialization break location before init expression (reland)
This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
Benefits (see test for details):
- only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
- removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:5909
Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
Reviewed-on: https://chromium-review.googlesource.com/518116
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45598}
2017-05-30 12:25:55 +00:00
|
|
|
(async function asyncF() {
|
|
|
|
|
|
|
|
testFunction (test.js:15:2)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var b = obj1.a;
|
|
|
|
#(async function asyncF() {
|
|
|
|
let r = await Promise.resolve(42);
|
|
|
|
|
|
|
|
asyncF (test.js:16:12)
|
|
|
|
testFunction (test.js:18:4)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
(async function asyncF() {
|
|
|
|
let r = #await Promise.resolve(42);
|
|
|
|
return r;
|
|
|
|
|
|
|
|
asyncF (test.js:17:4)
|
|
|
|
let r = await Promise.resolve(42);
|
|
|
|
#return r;
|
|
|
|
})();
|
|
|
|
|
|
|
|
asyncF (test.js:18:2)
|
|
|
|
return r;
|
|
|
|
#})();
|
|
|
|
return promise;
|
|
|
|
|
|
|
|
|
|
|
|
Running test: testStepIntoAfterBreakpoint
|
|
|
|
testFunction (test.js:10:10)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
var y = (a = 100);
|
|
|
|
var z = #x + (a = 1) + (a = 2) + (a = 3) + f();
|
|
|
|
function f() {
|
|
|
|
|
|
|
|
f (test.js:12:24)
|
|
|
|
testFunction (test.js:10:44)
|
|
|
|
(anonymous) (expr.js:0:0)
|
|
|
|
function f() {
|
|
|
|
for (let { x, y } = #{ x: 0, y: 1 }; y > 0; --y) { let z = x + y; }
|
|
|
|
}
|
|
|
|
|