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

Unified Diff: dart/utils/compiler/source_file.dart

Issue 9719019: Launch Leg independently of Frog. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address own comment Created 8 years, 9 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
« no previous file with comments | « dart/utils/compiler/dart2js.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/utils/compiler/source_file.dart
diff --git a/dart/utils/compiler/source_file.dart b/dart/utils/compiler/source_file.dart
index 1078b59d9997fe6640266d117f099ce33a5129b6..ce03678946baa9d115f9094365f678faba17cc83 100644
--- a/dart/utils/compiler/source_file.dart
+++ b/dart/utils/compiler/source_file.dart
@@ -2,43 +2,24 @@
// 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.
-// TODO(jimhug): This should be an interface to work better with tools.
+#library('source_file');
+
+#import('../../frog/leg/colors.dart');
+
/**
* Represents a file of source code.
*/
-class SourceFile implements Comparable {
- // TODO(terry): This filename for in memory buffer. May need to rework if
- // filename is used for more than informational.
- static String IN_MEMORY_FILE = '<buffer>';
+class SourceFile {
/** The name of the file. */
final String filename;
/** The text content of the file. */
- String _text;
-
- /**
- * The order of the source file in a given library. This is used while we're
- * writing code for a library. A single source file can be used
- */
- // TODO(jmesserly): I don't like having properties that are only valid
- // sometimes. An alternative would be to store it in a Map that's used by
- // WorldGenerator while it's emitting code. This seems simpler.
- int orderInLibrary;
+ final String text;
List<int> _lineStarts;
- SourceFile(this.filename, this._text);
-
- String get text() => _text;
-
- set text(String newText) {
- if (newText != _text) {
- _text = newText;
- _lineStarts = null;
- orderInLibrary = null;
- }
- }
+ SourceFile(this.filename, this.text);
List<int> get lineStarts() {
if (_lineStarts == null) {
@@ -73,7 +54,7 @@ class SourceFile implements Comparable {
* in the file.
*/
String getLocationMessage(String message, int start,
- [int end, bool includeText=false]) {
+ [int end, bool includeText=false, bool useColors = true]) {
var line = getLine(start);
var column = getColumn(line, start);
@@ -90,11 +71,11 @@ class SourceFile implements Comparable {
}
int toColumn = Math.min(column + (end-start), textLine.length);
- if (options.useColors) {
+ if (useColors) {
buf.add(textLine.substring(0, column));
- buf.add(_RED_COLOR);
+ buf.add(RED_COLOR);
buf.add(textLine.substring(column, toColumn));
- buf.add(_NO_COLOR);
+ buf.add(NO_COLOR);
buf.add(textLine.substring(toColumn));
} else {
buf.add(textLine);
@@ -105,82 +86,13 @@ class SourceFile implements Comparable {
buf.add(' ');
}
- if (options.useColors) buf.add(_RED_COLOR);
+ if (useColors) buf.add(RED_COLOR);
for (; i < toColumn; i++) {
buf.add('^');
}
- if (options.useColors) buf.add(_NO_COLOR);
+ if (useColors) buf.add(NO_COLOR);
}
return buf.toString();
}
-
- /** Compares two source files. */
- int compareTo(SourceFile other) {
- if (orderInLibrary != null && other.orderInLibrary != null) {
- return orderInLibrary - other.orderInLibrary;
- } else {
- return filename.compareTo(other.filename);
- }
- }
-}
-
-
-/**
- * A range of characters in a [SourceFile]. Used to represent the source
- * positions of [Token]s and [Node]s for error reporting or other tooling
- * work.
- */
- // TODO(jmesserly): Rename to Span - but first write cool refactoring tool
-class SourceSpan implements Comparable {
- /** The [SourceFile] that contains this span. */
- final SourceFile file;
-
- /** The character position of the start of this span. */
- final int start;
-
- /** The character position of the end of this span. */
- final int end;
-
- SourceSpan(this.file, this.start, this.end);
-
- /** Returns the source text corresponding to this [Span]. */
- String get text() {
- return file.text.substring(start, end);
- }
-
- toMessageString(String message) {
- return file.getLocationMessage(message, start, end: end, includeText: true);
- }
-
- int get line() {
- return file.getLine(start);
- }
-
- int get column() {
- return file.getColumn(line, start);
- }
-
- int get endLine() {
- return file.getLine(end);
- }
-
- int get endColumn() {
- return file.getColumn(endLine, end);
- }
-
- String get locationText() {
- var line = file.getLine(start);
- var column = file.getColumn(line, start);
- return '${file.filename}:${line + 1}:${column + 1}';
- }
-
- /** Compares two source spans by file and position. Handles nulls. */
- int compareTo(SourceSpan other) {
- if (file == other.file) {
- int d = start - other.start;
- return d == 0 ? (end - other.end) : d;
- }
- return file.compareTo(other.file);
- }
}
« no previous file with comments | « dart/utils/compiler/dart2js.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698