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

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

Issue 2936233003: Remove Compiler.mainApp and Compiler.mainFunction (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « pkg/compiler/lib/src/kernel/task.dart ('k') | pkg/compiler/tool/perf.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 29 matching lines...) Expand all
40 import '../universe/call_structure.dart'; 40 import '../universe/call_structure.dart';
41 import '../universe/use.dart'; 41 import '../universe/use.dart';
42 import '../universe/world_builder.dart'; 42 import '../universe/world_builder.dart';
43 import '../universe/world_impact.dart'; 43 import '../universe/world_impact.dart';
44 import 'no_such_method_resolver.dart'; 44 import 'no_such_method_resolver.dart';
45 45
46 /// [FrontendStrategy] that loads '.dart' files and creates a resolved element 46 /// [FrontendStrategy] that loads '.dart' files and creates a resolved element
47 /// model using the resolver. 47 /// model using the resolver.
48 class ResolutionFrontEndStrategy implements FrontendStrategy { 48 class ResolutionFrontEndStrategy implements FrontendStrategy {
49 final Compiler _compiler; 49 final Compiler _compiler;
50 final ElementEnvironment elementEnvironment; 50 final _CompilerElementEnvironment _elementEnvironment;
51 final CommonElements commonElements; 51 final CommonElements commonElements;
52 52
53 AnnotationProcessor _annotationProcessor; 53 AnnotationProcessor _annotationProcessor;
54 54
55 factory ResolutionFrontEndStrategy(Compiler compiler) { 55 factory ResolutionFrontEndStrategy(Compiler compiler) {
56 ElementEnvironment elementEnvironment = 56 ElementEnvironment elementEnvironment =
57 new _CompilerElementEnvironment(compiler); 57 new _CompilerElementEnvironment(compiler);
58 CommonElements commonElements = new CommonElements(elementEnvironment); 58 CommonElements commonElements = new CommonElements(elementEnvironment);
59 return new ResolutionFrontEndStrategy.internal( 59 return new ResolutionFrontEndStrategy.internal(
60 compiler, elementEnvironment, commonElements); 60 compiler, elementEnvironment, commonElements);
61 } 61 }
62 62
63 ResolutionFrontEndStrategy.internal( 63 ResolutionFrontEndStrategy.internal(
64 this._compiler, this.elementEnvironment, this.commonElements); 64 this._compiler, this._elementEnvironment, this.commonElements);
65
66 ElementEnvironment get elementEnvironment => _elementEnvironment;
65 67
66 DartTypes get dartTypes => _compiler.types; 68 DartTypes get dartTypes => _compiler.types;
67 69
68 LibraryLoaderTask createLibraryLoader( 70 LibraryLoaderTask createLibraryLoader(
69 ResolvedUriTranslator uriTranslator, 71 ResolvedUriTranslator uriTranslator,
70 ScriptLoader scriptLoader, 72 ScriptLoader scriptLoader,
71 ElementScanner scriptScanner, 73 ElementScanner scriptScanner,
72 LibraryDeserializer deserializer, 74 LibraryDeserializer deserializer,
73 PatchResolverFunction patchResolverFunc, 75 PatchResolverFunction patchResolverFunc,
74 PatchParserTask patchParser, 76 PatchParserTask patchParser,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 136
135 WorkItemBuilder createResolutionWorkItemBuilder( 137 WorkItemBuilder createResolutionWorkItemBuilder(
136 NativeBasicData nativeBasicData, 138 NativeBasicData nativeBasicData,
137 NativeDataBuilder nativeDataBuilder, 139 NativeDataBuilder nativeDataBuilder,
138 ImpactTransformer impactTransformer) { 140 ImpactTransformer impactTransformer) {
139 return new ResolutionWorkItemBuilder(_compiler.resolution); 141 return new ResolutionWorkItemBuilder(_compiler.resolution);
140 } 142 }
141 143
142 FunctionEntity computeMain( 144 FunctionEntity computeMain(
143 LibraryElement mainApp, WorldImpactBuilder impactBuilder) { 145 LibraryElement mainApp, WorldImpactBuilder impactBuilder) {
146 _elementEnvironment._mainLibrary = mainApp;
144 if (mainApp == null) return null; 147 if (mainApp == null) return null;
145 MethodElement mainFunction; 148 MethodElement mainFunction;
146 Element main = mainApp.findExported(Identifiers.main); 149 Element main = mainApp.findExported(Identifiers.main);
147 ErroneousElement errorElement = null; 150 ErroneousElement errorElement = null;
148 if (main == null) { 151 if (main == null) {
149 if (_compiler.options.analyzeOnly) { 152 if (_compiler.options.analyzeOnly) {
150 if (!_compiler.analyzeAll) { 153 if (!_compiler.analyzeAll) {
151 errorElement = new ErroneousElementX(MessageKind.CONSIDER_ANALYZE_ALL, 154 errorElement = new ErroneousElementX(MessageKind.CONSIDER_ANALYZE_ALL,
152 {'main': Identifiers.main}, Identifiers.main, mainApp); 155 {'main': Identifiers.main}, Identifiers.main, mainApp);
153 } 156 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 errorElement.isSynthesized && 207 errorElement.isSynthesized &&
205 !mainApp.isSynthesized) { 208 !mainApp.isSynthesized) {
206 _compiler.reporter.reportWarningMessage(errorElement, 209 _compiler.reporter.reportWarningMessage(errorElement,
207 errorElement.messageKind, errorElement.messageArguments); 210 errorElement.messageKind, errorElement.messageArguments);
208 } 211 }
209 MethodElement mainMethod; 212 MethodElement mainMethod;
210 if (mainFunction != null && !mainFunction.isMalformed) { 213 if (mainFunction != null && !mainFunction.isMalformed) {
211 mainFunction.computeType(_compiler.resolution); 214 mainFunction.computeType(_compiler.resolution);
212 mainMethod = mainFunction; 215 mainMethod = mainFunction;
213 } 216 }
217 _elementEnvironment._mainFunction = mainMethod;
214 return mainMethod; 218 return mainMethod;
215 } 219 }
216 220
217 SourceSpan spanFromToken(Element currentElement, Token token) => 221 SourceSpan spanFromToken(Element currentElement, Token token) =>
218 _spanFromTokens(currentElement, token, token); 222 _spanFromTokens(currentElement, token, token);
219 223
220 SourceSpan _spanFromTokens(Element currentElement, Token begin, Token end, 224 SourceSpan _spanFromTokens(Element currentElement, Token begin, Token end,
221 [Uri uri]) { 225 [Uri uri]) {
222 if (begin == null || end == null) { 226 if (begin == null || end == null) {
223 // TODO(ahe): We can almost always do better. Often it is only 227 // TODO(ahe): We can almost always do better. Often it is only
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 return node.sourcePosition; 367 return node.sourcePosition;
364 } 368 }
365 return null; 369 return null;
366 } 370 }
367 } 371 }
368 372
369 /// An element environment base on a [Compiler]. 373 /// An element environment base on a [Compiler].
370 class _CompilerElementEnvironment implements ElementEnvironment { 374 class _CompilerElementEnvironment implements ElementEnvironment {
371 final Compiler _compiler; 375 final Compiler _compiler;
372 376
377 LibraryEntity _mainLibrary;
378 FunctionEntity _mainFunction;
379
373 _CompilerElementEnvironment(this._compiler); 380 _CompilerElementEnvironment(this._compiler);
374 381
375 LibraryProvider get _libraryProvider => _compiler.libraryLoader; 382 LibraryProvider get _libraryProvider => _compiler.libraryLoader;
376 Resolution get _resolution => _compiler.resolution; 383 Resolution get _resolution => _compiler.resolution;
377 384
378 ResolutionDynamicType get dynamicType => const ResolutionDynamicType(); 385 ResolutionDynamicType get dynamicType => const ResolutionDynamicType();
379 386
380 @override 387 @override
381 LibraryEntity get mainLibrary => _compiler.mainApp; 388 LibraryEntity get mainLibrary => _mainLibrary;
382 389
383 @override 390 @override
384 FunctionEntity get mainFunction => _compiler.mainFunction; 391 FunctionEntity get mainFunction => _mainFunction;
385 392
386 @override 393 @override
387 Iterable<LibraryEntity> get libraries => _compiler.libraryLoader.libraries; 394 Iterable<LibraryEntity> get libraries => _compiler.libraryLoader.libraries;
388 395
389 @override 396 @override
390 String getLibraryName(LibraryElement library) => library.libraryName; 397 String getLibraryName(LibraryElement library) => library.libraryName;
391 398
392 @override 399 @override
393 ResolutionInterfaceType getThisType(ClassElement cls) { 400 ResolutionInterfaceType getThisType(ClassElement cls) {
394 cls.ensureResolved(_resolution); 401 cls.ensureResolved(_resolution);
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 @override 864 @override
858 WorkItem createWorkItem(MemberElement element) { 865 WorkItem createWorkItem(MemberElement element) {
859 assert(element.isDeclaration, failedAt(element)); 866 assert(element.isDeclaration, failedAt(element));
860 if (element.isMalformed) return null; 867 if (element.isMalformed) return null;
861 868
862 assert(element is AnalyzableElement, 869 assert(element is AnalyzableElement,
863 failedAt(element, 'Element $element is not analyzable.')); 870 failedAt(element, 'Element $element is not analyzable.'));
864 return _resolution.createWorkItem(element); 871 return _resolution.createWorkItem(element);
865 } 872 }
866 } 873 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/task.dart ('k') | pkg/compiler/tool/perf.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698