Closed
Description
When I try to evaluate values within if statements in the debug console the following error appears:
[Sentinel kind: OptimizedOut, valueAsString: <optimized out>] from evaluateInFrame()
#0 DartDebugAdapter.evaluateRequest (package:dds/src/dap/adapters/dart.dart:995:7)
<asynchronous suspension>
#1 BaseDebugAdapter.handle (package:dds/src/dap/base_debug_adapter.dart:143:7)
<asynchronous suspension>
Snippet that reproduces the issue (add the breakpoints in the line below the comments).
void main() {
var data = {
'number': 20,
'canProcess': true,
};
final worker = Worker(data);
print(worker.result);
final result = worker.maybeProcess(data, (data) {
if (data is Map) {
// Breakpoint 2: without issue
return data['number'] % 2 == 0;
}
return null;
});
print(result);
print(worker.getResult());
print(dataHasEventNumber(data));
}
class Worker {
final dynamic _data;
Worker(this._data);
bool? get result {
return maybeProcess(_data, (data) {
if (data is Map) {
// Breakpoint 1: with issue
return data['number'] % 2 == 0;
}
return null;
});
}
bool? getResult() {
return maybeProcess(_data, (data) {
if (data is Map) {
// Breakpoint 3: with issue
return data['number'] % 2 == 0;
}
return null;
});
}
bool? maybeProcess<String>(dynamic data, bool? Function(dynamic) fun) {
if (data is Map && data['canProcess'] == true) {
return fun(data);
}
return null;
}
}
bool? dataHasEventNumber(data) {
if (data is Map) {
// Breakpoint 4: without issue
return data['number'] % 2 == 0;
}
return null;
}
Tested on flutter master
and flutter stable
channels, using VSCode
(printing the value in the Debug Console) or Android Studio (evaluating expression).
Master channel: Dart SDK version: 3.1.0-118.0.dev (dev) (Tue May 16 18:58:22 2023 -0700) on "macos_x64"
Stable channel: Dart SDK version: 3.0.1 (stable) (Tue May 16 11:57:19 2023 +0000) on "macos_x64"
This bug does not exist on Dart SDK version: 2.19.2 (stable) (Tue Feb 7 18:37:17 2023 +0000) on "macos_x64"