OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library dart2js.source_map_builder; | 5 library dart2js.source_map_builder; |
6 | 6 |
7 import 'package:kernel/ast.dart' show Location; | 7 import 'package:kernel/ast.dart' show Location; |
8 import '../../compiler_new.dart' show OutputSink, OutputType; | 8 import '../../compiler_new.dart' show OutputSink, OutputType; |
9 import '../util/uri_extras.dart' show relativize; | 9 import '../util/uri_extras.dart' show relativize; |
10 import '../util/util.dart'; | 10 import '../util/util.dart'; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 int column = kernelLocation.column - 1; | 56 int column = kernelLocation.column - 1; |
57 lineColumnMap.add(line, column, sourceMapEntry); | 57 lineColumnMap.add(line, column, sourceMapEntry); |
58 | 58 |
59 SourceLocation location = sourceMapEntry.sourceLocation; | 59 SourceLocation location = sourceMapEntry.sourceLocation; |
60 if (location != null) { | 60 if (location != null) { |
61 if (location.sourceUri != null) { | 61 if (location.sourceUri != null) { |
62 LineColumnMap<SourceMapEntry> sourceLineColumnMap = | 62 LineColumnMap<SourceMapEntry> sourceLineColumnMap = |
63 sourceLocationMap.putIfAbsent(location.sourceUri, | 63 sourceLocationMap.putIfAbsent(location.sourceUri, |
64 () => new LineColumnMap<SourceMapEntry>()); | 64 () => new LineColumnMap<SourceMapEntry>()); |
65 sourceLineColumnMap.add( | 65 sourceLineColumnMap.add( |
66 location.line, location.column, sourceMapEntry); | 66 location.line - 1, location.column - 1, sourceMapEntry); |
67 } | 67 } |
68 } | 68 } |
69 }); | 69 }); |
70 | 70 |
71 return _build(lineColumnMap); | 71 return _build(lineColumnMap); |
72 } | 72 } |
73 | 73 |
74 String _build(LineColumnMap<SourceMapEntry> lineColumnMap) { | 74 String _build(LineColumnMap<SourceMapEntry> lineColumnMap) { |
75 IndexMap<Uri> uriMap = new IndexMap<Uri>(); | 75 IndexMap<Uri> uriMap = new IndexMap<Uri>(); |
76 IndexMap<String> nameMap = new IndexMap<String>(); | 76 IndexMap<String> nameMap = new IndexMap<String>(); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 | 150 |
151 targetColumnEncoder.encode(output, targetColumn); | 151 targetColumnEncoder.encode(output, targetColumn); |
152 | 152 |
153 if (sourceLocation == null) { | 153 if (sourceLocation == null) { |
154 return; | 154 return; |
155 } | 155 } |
156 | 156 |
157 Uri sourceUri = sourceLocation.sourceUri; | 157 Uri sourceUri = sourceLocation.sourceUri; |
158 if (sourceUri != null) { | 158 if (sourceUri != null) { |
159 sourceUriIndexEncoder.encode(output, uriMap[sourceUri]); | 159 sourceUriIndexEncoder.encode(output, uriMap[sourceUri]); |
160 sourceLineEncoder.encode(output, sourceLocation.line); | 160 sourceLineEncoder.encode(output, sourceLocation.line - 1); |
161 sourceColumnEncoder.encode(output, sourceLocation.column); | 161 sourceColumnEncoder.encode(output, sourceLocation.column - 1); |
162 } | 162 } |
163 | 163 |
164 String sourceName = sourceLocation.sourceName; | 164 String sourceName = sourceLocation.sourceName; |
165 if (sourceName != null) { | 165 if (sourceName != null) { |
166 sourceNameIndexEncoder.encode(output, nameMap[sourceName]); | 166 sourceNameIndexEncoder.encode(output, nameMap[sourceName]); |
167 } | 167 } |
168 | 168 |
169 previousSourceLocation = sourceLocation; | 169 previousSourceLocation = sourceLocation; |
170 }); | 170 }); |
171 } | 171 } |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 int register(T element) { | 356 int register(T element) { |
357 return map.putIfAbsent(element, () => map.length); | 357 return map.putIfAbsent(element, () => map.length); |
358 } | 358 } |
359 | 359 |
360 /// Returns the index of [element]. | 360 /// Returns the index of [element]. |
361 int operator [](T element) => map[element]; | 361 int operator [](T element) => map[element]; |
362 | 362 |
363 /// Returns the indexed elements. | 363 /// Returns the indexed elements. |
364 Iterable<T> get elements => map.keys; | 364 Iterable<T> get elements => map.keys; |
365 } | 365 } |
OLD | NEW |