Index: pkg/pathos/lib/path.dart |
diff --git a/pkg/pathos/lib/path.dart b/pkg/pathos/lib/path.dart |
index 0fe031d64abfe84ab130a81e9c6d33cabd90d1b5..5136871f732220412a6974c2d9285e56037102fc 100644 |
--- a/pkg/pathos/lib/path.dart |
+++ b/pkg/pathos/lib/path.dart |
@@ -11,6 +11,18 @@ import 'dart:io' as io; |
/// functional interface and not require users to create one. |
final _builder = new Builder(); |
+/** |
+ * Inserts [length] elements in front of the [list] and fills them with the |
+ * [fillValue]. |
+ */ |
+void _growListFront(List list, int length, fillValue) { |
+ list.length += length; |
+ list.setRange(length, list.length, list); |
+ for (var i = 0; i < length; i++) { |
+ list[i] = fillValue; |
+ } |
+} |
+ |
/// Gets the path to the current working directory. |
String get current => new io.Directory.current().path; |
@@ -408,7 +420,7 @@ class Builder { |
// Filter out empty parts that exist due to multiple separators in a row. |
parsed.parts = parsed.parts.where((part) => !part.isEmpty) |
.toList(); |
- if (parsed.root != null) parsed.parts.insertRange(0, 1, parsed.root); |
+ if (parsed.root != null) parsed.parts.insert(0, parsed.root); |
return parsed.parts; |
} |
@@ -503,9 +515,9 @@ class Builder { |
// If there are any directories left in the root path, we need to walk up |
// out of them. |
- pathParsed.parts.insertRange(0, fromParsed.parts.length, '..'); |
- pathParsed.separators.insertRange(0, fromParsed.parts.length, |
- style.separator); |
+ _growListFront(pathParsed.parts, fromParsed.parts.length, '..'); |
+ _growListFront( |
+ pathParsed.separators, fromParsed.parts.length, style.separator); |
// Corner case: the paths completely collapsed. |
if (pathParsed.parts.length == 0) return '.'; |
@@ -678,7 +690,7 @@ class _ParsedPath { |
// A relative path can back out from the start directory. |
if (!isAbsolute) { |
- newParts.insertRange(0, leadingDoubles, '..'); |
+ _growListFront(newParts, leadingDoubles, '..'); |
} |
// If we collapsed down to nothing, do ".". |
@@ -688,7 +700,7 @@ class _ParsedPath { |
// Canonicalize separators. |
var newSeparators = []; |
- newSeparators.insertRange(0, newParts.length, style.separator); |
+ _growListFront(newSeparators, newParts.length, style.separator); |
parts = newParts; |
separators = newSeparators; |