use of com.oracle.truffle.api.debug.DebugScope in project graal by oracle.
the class SLDebugTest method testValuesScope.
@Test
public void testValuesScope() throws Throwable {
final Source varsSource = slCode("function main() {\n" + " a = 1;\n" + " if (a > 0) {\n" + " b = 10;\n" + " println(b);\n" + " }\n" + " println(b);\n" + " println(a);\n" + " println(\"END.\");\n" + "}");
try (DebuggerSession session = startSession()) {
session.suspendNextExecution();
startEval(varsSource);
expectSuspended((SuspendedEvent event) -> {
DebugStackFrame frame = event.getTopStackFrame();
// No variables first:
assertFalse(frame.getScope().getDeclaredValues().iterator().hasNext());
event.prepareStepOver(1);
});
expectSuspended((SuspendedEvent event) -> {
DebugStackFrame frame = event.getTopStackFrame();
// "a" only:
DebugScope scope = frame.getScope();
Iterator<DebugValue> varIt = scope.getDeclaredValues().iterator();
assertTrue(varIt.hasNext());
DebugValue a = varIt.next();
assertEquals("a", a.getName());
assertEquals(scope, a.getScope());
assertFalse(varIt.hasNext());
event.prepareStepOver(1);
});
expectSuspended((SuspendedEvent event) -> {
DebugStackFrame frame = event.getTopStackFrame();
// "a" only:
DebugScope scope = frame.getScope();
Iterator<DebugValue> varIt = scope.getParent().getDeclaredValues().iterator();
assertTrue(varIt.hasNext());
DebugValue a = varIt.next();
assertEquals("a", a.getName());
assertEquals(scope.getParent(), a.getScope());
assertFalse(varIt.hasNext());
event.prepareStepOver(1);
});
expectSuspended((SuspendedEvent event) -> {
DebugStackFrame frame = event.getTopStackFrame();
// "a" and "b":
DebugScope scope = frame.getScope();
Iterator<DebugValue> varIt = scope.getDeclaredValues().iterator();
assertTrue(varIt.hasNext());
DebugValue b = varIt.next();
assertEquals("b", b.getName());
assertEquals(scope, b.getScope());
// "a" is in the parent:
assertFalse(varIt.hasNext());
varIt = scope.getParent().getDeclaredValues().iterator();
assertTrue(varIt.hasNext());
DebugValue a = varIt.next();
assertEquals("a", a.getName());
assertEquals(scope.getParent(), a.getScope());
assertFalse(varIt.hasNext());
event.prepareStepOver(1);
});
expectSuspended((SuspendedEvent event) -> {
DebugStackFrame frame = event.getTopStackFrame();
// "a" only again:
DebugScope scope = frame.getScope();
Iterator<DebugValue> varIt = scope.getDeclaredValues().iterator();
assertTrue(varIt.hasNext());
DebugValue a = varIt.next();
assertEquals("a", a.getName());
assertEquals(scope, a.getScope());
assertFalse(varIt.hasNext());
event.prepareContinue();
});
expectDone();
}
}
use of com.oracle.truffle.api.debug.DebugScope in project graal by oracle.
the class SLDebugTest method checkArgs.
protected void checkArgs(DebugStackFrame frame, String... expectedArgs) {
Iterable<DebugValue> arguments = null;
DebugScope scope = frame.getScope();
while (scope != null) {
if (scope.isFunctionScope()) {
arguments = scope.getArguments();
break;
}
scope = scope.getParent();
}
checkDebugValues("arguments", arguments, expectedArgs);
}
Aggregations