[dev_compiler] Fix incorrect debugger information on record types.
Closes: https://github.com/dart-lang/sdk/issues/54609 Change-Id: Ib8a24974ab1a5865d00ee361a151afebdf8a5e65 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/345825 Commit-Queue: Anna Gringauze <annagrin@google.com> Reviewed-by: Elliott Brooks <elliottbrooks@google.com> Reviewed-by: Nicholas Shahan <nshahan@google.com>
This commit is contained in:
committed by
Commit Queue
parent
74a4d59bba
commit
67e052d7e9
@@ -350,21 +350,7 @@ void runSharedTests(
|
||||
'runtimeKind': 'list',
|
||||
'length': 3,
|
||||
});
|
||||
// Old type system incorrectly returns 'dart:_interceptors|List<int>'
|
||||
}, skip: !setup.canaryFeatures);
|
||||
|
||||
test('getObjectMetadata (List) (old types)', () async {
|
||||
await driver.checkRuntimeInFrame(
|
||||
breakpointId: 'BP',
|
||||
expression: 'dart.getObjectMetadata(list)',
|
||||
expectedResult: {
|
||||
'className': 'List<int>',
|
||||
'libraryId': 'dart:_interceptors',
|
||||
'runtimeKind': 'list',
|
||||
'length': 3,
|
||||
});
|
||||
// Old type system incorrectly returns 'dart:_interceptors|List<int>'
|
||||
}, skip: setup.canaryFeatures);
|
||||
});
|
||||
|
||||
test('getObjectMetadata (Map)', () async {
|
||||
await driver.checkRuntimeInFrame(
|
||||
@@ -538,15 +524,33 @@ void runSharedTests(
|
||||
});
|
||||
|
||||
test('getObjectMetadata (Record type)', () async {
|
||||
var typeName = await driver.evaluateDartExpressionInFrame(
|
||||
breakpointId: 'BP',
|
||||
expression: 'recordType.toString()',
|
||||
);
|
||||
expect(typeName, '(int, int, {String name})');
|
||||
|
||||
await driver.checkRuntimeInFrame(
|
||||
breakpointId: 'BP',
|
||||
expression: 'dart.getObjectMetadata(recordType)',
|
||||
expectedResult: {
|
||||
'className': 'RecordType',
|
||||
'libraryId': 'dart:_runtime',
|
||||
'className': 'Type',
|
||||
'libraryId': 'dart:core',
|
||||
'runtimeKind': 'recordType',
|
||||
'length': 3,
|
||||
});
|
||||
|
||||
await driver.checkInFrame(
|
||||
breakpointId: 'BP',
|
||||
expression: 'record is Record',
|
||||
expectedResult: 'true',
|
||||
);
|
||||
|
||||
await driver.checkInFrame(
|
||||
breakpointId: 'BP',
|
||||
expression: 'recordType is Type',
|
||||
expectedResult: 'true',
|
||||
);
|
||||
});
|
||||
|
||||
test('getObjectFieldNames (object)', () async {
|
||||
|
||||
@@ -316,8 +316,8 @@ Object getObjectMetadata(@notNull Object object) {
|
||||
if (_isRecordType(object)) {
|
||||
var elements = _recordTypeElementTypes(object);
|
||||
var length = _get(elements, 'length');
|
||||
_set(result, 'libraryId', 'dart:_runtime');
|
||||
_set(result, 'className', 'RecordType');
|
||||
_set(result, 'libraryId', 'dart:core');
|
||||
_set(result, 'className', 'Type');
|
||||
_set(result, 'runtimeKind', RuntimeObjectKind.recordType);
|
||||
_set(result, 'length', length);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user