Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 5fc031e

Browse files
a-sivacommit-bot@chromium.org
authored andcommitted
[VM/Libraries] Turn on NNBD versions of dart:io and dart:_http libraries
- Turn on NNBD versions of dart:io and dart:_http libraries - Fix an unimplemented section in Class::InvokeSetter Change-Id: I3f256526e05299d234cc566c3f05de954deef6ef Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/135203 Commit-Queue: Siva Annamalai <asiva@google.com> Reviewed-by: Régis Crelier <regis@google.com>
1 parent 905a154 commit 5fc031e

File tree

3 files changed

+43
-59
lines changed

3 files changed

+43
-59
lines changed

runtime/vm/object.cc

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3921,8 +3921,7 @@ RawObject* Class::InvokeSetter(const String& setter_name,
39213921
}
39223922

39233923
AbstractType& parameter_type = AbstractType::Handle(zone);
3924-
AbstractType& argument_type =
3925-
AbstractType::Handle(zone, value.GetType(Heap::kOld));
3924+
NNBDMode mode = nnbd_mode();
39263925

39273926
if (field.IsNull()) {
39283927
const Function& setter =
@@ -3940,14 +3939,9 @@ RawObject* Class::InvokeSetter(const String& setter_name,
39403939
InvocationMirror::kSetter);
39413940
}
39423941
parameter_type = setter.ParameterTypeAt(0);
3943-
if (nnbd_mode() != NNBDMode::kLegacyLib) {
3944-
// TODO(regis): Make type check nullability aware.
3945-
UNIMPLEMENTED();
3946-
}
3947-
if (!argument_type.IsNullType() && !parameter_type.IsDynamicType() &&
3948-
!value.IsInstanceOf(nnbd_mode(), parameter_type,
3949-
Object::null_type_arguments(),
3950-
Object::null_type_arguments())) {
3942+
if (!value.RuntimeTypeIsSubtypeOf(mode, parameter_type,
3943+
Object::null_type_arguments(),
3944+
Object::null_type_arguments())) {
39513945
const String& argument_name =
39523946
String::Handle(zone, setter.ParameterNameAt(0));
39533947
return ThrowTypeError(setter.token_pos(), value, parameter_type,
@@ -3968,14 +3962,9 @@ RawObject* Class::InvokeSetter(const String& setter_name,
39683962
}
39693963

39703964
parameter_type = field.type();
3971-
if (nnbd_mode() != NNBDMode::kLegacyLib) {
3972-
// TODO(regis): Make type check nullability aware.
3973-
UNIMPLEMENTED();
3974-
}
3975-
if (!argument_type.IsNullType() && !parameter_type.IsDynamicType() &&
3976-
!value.IsInstanceOf(nnbd_mode(), parameter_type,
3977-
Object::null_type_arguments(),
3978-
Object::null_type_arguments())) {
3965+
if (!value.RuntimeTypeIsSubtypeOf(mode, parameter_type,
3966+
Object::null_type_arguments(),
3967+
Object::null_type_arguments())) {
39793968
const String& argument_name = String::Handle(zone, field.name());
39803969
return ThrowTypeError(field.token_pos(), value, parameter_type,
39813970
argument_name);
@@ -17438,11 +17427,7 @@ bool Instance::IsInstanceOf(
1743817427
const AbstractType& other,
1743917428
const TypeArguments& other_instantiator_type_arguments,
1744017429
const TypeArguments& other_function_type_arguments) const {
17441-
ASSERT(other.IsFinalized());
1744217430
ASSERT(!other.IsDynamicType());
17443-
ASSERT(!other.IsTypeRef()); // Must be dereferenced at compile time.
17444-
// Note that Object::sentinel() has Null class, but !IsNull().
17445-
ASSERT(raw() != Object::sentinel().raw());
1744617431
if (IsNull()) {
1744717432
return Instance::NullIsInstanceOf(mode, other,
1744817433
other_instantiator_type_arguments,
@@ -17459,11 +17444,7 @@ bool Instance::IsAssignableTo(
1745917444
const AbstractType& other,
1746017445
const TypeArguments& other_instantiator_type_arguments,
1746117446
const TypeArguments& other_function_type_arguments) const {
17462-
ASSERT(other.IsFinalized());
1746317447
ASSERT(!other.IsDynamicType());
17464-
ASSERT(!other.IsTypeRef()); // Must be dereferenced at compile time.
17465-
// Note that Object::sentinel() has Null class, but !IsNull().
17466-
ASSERT(raw() != Object::sentinel().raw());
1746717448
// In weak mode type casts, whether in legacy or opted-in libraries, the null
1746817449
// instance is detected and handled in inlined code and therefore cannot be
1746917450
// encountered here as a Dart null receiver.
@@ -17484,6 +17465,8 @@ bool Instance::NullIsInstanceOf(
1748417465
const AbstractType& other,
1748517466
const TypeArguments& other_instantiator_type_arguments,
1748617467
const TypeArguments& other_function_type_arguments) {
17468+
ASSERT(other.IsFinalized());
17469+
ASSERT(!other.IsTypeRef()); // Must be dereferenced at compile time.
1748717470
// TODO(regis): Verify that the nullability of an instantiated FutureOr
1748817471
// always matches the nullability of its type argument. For now, be safe.
1748917472
AbstractType& type = AbstractType::Handle(other.UnwrapFutureOr());
@@ -17516,8 +17499,9 @@ bool Instance::RuntimeTypeIsSubtypeOf(
1751617499
const TypeArguments& other_instantiator_type_arguments,
1751717500
const TypeArguments& other_function_type_arguments) const {
1751817501
ASSERT(other.IsFinalized());
17519-
ASSERT(!other.IsDynamicType());
1752017502
ASSERT(!other.IsTypeRef()); // Must be dereferenced at compile time.
17503+
// Note that Object::sentinel() has Null class, but !IsNull().
17504+
ASSERT(raw() != Object::sentinel().raw());
1752117505
// Instance may not have runtimeType dynamic, void, or Never.
1752217506
if (other.IsTopType()) {
1752317507
return true;

sdk_nnbd/lib/libraries.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -97,25 +97,25 @@
9797
]
9898
},
9999
"_http": {
100-
"uri": "../../sdk/lib/_http/http.dart"
100+
"uri": "_http/http.dart"
101101
},
102102
"io": {
103-
"uri": "../../sdk/lib/io/io.dart",
103+
"uri": "io/io.dart",
104104
"patches": [
105-
"../../sdk/lib/_internal/vm/bin/common_patch.dart",
106-
"../../sdk/lib/_internal/vm/bin/directory_patch.dart",
107-
"../../sdk/lib/_internal/vm/bin/eventhandler_patch.dart",
108-
"../../sdk/lib/_internal/vm/bin/file_patch.dart",
109-
"../../sdk/lib/_internal/vm/bin/file_system_entity_patch.dart",
110-
"../../sdk/lib/_internal/vm/bin/filter_patch.dart",
111-
"../../sdk/lib/_internal/vm/bin/io_service_patch.dart",
112-
"../../sdk/lib/_internal/vm/bin/namespace_patch.dart",
113-
"../../sdk/lib/_internal/vm/bin/platform_patch.dart",
114-
"../../sdk/lib/_internal/vm/bin/process_patch.dart",
115-
"../../sdk/lib/_internal/vm/bin/socket_patch.dart",
116-
"../../sdk/lib/_internal/vm/bin/stdio_patch.dart",
117-
"../../sdk/lib/_internal/vm/bin/secure_socket_patch.dart",
118-
"../../sdk/lib/_internal/vm/bin/sync_socket_patch.dart"
105+
"_internal/vm/bin/common_patch.dart",
106+
"_internal/vm/bin/directory_patch.dart",
107+
"_internal/vm/bin/eventhandler_patch.dart",
108+
"_internal/vm/bin/file_patch.dart",
109+
"_internal/vm/bin/file_system_entity_patch.dart",
110+
"_internal/vm/bin/filter_patch.dart",
111+
"_internal/vm/bin/io_service_patch.dart",
112+
"_internal/vm/bin/namespace_patch.dart",
113+
"_internal/vm/bin/platform_patch.dart",
114+
"_internal/vm/bin/process_patch.dart",
115+
"_internal/vm/bin/socket_patch.dart",
116+
"_internal/vm/bin/stdio_patch.dart",
117+
"_internal/vm/bin/secure_socket_patch.dart",
118+
"_internal/vm/bin/sync_socket_patch.dart"
119119
]
120120
},
121121
"isolate": {

sdk_nnbd/lib/libraries.yaml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,25 +100,25 @@ vm:
100100
- "_internal/vm/lib/wasm_patch.dart"
101101

102102
_http:
103-
uri: "../../sdk/lib/_http/http.dart"
103+
uri: "_http/http.dart"
104104

105105
io:
106-
uri: "../../sdk/lib/io/io.dart"
106+
uri: "io/io.dart"
107107
patches:
108-
- "../../sdk/lib/_internal/vm/bin/common_patch.dart"
109-
- "../../sdk/lib/_internal/vm/bin/directory_patch.dart"
110-
- "../../sdk/lib/_internal/vm/bin/eventhandler_patch.dart"
111-
- "../../sdk/lib/_internal/vm/bin/file_patch.dart"
112-
- "../../sdk/lib/_internal/vm/bin/file_system_entity_patch.dart"
113-
- "../../sdk/lib/_internal/vm/bin/filter_patch.dart"
114-
- "../../sdk/lib/_internal/vm/bin/io_service_patch.dart"
115-
- "../../sdk/lib/_internal/vm/bin/namespace_patch.dart"
116-
- "../../sdk/lib/_internal/vm/bin/platform_patch.dart"
117-
- "../../sdk/lib/_internal/vm/bin/process_patch.dart"
118-
- "../../sdk/lib/_internal/vm/bin/socket_patch.dart"
119-
- "../../sdk/lib/_internal/vm/bin/stdio_patch.dart"
120-
- "../../sdk/lib/_internal/vm/bin/secure_socket_patch.dart"
121-
- "../../sdk/lib/_internal/vm/bin/sync_socket_patch.dart"
108+
- "_internal/vm/bin/common_patch.dart"
109+
- "_internal/vm/bin/directory_patch.dart"
110+
- "_internal/vm/bin/eventhandler_patch.dart"
111+
- "_internal/vm/bin/file_patch.dart"
112+
- "_internal/vm/bin/file_system_entity_patch.dart"
113+
- "_internal/vm/bin/filter_patch.dart"
114+
- "_internal/vm/bin/io_service_patch.dart"
115+
- "_internal/vm/bin/namespace_patch.dart"
116+
- "_internal/vm/bin/platform_patch.dart"
117+
- "_internal/vm/bin/process_patch.dart"
118+
- "_internal/vm/bin/socket_patch.dart"
119+
- "_internal/vm/bin/stdio_patch.dart"
120+
- "_internal/vm/bin/secure_socket_patch.dart"
121+
- "_internal/vm/bin/sync_socket_patch.dart"
122122

123123
isolate:
124124
uri: "isolate/isolate.dart"

0 commit comments

Comments
 (0)