Version 2.10.0-54.0.dev
Merge commit '51cd4cb3d647ec851b6b9a46d494a84695285442' into 'dev'
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
index 2078d8a..82af3fd 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powerset_bits.dart
@@ -86,21 +86,25 @@
}
int createPrimitiveValue(PrimitiveConstantValue value) {
- if (value is TrueConstantValue) {
- return trueMask;
- }
- if (value is FalseConstantValue) {
- return falseMask;
- }
- if (value is NullConstantValue) {
- return nullMask;
- }
- return otherMask;
+ return computeAbstractValueForConstant(value);
}
// TODO(coam): Same as getPrimitiveValue above.
bool isPrimitiveValue(int value) => isSingleton(value);
+ int computeAbstractValueForConstant(ConstantValue value) {
+ if (value.isTrue) {
+ return trueMask;
+ }
+ if (value.isFalse) {
+ return falseMask;
+ }
+ if (value.isNull) {
+ return nullMask;
+ }
+ return otherMask;
+ }
+
AbstractBool areDisjoint(int a, int b) =>
AbstractBool.trueOrMaybe(a & b == powersetBottom);
diff --git a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
index 91eb49a..1cc13f9 100644
--- a/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
+++ b/pkg/compiler/lib/src/inferrer/powersets/powersets.dart
@@ -338,7 +338,8 @@
// that can tell us information about the bits given a ConstantValue
@override
AbstractValue computeAbstractValueForConstant(covariant ConstantValue value) {
- int powersetBits = _powersetBitsDomain.powersetTop;
+ int powersetBits =
+ _powersetBitsDomain.computeAbstractValueForConstant(value);
AbstractValue abstractValue =
_abstractValueDomain.computeAbstractValueForConstant(value);
return PowersetValue(abstractValue, powersetBits);
diff --git a/pkg/compiler/test/inference/powerset_bits_test.dart b/pkg/compiler/test/inference/powerset_bits_test.dart
index 4e37897..4261af7 100644
--- a/pkg/compiler/test/inference/powerset_bits_test.dart
+++ b/pkg/compiler/test/inference/powerset_bits_test.dart
@@ -20,6 +20,7 @@
var c = true;
var d = true;
var e = func();
+var sink;
bool func() {
return false;
@@ -30,6 +31,8 @@
c = b && a;
d = a || b;
e = false;
+ sink = e;
+ print(sink);
}
""";
diff --git a/tools/VERSION b/tools/VERSION
index f462d6b..d90ea8e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 10
PATCH 0
-PRERELEASE 53
+PRERELEASE 54
PRERELEASE_PATCH 0
\ No newline at end of file