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

Commit af589a8

Browse files
natebiggsCommit Bot
authored andcommitted
[dart2js] Migrate abstract_value_domain to nnbd
Change-Id: Ic4258db7fcf29d23607d392e5ed2e6672221f6c7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/244700 Commit-Queue: Nate Biggs <natebiggs@google.com> Reviewed-by: Stephen Adams <sra@google.com>
1 parent 6ebd263 commit af589a8

21 files changed

+69
-47
lines changed

pkg/compiler/lib/src/compiler.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import 'dump_info.dart' show DumpInfoStateData, DumpInfoTask;
3232
import 'elements/entities.dart';
3333
import 'enqueue.dart' show Enqueuer;
3434
import 'environment.dart';
35-
import 'inferrer/abstract_value_domain.dart' show AbstractValueStrategy;
35+
import 'inferrer/abstract_value_strategy.dart';
3636
import 'inferrer/trivial.dart' show TrivialAbstractValueStrategy;
3737
import 'inferrer/powersets/powersets.dart' show PowersetStrategy;
3838
import 'inferrer/typemasks/masks.dart' show TypeMaskStrategy;

pkg/compiler/lib/src/inferrer/abstract_value_domain.dart

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,19 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// @dart = 2.10
6-
75
library dart2js.abstract_value_domain;
86

97
import '../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
108
import '../elements/entities.dart';
119
import '../elements/names.dart';
1210
import '../elements/types.dart' show DartType;
13-
import '../ir/static_type.dart';
14-
import '../serialization/serialization.dart';
11+
import '../ir/class_relation.dart';
12+
import '../serialization/serialization_interfaces.dart';
1513
import '../universe/selector.dart';
16-
import '../universe/world_builder.dart';
17-
import '../world.dart';
1814

1915
/// Enum-like values used for reporting known and unknown truth values.
2016
class AbstractBool {
21-
final bool _value;
17+
final bool? _value;
2218

2319
const AbstractBool._(this._value);
2420

@@ -75,17 +71,7 @@ class AbstractBool {
7571

7672
@override
7773
String toString() =>
78-
'AbstractBool.${_value == null ? 'Maybe' : (_value ? 'True' : 'False')}';
79-
}
80-
81-
/// Strategy for the abstraction of runtime values used by the global type
82-
/// inference.
83-
abstract class AbstractValueStrategy {
84-
/// Creates the abstract value domain for [closedWorld].
85-
AbstractValueDomain createDomain(JClosedWorld closedWorld);
86-
87-
/// Creates the [SelectorConstraintsStrategy] used by the backend enqueuer.
88-
SelectorConstraintsStrategy createSelectorStrategy();
74+
'AbstractBool.${_value == null ? 'Maybe' : (_value! ? 'True' : 'False')}';
8975
}
9076

9177
/// A value in an abstraction of runtime values.
@@ -634,8 +620,12 @@ abstract class AbstractValueDomain {
634620
String getCompactText(AbstractValue value);
635621

636622
/// Deserializes an [AbstractValue] for this domain from [source].
637-
AbstractValue readAbstractValueFromDataSource(DataSourceReader source);
623+
// TODO(48820): Remove covariant when DataSourceReader is migrated.
624+
AbstractValue readAbstractValueFromDataSource(
625+
covariant DataSourceReader source);
638626

639627
/// Serializes this [value] for this domain to [sink].
640-
void writeAbstractValueToDataSink(DataSinkWriter sink, AbstractValue value);
628+
// TODO(48820): Remove covariant when DataSinkWriter is migrated.
629+
void writeAbstractValueToDataSink(
630+
covariant DataSinkWriter sink, AbstractValue value);
641631
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
// @dart = 2.10
6+
7+
import '../universe/world_builder.dart';
8+
import '../world.dart';
9+
import 'abstract_value_domain.dart';
10+
11+
/// Strategy for the abstraction of runtime values used by the global type
12+
/// inference.
13+
abstract class AbstractValueStrategy {
14+
/// Creates the abstract value domain for [closedWorld].
15+
AbstractValueDomain createDomain(covariant JClosedWorld closedWorld);
16+
17+
/// Creates the [SelectorConstraintsStrategy] used by the backend enqueuer.
18+
SelectorConstraintsStrategy createSelectorStrategy();
19+
}

pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import '../../constants/values.dart';
99
import '../../elements/entities.dart';
1010
import '../../elements/names.dart';
1111
import '../../elements/types.dart';
12-
import '../../ir/static_type.dart';
12+
import '../../ir/class_relation.dart';
1313
import '../../universe/selector.dart';
1414
import '../../world.dart';
1515
import '../abstract_value_domain.dart';

pkg/compiler/lib/src/inferrer/powersets/powersets.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import '../../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
88
import '../../elements/entities.dart';
99
import '../../elements/names.dart';
1010
import '../../elements/types.dart' show DartType;
11-
import '../../ir/static_type.dart';
11+
import '../../ir/class_relation.dart';
1212
import '../../serialization/serialization.dart';
1313
import '../../universe/selector.dart';
1414
import '../../universe/world_builder.dart';
1515
import '../../universe/use.dart';
1616
import '../../world.dart';
1717
import '../abstract_value_domain.dart';
18+
import '../abstract_value_strategy.dart';
1819
import 'powerset_bits.dart';
1920

2021
class PowersetValue implements AbstractValue {

pkg/compiler/lib/src/inferrer/trivial.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import '../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
88
import '../elements/entities.dart';
99
import '../elements/names.dart';
1010
import '../elements/types.dart' show DartType;
11-
import '../ir/static_type.dart';
11+
import '../ir/class_relation.dart';
1212
import '../serialization/serialization_interfaces.dart';
1313
import '../universe/selector.dart';
1414
import '../universe/world_builder.dart';
1515
import '../universe/use.dart';
1616
import '../world.dart';
1717
import 'abstract_value_domain.dart';
18+
import 'abstract_value_strategy.dart';
1819

1920
class TrivialAbstractValue implements AbstractValue {
2021
const TrivialAbstractValue();

pkg/compiler/lib/src/inferrer/typemasks/masks.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import '../../constants/values.dart';
1414
import '../../elements/entities.dart';
1515
import '../../elements/names.dart';
1616
import '../../elements/types.dart';
17-
import '../../ir/static_type.dart';
17+
import '../../ir/class_relation.dart';
1818
import '../../serialization/serialization.dart';
1919
import '../../universe/class_hierarchy.dart';
2020
import '../../universe/selector.dart' show Selector;
@@ -24,6 +24,7 @@ import '../../universe/world_builder.dart'
2424
import '../../util/util.dart';
2525
import '../../world.dart' show JClosedWorld;
2626
import '../abstract_value_domain.dart';
27+
import '../abstract_value_strategy.dart';
2728
import '../type_graph_inferrer.dart' show TypeGraphInferrer;
2829
import 'constants.dart';
2930

pkg/compiler/lib/src/inferrer/wrapped.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import '../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
88
import '../elements/entities.dart';
99
import '../elements/names.dart';
1010
import '../elements/types.dart' show DartType;
11-
import '../ir/static_type.dart';
11+
import '../ir/class_relation.dart';
1212
import '../serialization/serialization.dart';
1313
import '../universe/selector.dart';
1414
import '../universe/world_builder.dart';
1515
import '../universe/use.dart';
1616
import '../world.dart';
1717
import 'abstract_value_domain.dart';
18+
import 'abstract_value_strategy.dart';
1819

1920
class WrappedAbstractValue implements AbstractValue {
2021
final AbstractValue _abstractValue;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
/// Enum values for how the target of a static type should be interpreted.
6+
// TODO(48820): Move this back to static_type.dart
7+
enum ClassRelation {
8+
/// The target is any subtype of the static type.
9+
subtype,
10+
11+
/// The target is a subclass or mixin application of the static type.
12+
///
13+
/// This corresponds to accessing a member through a this expression.
14+
thisExpression,
15+
16+
/// The target is an exact instance of the static type.
17+
exact,
18+
}

pkg/compiler/lib/src/ir/impact.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:kernel/ast.dart' as ir;
88
import 'package:kernel/type_environment.dart' as ir;
99

1010
import '../serialization/serialization.dart';
11+
import 'class_relation.dart';
1112
import 'constants.dart';
1213
import 'impact_data.dart';
1314
import 'runtime_type_analysis.dart';

0 commit comments

Comments
 (0)