Version 1.4.0-dev.6.2
svn merge -c 35885 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 35889 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
git-svn-id: http://dart.googlecode.com/svn/trunk@35890 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/sdk/bin/dartanalyzer b/sdk/bin/dartanalyzer
index ffcaef5..cc49a5c 100755
--- a/sdk/bin/dartanalyzer
+++ b/sdk/bin/dartanalyzer
@@ -20,9 +20,12 @@
# Handle the case where dart-sdk/bin has been symlinked to.
BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
+SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)"
+
+SDK_ARG="--dart-sdk=$SDK_DIR"
SNAPSHOT="$BIN_DIR/snapshots/dartanalyzer.dart.snapshot"
# We are running the snapshot in the built SDK.
DART="$BIN_DIR/dart"
-exec "$DART" "$SNAPSHOT" "$@"
+exec "$DART" "$SNAPSHOT" "$SDK_ARG" "$@"
diff --git a/sdk/bin/dartanalyzer.bat b/sdk/bin/dartanalyzer.bat
index ba7989f..bca4afb 100644
--- a/sdk/bin/dartanalyzer.bat
+++ b/sdk/bin/dartanalyzer.bat
@@ -14,7 +14,15 @@
set DART=%BIN_DIR%\dart
set SNAPSHOT=%BIN_DIR%\snapshots\dartanalyzer.dart.snapshot
-"%DART%" "%SNAPSHOT%" %*
+rem Get absolute full name for SDK_DIR.
+for %%i in ("%BIN_DIR%\..\") do set SDK_DIR=%%~fi
+
+rem Remove trailing backslash if there is one
+if %SDK_DIR:~-1%==\ set SDK_DIR=%SDK_DIR:~0,-1%
+
+set SDK_ARG=--dart-sdk=%SDK_DIR%
+
+"%DART%" "%SNAPSHOT%" "%SDK_ARG%" %*
endlocal
diff --git a/sdk/lib/collection/splay_tree.dart b/sdk/lib/collection/splay_tree.dart
index 4674f8c..8e2f593 100644
--- a/sdk/lib/collection/splay_tree.dart
+++ b/sdk/lib/collection/splay_tree.dart
@@ -523,6 +523,7 @@
_SplayTreeIterator.startAt(_SplayTree tree, var startKey)
: _tree = tree,
_modificationCount = tree._modificationCount {
+ if (tree._root == null) return;
int compare = tree._splay(startKey);
_splayCount = tree._splayCount;
if (compare < 0) {
diff --git a/tests/corelib/splay_tree_test.dart b/tests/corelib/splay_tree_test.dart
index ee3083d..2557b54 100644
--- a/tests/corelib/splay_tree_test.dart
+++ b/tests/corelib/splay_tree_test.dart
@@ -51,6 +51,7 @@
Expect.equals(7, tree.firstKeyAfter(6));
regressRemoveWhere();
+ regressRemoveWhere2();
}
void regressRemoveWhere() {
@@ -65,3 +66,16 @@
return x.isOdd;
});
}
+
+void regressRemoveWhere2() {
+ // Regression test for http://dartbug.com/18676
+ // Removing all elements with removeWhere causes error.
+
+ var t = new SplayTreeSet();
+ t.addAll([1,2,3,4,5]);
+ t.removeWhere((_) => true); // Should not throw.
+ Expect.isTrue(t.isEmpty);
+ t.addAll([1,2,3,4,5]);
+ t.retainWhere((_) => false); // Should not throw.
+ Expect.isTrue(t.isEmpty);
+}
diff --git a/tools/VERSION b/tools/VERSION
index d960607..6374033 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
MINOR 4
PATCH 0
PRERELEASE 6
-PRERELEASE_PATCH 1
+PRERELEASE_PATCH 2