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

Side by Side Diff: pkg/compiler/lib/src/resolution/resolution_strategy.dart

Issue 2974663002: Compute source spans for IR nodes and J/K-elements (Closed)
Patch Set: Updated cf. comments Created 3 years, 5 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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.resolution_strategy; 5 library dart2js.resolution_strategy;
6 6
7 import 'package:front_end/src/fasta/scanner.dart' show Token; 7 import 'package:front_end/src/fasta/scanner.dart' show Token;
8 8
9 import '../common.dart'; 9 import '../common.dart';
10 import '../common_elements.dart'; 10 import '../common_elements.dart';
(...skipping 28 matching lines...) Expand all
39 import '../patch_parser.dart'; 39 import '../patch_parser.dart';
40 import '../resolved_uri_translator.dart'; 40 import '../resolved_uri_translator.dart';
41 import '../universe/call_structure.dart'; 41 import '../universe/call_structure.dart';
42 import '../universe/use.dart'; 42 import '../universe/use.dart';
43 import '../universe/world_builder.dart'; 43 import '../universe/world_builder.dart';
44 import '../universe/world_impact.dart'; 44 import '../universe/world_impact.dart';
45 import 'no_such_method_resolver.dart'; 45 import 'no_such_method_resolver.dart';
46 46
47 /// [FrontendStrategy] that loads '.dart' files and creates a resolved element 47 /// [FrontendStrategy] that loads '.dart' files and creates a resolved element
48 /// model using the resolver. 48 /// model using the resolver.
49 class ResolutionFrontEndStrategy extends FrontendStrategyBase { 49 class ResolutionFrontEndStrategy extends FrontendStrategyBase
50 with ComputeSpannableMixin {
50 final Compiler _compiler; 51 final Compiler _compiler;
51 final _CompilerElementEnvironment _elementEnvironment; 52 final _CompilerElementEnvironment _elementEnvironment;
52 final CommonElements commonElements; 53 final CommonElements commonElements;
53 54
54 AnnotationProcessor _annotationProcessor; 55 AnnotationProcessor _annotationProcessor;
55 56
56 factory ResolutionFrontEndStrategy(Compiler compiler) { 57 factory ResolutionFrontEndStrategy(Compiler compiler) {
57 ElementEnvironment elementEnvironment = 58 ElementEnvironment elementEnvironment =
58 new _CompilerElementEnvironment(compiler); 59 new _CompilerElementEnvironment(compiler);
59 CommonElements commonElements = new CommonElements(elementEnvironment); 60 CommonElements commonElements = new CommonElements(elementEnvironment);
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 errorElement.messageKind, errorElement.messageArguments); 216 errorElement.messageKind, errorElement.messageArguments);
216 } 217 }
217 MethodElement mainMethod; 218 MethodElement mainMethod;
218 if (mainFunction != null && !mainFunction.isMalformed) { 219 if (mainFunction != null && !mainFunction.isMalformed) {
219 mainFunction.computeType(_compiler.resolution); 220 mainFunction.computeType(_compiler.resolution);
220 mainMethod = mainFunction; 221 mainMethod = mainFunction;
221 } 222 }
222 _elementEnvironment._mainFunction = mainMethod; 223 _elementEnvironment._mainFunction = mainMethod;
223 return mainMethod; 224 return mainMethod;
224 } 225 }
226 }
225 227
228 class ComputeSpannableMixin {
226 SourceSpan spanFromToken(Element currentElement, Token token) => 229 SourceSpan spanFromToken(Element currentElement, Token token) =>
227 _spanFromTokens(currentElement, token, token); 230 _spanFromTokens(currentElement, token, token);
228 231
229 SourceSpan _spanFromTokens(Element currentElement, Token begin, Token end, 232 SourceSpan _spanFromTokens(Element currentElement, Token begin, Token end,
230 [Uri uri]) { 233 [Uri uri]) {
231 if (begin == null || end == null) { 234 if (begin == null || end == null) {
232 // TODO(ahe): We can almost always do better. Often it is only 235 // TODO(ahe): We can almost always do better. Often it is only
233 // end that is null. Otherwise, we probably know the current 236 // end that is null. Otherwise, we probably know the current
234 // URI. 237 // URI.
235 throw 'Cannot find tokens to produce error message.'; 238 throw 'Cannot find tokens to produce error message.';
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 @override 875 @override
873 WorkItem createWorkItem(MemberElement element) { 876 WorkItem createWorkItem(MemberElement element) {
874 assert(element.isDeclaration, failedAt(element)); 877 assert(element.isDeclaration, failedAt(element));
875 if (element.isMalformed) return null; 878 if (element.isMalformed) return null;
876 879
877 assert(element is AnalyzableElement, 880 assert(element is AnalyzableElement,
878 failedAt(element, 'Element $element is not analyzable.')); 881 failedAt(element, 'Element $element is not analyzable.'));
879 return _resolution.createWorkItem(element); 882 return _resolution.createWorkItem(element);
880 } 883 }
881 } 884 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/kernel_strategy.dart ('k') | pkg/compiler/lib/src/types/type_mask.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698