From 04fae121545d4537eaa282607ee3660f859050ba Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Mon, 9 Feb 2026 08:22:54 -0800 Subject: [PATCH] [deps] Roll dart-lang/native Rolls in the unsupported constants breaking API change from `package:record_use`. Unsupported constants implementation in stacked CL. TEST=pkg/compiler/test/record_use/record_use_test.dart TEST=pkg/dart2wasm/test/record_use_test.dart TEST=pkg/vm/test/transformations/record_use_test.dart Change-Id: I2f6b3cf32abf2b3a0426fe88a9ec20284348459e Cq-Include-Trybots: luci.dart.try:dart2wasm-asserts-linux-chrome-try,dart2wasm-asserts-minified-linux-d8-try,dart2wasm-linux-chrome-try,dart2wasm-linux-d8-try,dart2wasm-linux-firefox-try,dart2wasm-linux-jscm-chrome-try,dart2wasm-linux-optimized-jsc-try,pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try,dart2js-canary-linux-try,dart2js-hostasserts-linux-d8-try,dart2js-linux-chrome-try,dart2js-linux-firefox-try,dart2js-mac-chrome-try,dart2js-mac-safari-try,dart2js-minified-csp-linux-chrome-try,dart2js-minified-linux-d8-try,dart2js-unit-linux-x64-release-try,dart2js-win-chrome-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/478361 Reviewed-by: Nate Biggs --- DEPS | 2 +- .../lib/src/universe/recorded_use.dart | 25 +++++++++++-------- .../test/native_assets/compile_test.dart | 3 ++- .../record_use/record_call.dart | 4 +-- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/DEPS b/DEPS index 3866b119cf2..60b6813a6d4 100644 --- a/DEPS +++ b/DEPS @@ -145,7 +145,7 @@ vars = { "i18n_rev": "dd8a792a8492370a594706c8304d2eb8db844d7a", "leak_tracker_rev": "f5620600a5ce1c44f65ddaa02001e200b096e14c", # rolled manually "material_color_utilities_rev": "799b6ba2f3f1c28c67cc7e0b4f18e0c7d7f3c03e", - "native_rev": "0819678f481c1e69d9c62ecf8b0449978ae21c0a", # rolled manually while record_use is experimental + "native_rev": "51d34eb76bb2b08347cb8406f9d022dfcf13afe4", # rolled manually while record_use is experimental "protobuf_rev": "9e30258e0aa6a6430ee36c84b75308a9702fde42", "pub_rev": "26c6985c742593d081f8b58450f463a584a4203a", # rolled manually "shelf_rev": "dd830a0338b31bee92fe7ebc20b9bb963403b6b0", diff --git a/pkg/compiler/lib/src/universe/recorded_use.dart b/pkg/compiler/lib/src/universe/recorded_use.dart index efb9dbcb259..9eeca18a60e 100644 --- a/pkg/compiler/lib/src/universe/recorded_use.dart +++ b/pkg/compiler/lib/src/universe/recorded_use.dart @@ -92,11 +92,11 @@ class RecordedCallWithArguments extends RecordedUse { final Map namedArguments; /// Constant positional argument values in `package:record_use` format. - List positionalArgumentsInRecordUseFormat() => + List positionalArgumentsInRecordUseFormat() => positionalArguments.map(_findValue).toList(); /// Constant named argument values in `package:record_use` format. - Map namedArgumentsInRecordUseFormat() => + Map namedArgumentsInRecordUseFormat() => namedArguments.map((k, v) => MapEntry(k, _findValue(v))); RecordedCallWithArguments({ @@ -172,19 +172,22 @@ class RecordedTearOff extends RecordedUse { } } -record_use.Constant? _findValue(ConstantValue? constant) { +record_use.MaybeConstant _findValue(ConstantValue? constant) { return switch (constant) { - null => null, // not const. + null => const record_use.NonConstant(), // not const. NullConstantValue() => record_use.NullConstant(), BoolConstantValue() => record_use.BoolConstant(constant.boolValue), IntConstantValue() => record_use.IntConstant(constant.intValue.toInt()), StringConstantValue() => record_use.StringConstant(constant.stringValue), - MapConstantValue() => _findMapValue(constant), - ListConstantValue() => _findListValue(constant), - ConstructedConstantValue() => _findInstanceValue(constant), + MapConstantValue() => + _findMapValue(constant) ?? const record_use.NonConstant(), + ListConstantValue() => + _findListValue(constant) ?? const record_use.NonConstant(), + ConstructedConstantValue() => + _findInstanceValue(constant) ?? const record_use.NonConstant(), // TODO(https://github.com/dart-lang/native/issues/2899): Handle // unsupported const types so that the values don't show up as non-const. - Object() => null, + Object() => const record_use.NonConstant(), }; } @@ -194,7 +197,7 @@ record_use.MapConstant? _findMapValue(MapConstantValue constant) { final keyConstantValue = constant.keys[index]; final keyValue = _findValue(keyConstantValue); final value = _findValue(constant.values[index]); - if (keyValue == null || value == null) { + if (keyValue is! record_use.Constant || value is! record_use.Constant) { // TODO(https://github.com/dart-lang/native/issues/2899): Handle // unsupported values. return null; @@ -208,7 +211,7 @@ record_use.ListConstant? _findListValue(ListConstantValue constant) { final result = []; for (final constantValue in constant.entries) { final constant = _findValue(constantValue); - if (constant == null) { + if (constant is! record_use.Constant) { // TODO(https://github.com/dart-lang/native/issues/2899): Handle // unsupported values. return null; @@ -225,7 +228,7 @@ record_use.InstanceConstant? _findInstanceValue( for (final entry in constant.fields.entries) { final name = entry.key.name; final value = _findValue(entry.value); - if (name == null || value == null) { + if (name == null || value is! record_use.Constant) { // TODO(https://github.com/dart-lang/native/issues/2899): Handle // unsupported fields. return null; diff --git a/pkg/dartdev/test/native_assets/compile_test.dart b/pkg/dartdev/test/native_assets/compile_test.dart index 31170087f88..d219ece909d 100644 --- a/pkg/dartdev/test/native_assets/compile_test.dart +++ b/pkg/dartdev/test/native_assets/compile_test.dart @@ -138,7 +138,8 @@ void main() async { )); expect(constArguments.length, 1); expect(constArguments.first.named.isEmpty, true); - expect(constArguments.first.positional, [3, 4]); + expect(constArguments.first.positional, + const [IntConstant(3), IntConstant(4)]); }); }); diff --git a/pkg/vm/lib/transformations/record_use/record_call.dart b/pkg/vm/lib/transformations/record_use/record_call.dart index e962f3815c5..896993c617b 100644 --- a/pkg/vm/lib/transformations/record_use/record_call.dart +++ b/pkg/vm/lib/transformations/record_use/record_call.dart @@ -116,7 +116,7 @@ class CallRecorder { ); } - Constant? _evaluateLiteral(ast.Expression expression) { + MaybeConstant _evaluateLiteral(ast.Expression expression) { if (expression is ast.BasicLiteral) { return evaluateLiteral(expression); } else if (expression is ast.ConstantExpression) { @@ -125,7 +125,7 @@ class CallRecorder { expression.variable.initializer != null) { return _evaluateLiteral(expression.variable.initializer!); } else { - return null; + return const NonConstant(); } }