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

Side by Side Diff: pkg/compiler/lib/src/io/source_information.dart

Issue 1617083002: Base JavaScript code position computation on JavaScript tracer. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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_information; 5 library dart2js.source_information;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../elements/elements.dart' show 8 import '../elements/elements.dart' show
9 AstElement, 9 AstElement,
10 LocalElement; 10 LocalElement;
11 import '../tree/tree.dart' show 11 import '../tree/tree.dart' show
12 Node, 12 Node,
13 Send; 13 Send;
14 import '../js/js.dart' show 14 import '../js/js.dart' show
15 JavaScriptNodeSourceInformation; 15 JavaScriptNodeSourceInformation;
16 import 'source_file.dart'; 16 import 'source_file.dart';
17 17
18 bool useNewSourceInfo = 18 bool useNewSourceInfo =
19 const bool.fromEnvironment('USE_NEW_SOURCE_INFO', defaultValue: false); 19 const bool.fromEnvironment('USE_NEW_SOURCE_INFO', defaultValue: false);
20 20
21 /// Interface for passing source information, for instance for use in source 21 /// Interface for passing source information, for instance for use in source
22 /// maps, through the backend. 22 /// maps, through the backend.
23 abstract class SourceInformation extends JavaScriptNodeSourceInformation { 23 abstract class SourceInformation extends JavaScriptNodeSourceInformation {
24 const SourceInformation();
25
24 SourceSpan get sourceSpan; 26 SourceSpan get sourceSpan;
25 27
26 /// The source location associated with the start of the JS node. 28 /// The source location associated with the start of the JS node.
27 SourceLocation get startPosition => null; 29 SourceLocation get startPosition => null;
28 30
29 /// The source location associated with the closing of the JS node. 31 /// The source location associated with the closing of the JS node.
30 SourceLocation get closingPosition => null; 32 SourceLocation get closingPosition => null;
31 33
32 /// The source location associated with the end of the JS node. 34 /// The source location associated with the end of the JS node.
33 SourceLocation get endPosition => null; 35 SourceLocation get endPosition => null;
34 36
35 /// All source locations associated with this source information. 37 /// All source locations associated with this source information.
36 List<SourceLocation> get sourceLocations; 38 List<SourceLocation> get sourceLocations;
37 39
38 /// Return a short textual representation of the source location. 40 /// Return a short textual representation of the source location.
39 String get shortText; 41 String get shortText;
40 } 42 }
41 43
42 /// Strategy for creating, processing and applying [SourceInformation]. 44 /// Strategy for creating, processing and applying [SourceInformation].
43 class SourceInformationStrategy { 45 class SourceInformationStrategy {
44 const SourceInformationStrategy(); 46 const SourceInformationStrategy();
45 47
46 /// Create a [SourceInformationBuilder] for [element]. 48 /// Create a [SourceInformationBuilder] for [element].
47 SourceInformationBuilder createBuilderForContext(AstElement element) { 49 SourceInformationBuilder createBuilderForContext(AstElement element) {
48 return const SourceInformationBuilder(); 50 return const SourceInformationBuilder();
49 } 51 }
52
53 /// Generate [SourceInformation] marker for non-preamble code.
54 SourceInformation buildSourceMappedMarker() => null;
55
56 /// Called when compilation has completed.
57 void onComplete() {}
50 } 58 }
51 59
52 /// Interface for generating [SourceInformation]. 60 /// Interface for generating [SourceInformation].
53 class SourceInformationBuilder { 61 class SourceInformationBuilder {
54 const SourceInformationBuilder(); 62 const SourceInformationBuilder();
55 63
56 /// Create a [SourceInformationBuilder] for [element]. 64 /// Create a [SourceInformationBuilder] for [element].
57 SourceInformationBuilder forContext(AstElement element) => this; 65 SourceInformationBuilder forContext(AstElement element) => this;
58 66
59 /// Generate [SourceInformation] the declaration of [element]. 67 /// Generate [SourceInformation] the declaration of [element].
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 return '${computeElementNameForSourceMaps(local.executableContext)}.$name'; 198 return '${computeElementNameForSourceMaps(local.executableContext)}.$name';
191 } else if (element.enclosingClass != null) { 199 } else if (element.enclosingClass != null) {
192 if (element.enclosingClass.isClosure) { 200 if (element.enclosingClass.isClosure) {
193 return computeElementNameForSourceMaps(element.enclosingClass); 201 return computeElementNameForSourceMaps(element.enclosingClass);
194 } 202 }
195 return '${element.enclosingClass.name}.${element.name}'; 203 return '${element.enclosingClass.name}.${element.name}';
196 } else { 204 } else {
197 return element.name; 205 return element.name;
198 } 206 }
199 } 207 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/io/position_information.dart ('k') | pkg/compiler/lib/src/io/start_end_information.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698