Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: tests/language/partial_min_test.dart

Issue 10696120: Fix very subtle bug in HNode.changeUse. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/language/partial_min_test.dart
diff --git a/tests/language/partial_min_test.dart b/tests/language/partial_min_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..f6c5e17775ccf749d2d67842768dff56f57a6fad
--- /dev/null
+++ b/tests/language/partial_min_test.dart
@@ -0,0 +1,27 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// This test triggered an NPE in dart2js.
+// The bug needed:
+// - double usage of the same variable in one expression ("b != b").
+// - replacement of "b" with "typechecked b".
+// - ...
+// The example below is minimal (as far as I was able to do).
+
+num foo(num a, num b) {
+ if (a > b) return b;
+ if (b is double) {
+ if (true) {
+ if (true) {
+ return (a + b) * a * b;
+ }
+ }
+ // Check for NaN and b == -0.0.
+ if (a == 0 && b == 0 || b != b) return b;
+ }
+}
+
+main() {
+ Expect.equals(1, foo(2, 1));
+}
« lib/compiler/implementation/ssa/nodes.dart ('K') | « lib/compiler/implementation/ssa/nodes.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698