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

Unified Diff: pkg/compiler/lib/src/io/source_map_builder.dart

Issue 2788373002: Add Source.getTextLine and use it to display source snippets in error messages. (Closed)
Patch Set: dartfmt Created 3 years, 8 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: pkg/compiler/lib/src/io/source_map_builder.dart
diff --git a/pkg/compiler/lib/src/io/source_map_builder.dart b/pkg/compiler/lib/src/io/source_map_builder.dart
index d1b63dadc349a0dbbcec1dc1d22fd435ba4a2c03..de2abfb052e46820342f2551b3788d8b2f0ce9ac 100644
--- a/pkg/compiler/lib/src/io/source_map_builder.dart
+++ b/pkg/compiler/lib/src/io/source_map_builder.dart
@@ -4,10 +4,11 @@
library dart2js.source_map_builder;
+import 'package:kernel/ast.dart' show Location;
import '../../compiler_new.dart' show OutputSink, OutputType;
import '../util/uri_extras.dart' show relativize;
import '../util/util.dart';
-import 'line_column_provider.dart';
+import 'location_provider.dart';
import 'code_output.dart' show SourceLocationsProvider, SourceLocations;
import 'source_information.dart' show SourceLocation;
@@ -20,11 +21,11 @@ class SourceMapBuilder {
/// The URI of the target language file.
final Uri targetFileUri;
- final LineColumnProvider lineColumnProvider;
+ final LocationProvider locationProvider;
final List<SourceMapEntry> entries = new List<SourceMapEntry>();
SourceMapBuilder(this.version, this.sourceMapUri, this.targetFileUri,
- this.lineColumnProvider);
+ this.locationProvider);
void addMapping(int targetOffset, SourceLocation sourceLocation) {
entries.add(new SourceMapEntry(sourceLocation, targetOffset));
@@ -49,9 +50,10 @@ class SourceMapBuilder {
Map<Uri, LineColumnMap<SourceMapEntry>> sourceLocationMap =
<Uri, LineColumnMap<SourceMapEntry>>{};
entries.forEach((SourceMapEntry sourceMapEntry) {
- int line = lineColumnProvider.getLine(sourceMapEntry.targetOffset);
- int column =
- lineColumnProvider.getColumn(line, sourceMapEntry.targetOffset);
+ Location kernelLocation =
+ locationProvider.getLocation(sourceMapEntry.targetOffset);
+ int line = kernelLocation.line - 1;
+ int column = kernelLocation.column - 1;
lineColumnMap.add(line, column, sourceMapEntry);
SourceLocation location = sourceMapEntry.sourceLocation;
@@ -182,13 +184,13 @@ class SourceMapBuilder {
}
/// Generates source map files for all [SourceLocations] in
- /// [sourceLocationsProvider] for the .js code in [lineColumnProvider]
+ /// [sourceLocationsProvider] for the .js code in [locationProvider]
/// [sourceMapUri] is used to relativizes the URIs of the referenced source
/// files and the target [fileUri]. [name] and [outputProvider] are used to
/// create the [OutputSink] for the source map text.
static void outputSourceMap(
SourceLocationsProvider sourceLocationsProvider,
- LineColumnProvider lineColumnProvider,
+ LocationProvider locationProvider,
String name,
Uri sourceMapUri,
Uri fileUri,
@@ -200,7 +202,7 @@ class SourceMapBuilder {
sourceLocationsProvider.sourceLocations
.forEach((SourceLocations sourceLocations) {
SourceMapBuilder sourceMapBuilder = new SourceMapBuilder(
- sourceLocations.name, sourceMapUri, fileUri, lineColumnProvider);
+ sourceLocations.name, sourceMapUri, fileUri, locationProvider);
sourceLocations.forEachSourceLocation(sourceMapBuilder.addMapping);
String sourceMap = sourceMapBuilder.build();
String extension = 'js.map';

Powered by Google App Engine
This is Rietveld 408576698