Revert the fix for issue #31770
Back in January we wanted to strip the call to unary- in the minimum
int64 literal. Now we have decided we want to keep it for the back
ends.
Change-Id: I06b3e20e63a59c84828eb5bdba4613f1c226ecbb
Reviewed-on: https://dart-review.googlesource.com/60444
Reviewed-by: Stephen Adams <sra@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 7843457..a43afde 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -2509,26 +2509,26 @@
push(forest.notExpression(toValue(receiver), token));
} else {
String operator = token.stringValue;
+ Expression receiverValue;
if (optional("-", token)) {
operator = "unary-";
if (receiver
is LargeIntAccessGenerator<Expression, Statement, Arguments>) {
- int value =
- int.parse("-" + receiver.token.lexeme, onError: (_) => null);
+ int value = int.tryParse("-" + receiver.token.lexeme);
if (value != null) {
- push(forest.literalInt(value, token));
- return;
+ receiverValue = forest.literalInt(value, token);
}
}
}
bool isSuper = false;
- Expression receiverValue;
- if (receiver is ThisAccessGenerator && receiver.isSuper) {
- isSuper = true;
- receiverValue = forest.thisExpression(receiver.token);
- } else {
- receiverValue = toValue(receiver);
+ if (receiverValue == null) {
+ if (receiver is ThisAccessGenerator && receiver.isSuper) {
+ isSuper = true;
+ receiverValue = forest.thisExpression(receiver.token);
+ } else {
+ receiverValue = toValue(receiver);
+ }
}
push(buildMethodInvocation(receiverValue, new Name(operator),
forest.argumentsEmpty(noLocation), token.charOffset,
diff --git a/pkg/front_end/testcases/minimum_int.dart.direct.expect b/pkg/front_end/testcases/minimum_int.dart.direct.expect
index 20fea8a..4216458 100644
--- a/pkg/front_end/testcases/minimum_int.dart.direct.expect
+++ b/pkg/front_end/testcases/minimum_int.dart.direct.expect
@@ -3,5 +3,4 @@
import "dart:core" as core;
static method main() → dynamic
- return core::print(-9223372036854775808);
-
+ return core::print(-9223372036854775808.unary-());
diff --git a/pkg/front_end/testcases/minimum_int.dart.direct.transformed.expect b/pkg/front_end/testcases/minimum_int.dart.direct.transformed.expect
index eb7af70..4216458 100644
--- a/pkg/front_end/testcases/minimum_int.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/minimum_int.dart.direct.transformed.expect
@@ -3,4 +3,4 @@
import "dart:core" as core;
static method main() → dynamic
- return core::print(-9223372036854775808);
+ return core::print(-9223372036854775808.unary-());
diff --git a/pkg/front_end/testcases/minimum_int.dart.strong.expect b/pkg/front_end/testcases/minimum_int.dart.strong.expect
index 20fea8a..17fdfdc 100644
--- a/pkg/front_end/testcases/minimum_int.dart.strong.expect
+++ b/pkg/front_end/testcases/minimum_int.dart.strong.expect
@@ -3,5 +3,4 @@
import "dart:core" as core;
static method main() → dynamic
- return core::print(-9223372036854775808);
-
+ return core::print(-9223372036854775808.{core::int::unary-}());
diff --git a/pkg/front_end/testcases/minimum_int.dart.strong.transformed.expect b/pkg/front_end/testcases/minimum_int.dart.strong.transformed.expect
index eb7af70..17fdfdc 100644
--- a/pkg/front_end/testcases/minimum_int.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/minimum_int.dart.strong.transformed.expect
@@ -3,4 +3,4 @@
import "dart:core" as core;
static method main() → dynamic
- return core::print(-9223372036854775808);
+ return core::print(-9223372036854775808.{core::int::unary-}());