08f68102f8
Declare Variables with a name and position, rather than by passing through a VariableProxy. This allows us to not create dummy proxies for things like function declarations, and allows us to consider those declarations unused. As a side-effect, we also have to check if a variable is unused in the bytecode generator (as it will no longer be allocated), and we end up skip generating code/SFIs for dead variables/functions. Change-Id: I4c2c872473f23e124f9456b4b92f87159658f8e0 Reviewed-on: https://chromium-review.googlesource.com/c/1414916 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#59088}
289 lines
8.2 KiB
Plaintext
289 lines
8.2 KiB
Plaintext
Test for Debugger.getPossibleBreakpoints
|
|
|
|
Running test: getPossibleBreakpointsInRange
|
|
Test start.scriptId != end.scriptId.
|
|
{
|
|
error : {
|
|
code : -32000
|
|
message : Locations should contain the same scriptId
|
|
}
|
|
id : <messageId>
|
|
}
|
|
Test not existing scriptId.
|
|
{
|
|
error : {
|
|
code : -32000
|
|
message : Script not found
|
|
}
|
|
id : <messageId>
|
|
}
|
|
Test end < start.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test empty range in first line.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test one character range in first line.
|
|
function foo(){ #return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test empty range in not first line.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test one character range in not first line.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ #return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test end is undefined
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ #return Promise.#resolve().#then(() => #42#);# }
|
|
|
|
#
|
|
Test end.lineNumber > scripts.lineCount()
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ #return Promise.#resolve().#then(() => #42#);# }
|
|
|
|
|
|
Test one string
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test end.columnNumber > end.line.length(), should be the same as previous.
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
|
|
Running test: getPossibleBreakpointsInArrow
|
|
function foo() { #return Promise.#resolve().#then(() => #239#).#then(() => #42#).#then(() => #() => #42#)# }#
|
|
|
|
Running test: arrowFunctionFirstLine
|
|
function foo1() { #Promise.#resolve().#then(() => #42#) #}
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
paused in foo1
|
|
function foo1() { ^Promise.resolve().then(() => 42) }
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
paused in foo1
|
|
function foo1() { Promise.^resolve().then(() => 42) }
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
paused in foo1
|
|
function foo1() { Promise.resolve().^then(() => 42) }
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
paused in foo1
|
|
function foo1() { Promise.resolve().then(() => 42) ^}
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
paused in
|
|
function foo1() { Promise.resolve().then(() => ^42) }
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
paused in
|
|
function foo1() { Promise.resolve().then(() => 42^) }
|
|
function foo2() { Promise.resolve().then(() => 42) }
|
|
|
|
Running test: arrowFunctionOnPause
|
|
#debugger; function foo3() { #Promise.#resolve().#then(() => #42#) #}
|
|
function foo4() { #Promise.#resolve().#then(() => #42#) #};
|
|
#foo3();
|
|
#foo4();#
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
^foo3();
|
|
foo4();
|
|
paused in foo3
|
|
debugger; function foo3() { ^Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in foo3
|
|
debugger; function foo3() { Promise.^resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in foo3
|
|
debugger; function foo3() { Promise.resolve().^then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in foo3
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) ^}
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
^foo4();
|
|
paused in foo4
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { ^Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in foo4
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.^resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in foo4
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().^then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in foo4
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) ^};
|
|
foo3();
|
|
foo4();
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();^
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => ^42) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => 42^) }
|
|
function foo4() { Promise.resolve().then(() => 42) };
|
|
foo3();
|
|
foo4();
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => ^42) };
|
|
foo3();
|
|
foo4();
|
|
paused in
|
|
debugger; function foo3() { Promise.resolve().then(() => 42) }
|
|
function foo4() { Promise.resolve().then(() => 42^) };
|
|
foo3();
|
|
foo4();
|
|
|
|
Running test: getPossibleBreakpointsInRangeWithOffset
|
|
Test empty range in first line.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test one character range in first line.
|
|
function foo(){ #return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test empty range in not first line.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test one character range in not first line.
|
|
function foo(){ return Promise.resolve(); }
|
|
function boo(){ #return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test end is undefined
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ #return Promise.#resolve().#then(() => #42#);# }
|
|
|
|
#
|
|
Test end.lineNumber > scripts.lineCount()
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ #return Promise.#resolve().#then(() => #42#);# }
|
|
|
|
|
|
Test one string
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
Test end.columnNumber > end.line.length(), should be the same as previous.
|
|
function foo(){ #return Promise.#resolve();# }
|
|
function boo(){ return Promise.resolve().then(() => 42); }
|
|
|
|
|
|
|
|
Running test: withOffset
|
|
function foo5() { #Promise.#resolve().#then(() => #42#) #}
|
|
function foo6() { #Promise.#resolve().#then(() => #42#) #}
|
|
#
|
|
paused in foo5
|
|
function foo5() { ^Promise.resolve().then(() => 42) }
|
|
function foo6() { Promise.resolve().then(() => 42) }
|
|
|
|
paused in foo5
|
|
function foo5() { Promise.^resolve().then(() => 42) }
|
|
function foo6() { Promise.resolve().then(() => 42) }
|
|
|
|
paused in foo5
|
|
function foo5() { Promise.resolve().^then(() => 42) }
|
|
function foo6() { Promise.resolve().then(() => 42) }
|
|
|
|
paused in foo5
|
|
function foo5() { Promise.resolve().then(() => 42) ^}
|
|
function foo6() { Promise.resolve().then(() => 42) }
|
|
|
|
paused in foo6
|
|
function foo5() { Promise.resolve().then(() => 42) }
|
|
function foo6() { ^Promise.resolve().then(() => 42) }
|
|
|
|
paused in foo6
|
|
function foo5() { Promise.resolve().then(() => 42) }
|
|
function foo6() { Promise.^resolve().then(() => 42) }
|
|
|
|
paused in foo6
|
|
function foo5() { Promise.resolve().then(() => 42) }
|
|
function foo6() { Promise.resolve().^then(() => 42) }
|
|
|
|
paused in foo6
|
|
function foo5() { Promise.resolve().then(() => 42) }
|
|
function foo6() { Promise.resolve().then(() => 42) ^}
|
|
|
|
paused in
|
|
function foo5() { Promise.resolve().then(() => ^42) }
|
|
function foo6() { Promise.resolve().then(() => 42) }
|
|
|
|
paused in
|
|
function foo5() { Promise.resolve().then(() => 42^) }
|
|
function foo6() { Promise.resolve().then(() => 42) }
|
|
|
|
paused in
|
|
function foo5() { Promise.resolve().then(() => 42) }
|
|
function foo6() { Promise.resolve().then(() => ^42) }
|
|
|
|
paused in
|
|
function foo5() { Promise.resolve().then(() => 42) }
|
|
function foo6() { Promise.resolve().then(() => 42^) }
|
|
|
|
|
|
Running test: arrowFunctionReturn
|
|
#() => #239#
|
|
#
|
|
function foo() { function boo() { return 239 } #}
|
|
#
|
|
function foo() { function boo() { #return 239# }; #boo #}
|
|
#
|
|
function foo() { let boo = #function() { #return 239# }; #}
|
|
#
|
|
#() => { #239 #}
|
|
#
|
|
function foo() { #239 #}
|
|
#
|
|
#() => #239#
|
|
#() => { #return 239# }#
|
|
|
|
Running test: argumentsAsCalls
|
|
function foo(){#}
|
|
function boo(){#}
|
|
function main(f1,f2){#}
|
|
#main(#foo(), #boo());
|
|
#
|