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

Unified Diff: sdk/lib/_internal/compiler/implementation/util/util.dart

Issue 694353007: Move dart2js from sdk/lib/_internal/compiler to pkg/compiler (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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: sdk/lib/_internal/compiler/implementation/util/util.dart
diff --git a/sdk/lib/_internal/compiler/implementation/util/util.dart b/sdk/lib/_internal/compiler/implementation/util/util.dart
deleted file mode 100644
index 7c75819b0fce6878963aae11408dd79cad85ea41..0000000000000000000000000000000000000000
--- a/sdk/lib/_internal/compiler/implementation/util/util.dart
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright (c) 2011, 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.
-
-library dart2js.util;
-
-import 'util_implementation.dart';
-import 'characters.dart';
-
-export 'setlet.dart';
-export 'maplet.dart';
-export 'emptyset.dart';
-
-part 'indentation.dart';
-part 'link.dart';
-
-/// If an integer is masked by this constant, the result is guaranteed to be in
-/// Smi range.
-const int SMI_MASK = 0x3fffffff;
-
-/**
- * Tagging interface for classes from which source spans can be generated.
- */
-// TODO(johnniwinther): Find a better name.
-// TODO(ahe): How about "Bolt"?
-abstract class Spannable {}
-
-class _SpannableSentinel implements Spannable {
- final String name;
-
- const _SpannableSentinel(this.name);
-
- String toString() => name;
-}
-
-/// Sentinel spannable used to mark that diagnostics should point to the
-/// current element. Note that the diagnostic reporting will fail if the current
-/// element is `null`.
-const Spannable CURRENT_ELEMENT_SPANNABLE =
- const _SpannableSentinel("Current element");
-
-/// Sentinel spannable used to mark that there might be no location for the
-/// diagnostic. Use this only when it is not an error not to have a current
-/// element.
-const Spannable NO_LOCATION_SPANNABLE =
- const _SpannableSentinel("No location");
-
-class SpannableAssertionFailure {
- final Spannable node;
- final String message;
- SpannableAssertionFailure(this.node, this.message);
-
- String toString() => 'Assertion failure'
- '${message != null ? ': $message' : ''}';
-}
-
-bool equalElements(List a, List b) {
- if (a.length != b.length) return false;
- for (int index = 0; index < a.length; index++) {
- if (a[index] != b[index]) {
- return false;
- }
- }
- return true;
-}
-
-/**
- * File name prefix used to shorten the file name in stack traces printed by
- * [trace].
- */
-String stackTraceFilePrefix = null;
-
-/// Writes the characters of [string] on [buffer]. The characters
-/// are escaped as suitable for JavaScript and JSON. [buffer] is
-/// anything which supports [:write:] and [:writeCharCode:], for example,
-/// [StringBuffer]. Note that JS supports \xnn and \unnnn whereas JSON only
-/// supports the \unnnn notation. Therefore we use the \unnnn notation.
-void writeJsonEscapedCharsOn(String string, buffer) {
- void addCodeUnitEscaped(var buffer, int code) {
- assert(code < 0x10000);
- buffer.write(r'\u');
- if (code < 0x1000) {
- buffer.write('0');
- if (code < 0x100) {
- buffer.write('0');
- if (code < 0x10) {
- buffer.write('0');
- }
- }
- }
- buffer.write(code.toRadixString(16));
- }
-
- void writeEscapedOn(String string, var buffer) {
- for (int i = 0; i < string.length; i++) {
- int code = string.codeUnitAt(i);
- if (code == $DQ) {
- buffer.write(r'\"');
- } else if (code == $TAB) {
- buffer.write(r'\t');
- } else if (code == $LF) {
- buffer.write(r'\n');
- } else if (code == $CR) {
- buffer.write(r'\r');
- } else if (code == $DEL) {
- addCodeUnitEscaped(buffer, $DEL);
- } else if (code == $LS) {
- // This Unicode line terminator and $PS are invalid in JS string
- // literals.
- addCodeUnitEscaped(buffer, $LS); // 0x2028.
- } else if (code == $PS) {
- addCodeUnitEscaped(buffer, $PS); // 0x2029.
- } else if (code == $BACKSLASH) {
- buffer.write(r'\\');
- } else {
- if (code < 0x20) {
- addCodeUnitEscaped(buffer, code);
- // We emit DEL (ASCII 0x7f) as an escape because it would be confusing
- // to have it unescaped in a string literal. We also escape
- // everything above 0x7f because that means we don't have to worry
- // about whether the web server serves it up as Latin1 or UTF-8.
- } else if (code < 0x7f) {
- buffer.writeCharCode(code);
- } else {
- // This will output surrogate pairs in the form \udxxx\udyyy, rather
- // than the more logical \u{zzzzzz}. This should work in JavaScript
- // (especially old UCS-2 based implementations) and is the only
- // format that is allowed in JSON.
- addCodeUnitEscaped(buffer, code);
- }
- }
- }
- }
-
- for (int i = 0; i < string.length; i++) {
- int code = string.codeUnitAt(i);
- if (code < 0x20 || code == $DEL || code == $DQ || code == $LS ||
- code == $PS || code == $BACKSLASH || code >= 0x80) {
- writeEscapedOn(string, buffer);
- return;
- }
- }
- buffer.write(string);
-}
-
-int computeHashCode(part1, [part2, part3, part4, part5]) {
- return (part1.hashCode
- ^ part2.hashCode
- ^ part3.hashCode
- ^ part4.hashCode
- ^ part5.hashCode) & 0x3fffffff;
-}
-
-String modifiersToString({bool isStatic: false,
- bool isAbstract: false,
- bool isFinal: false,
- bool isVar: false,
- bool isConst: false,
- bool isFactory: false,
- bool isExternal: false}) {
- LinkBuilder<String> builder = new LinkBuilder<String>();
- if (isStatic) builder.addLast('static');
- if (isAbstract) builder.addLast('abstract');
- if (isFinal) builder.addLast('final');
- if (isVar) builder.addLast('var');
- if (isConst) builder.addLast('const');
- if (isFactory) builder.addLast('factory');
- if (isExternal) builder.addLast('external');
- StringBuffer buffer = new StringBuffer();
- builder.toLink().printOn(buffer, ', ');
- return buffer.toString();
-}
-
-class Pair<A, B> {
- final A a;
- final B b;
-
- Pair(this.a, this.b);
-
- int get hashCode => 13 * a.hashCode + 17 * b.hashCode;
-
- bool operator ==(var other) {
- if (identical(this, other)) return true;
- if (other is! Pair) return false;
- return a == other.a && b == other.b;
- }
-
- String toString() => '($a,$b)';
-}
-
-
-int longestCommonPrefixLength(List a, List b) {
- int index = 0;
- for ( ; index < a.length && index < b.length; index++) {
- if (a[index] != b[index]) {
- break;
- }
- }
- return index;
-}
-
-/// Returns [suggestedName] if it is not in [usedNames]. Otherwise concatenates
-/// the smallest number that makes it not appear in [usedNames].
-///
-/// Adds the result to [usedNames].
-String makeUnique(String suggestedName, Set<String> usedNames) {
- String result = suggestedName;
- if (usedNames.contains(suggestedName)) {
- int counter = 0;
- while (usedNames.contains(result)) {
- counter++;
- result = "$suggestedName$counter";
- }
- }
- usedNames.add(result);
- return result;
-}

Powered by Google App Engine
This is Rietveld 408576698