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

Side by Side Diff: pkg/compiler/lib/src/apiimpl.dart

Issue 1235563003: Add interfaces for a new compiler API. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Rebased Created 5 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
« no previous file with comments | « pkg/compiler/lib/compiler_new.dart ('k') | pkg/compiler/lib/src/compiler.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) 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 leg_apiimpl; 5 library leg_apiimpl;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 9
10 import '../compiler.dart' as api; 10 import '../compiler_new.dart' as api;
11 import 'dart2jslib.dart' as leg; 11 import 'dart2jslib.dart' as leg;
12 import 'tree/tree.dart' as tree; 12 import 'tree/tree.dart' as tree;
13 import 'elements/elements.dart' as elements; 13 import 'elements/elements.dart' as elements;
14 import 'package:sdk_library_metadata/libraries.dart' hide LIBRARIES; 14 import 'package:sdk_library_metadata/libraries.dart' hide LIBRARIES;
15 import 'package:sdk_library_metadata/libraries.dart' as library_info show LIBRAR IES; 15 import 'package:sdk_library_metadata/libraries.dart' as library_info show LIBRAR IES;
16 import 'io/source_file.dart'; 16 import 'io/source_file.dart';
17 import 'package:package_config/packages.dart'; 17 import 'package:package_config/packages.dart';
18 import 'package:package_config/packages_file.dart' as pkgs; 18 import 'package:package_config/packages_file.dart' as pkgs;
19 import 'package:package_config/src/packages_impl.dart' 19 import 'package:package_config/src/packages_impl.dart'
20 show NonFilePackagesDirectoryPackages, MapPackages; 20 show NonFilePackagesDirectoryPackages, MapPackages;
21 import 'package:package_config/src/util.dart' show checkValidPackageUri; 21 import 'package:package_config/src/util.dart' show checkValidPackageUri;
22 22
23 const bool forceIncrementalSupport = 23 const bool forceIncrementalSupport =
24 const bool.fromEnvironment('DART2JS_EXPERIMENTAL_INCREMENTAL_SUPPORT'); 24 const bool.fromEnvironment('DART2JS_EXPERIMENTAL_INCREMENTAL_SUPPORT');
25 25
26 class Compiler extends leg.Compiler { 26 class Compiler extends leg.Compiler {
27 api.CompilerInputProvider provider; 27 api.CompilerInput provider;
28 api.DiagnosticHandler handler; 28 api.CompilerDiagnostics handler;
29 final Uri libraryRoot; 29 final Uri libraryRoot;
30 final Uri packageConfig; 30 final Uri packageConfig;
31 final Uri packageRoot; 31 final Uri packageRoot;
32 final api.PackagesDiscoveryProvider packagesDiscoveryProvider; 32 final api.PackagesDiscoveryProvider packagesDiscoveryProvider;
33 Packages packages; 33 Packages packages;
34 List<String> options; 34 List<String> options;
35 Map<String, dynamic> environment; 35 Map<String, dynamic> environment;
36 bool mockableLibraryUsed = false; 36 bool mockableLibraryUsed = false;
37 final Set<String> allowedLibraryCategories; 37 final Set<String> allowedLibraryCategories;
38 38
39 leg.GenericTask userHandlerTask; 39 leg.GenericTask userHandlerTask;
40 leg.GenericTask userProviderTask; 40 leg.GenericTask userProviderTask;
41 leg.GenericTask userPackagesDiscoveryTask; 41 leg.GenericTask userPackagesDiscoveryTask;
42 42
43 Compiler(this.provider, 43 Compiler(this.provider,
44 api.CompilerOutputProvider outputProvider, 44 api.CompilerOutput outputProvider,
45 this.handler, 45 this.handler,
46 this.libraryRoot, 46 this.libraryRoot,
47 this.packageRoot, 47 this.packageRoot,
48 List<String> options, 48 List<String> options,
49 this.environment, 49 this.environment,
50 [this.packageConfig, 50 [this.packageConfig,
51 this.packagesDiscoveryProvider]) 51 this.packagesDiscoveryProvider])
52 : this.options = options, 52 : this.options = options,
53 this.allowedLibraryCategories = getAllowedLibraryCategories(options), 53 this.allowedLibraryCategories = getAllowedLibraryCategories(options),
54 super( 54 super(
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 String lookupPatchPath(String dartLibraryName) { 189 String lookupPatchPath(String dartLibraryName) {
190 LibraryInfo info = lookupLibraryInfo(dartLibraryName); 190 LibraryInfo info = lookupLibraryInfo(dartLibraryName);
191 if (info == null) return null; 191 if (info == null) return null;
192 if (!info.isDart2jsLibrary) return null; 192 if (!info.isDart2jsLibrary) return null;
193 String path = info.dart2jsPatchPath; 193 String path = info.dart2jsPatchPath;
194 if (path == null) return null; 194 if (path == null) return null;
195 return "lib/$path"; 195 return "lib/$path";
196 } 196 }
197 197
198 void log(message) { 198 void log(message) {
199 handler(null, null, null, message, api.Diagnostic.VERBOSE_INFO); 199 callUserHandler(null, null, null, message, api.Diagnostic.VERBOSE_INFO);
200 } 200 }
201 201
202 /// See [leg.Compiler.translateResolvedUri]. 202 /// See [leg.Compiler.translateResolvedUri].
203 Uri translateResolvedUri(elements.LibraryElement importingLibrary, 203 Uri translateResolvedUri(elements.LibraryElement importingLibrary,
204 Uri resolvedUri, tree.Node node) { 204 Uri resolvedUri, tree.Node node) {
205 if (resolvedUri.scheme == 'dart') { 205 if (resolvedUri.scheme == 'dart') {
206 return translateDartUri(importingLibrary, resolvedUri, node); 206 return translateDartUri(importingLibrary, resolvedUri, node);
207 } 207 }
208 return resolvedUri; 208 return resolvedUri;
209 } 209 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 return null; 366 return null;
367 }); 367 });
368 } 368 }
369 369
370 Future setupPackages(Uri uri) { 370 Future setupPackages(Uri uri) {
371 if (packageRoot != null) { 371 if (packageRoot != null) {
372 // Use "non-file" packages because the file version requires a [Directory] 372 // Use "non-file" packages because the file version requires a [Directory]
373 // and we can't depend on 'dart:io' classes. 373 // and we can't depend on 'dart:io' classes.
374 packages = new NonFilePackagesDirectoryPackages(packageRoot); 374 packages = new NonFilePackagesDirectoryPackages(packageRoot);
375 } else if (packageConfig != null) { 375 } else if (packageConfig != null) {
376 return provider(packageConfig).then((packageConfigContents) { 376 return callUserProvider(packageConfig).then((packageConfigContents) {
377 if (packageConfigContents is String) { 377 if (packageConfigContents is String) {
378 packageConfigContents = UTF8.encode(packageConfigContents); 378 packageConfigContents = UTF8.encode(packageConfigContents);
379 } 379 }
380 packages = 380 packages =
381 new MapPackages(pkgs.parse(packageConfigContents, packageConfig)); 381 new MapPackages(pkgs.parse(packageConfigContents, packageConfig));
382 }); 382 });
383 } else { 383 } else {
384 if (packagesDiscoveryProvider == null) { 384 if (packagesDiscoveryProvider == null) {
385 packages = Packages.noPackages; 385 packages = Packages.noPackages;
386 } else { 386 } else {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 435
436 bool get isMockCompilation { 436 bool get isMockCompilation {
437 return mockableLibraryUsed 437 return mockableLibraryUsed
438 && (options.indexOf('--allow-mock-compilation') != -1); 438 && (options.indexOf('--allow-mock-compilation') != -1);
439 } 439 }
440 440
441 void callUserHandler(Uri uri, int begin, int end, 441 void callUserHandler(Uri uri, int begin, int end,
442 String message, api.Diagnostic kind) { 442 String message, api.Diagnostic kind) {
443 try { 443 try {
444 userHandlerTask.measure(() { 444 userHandlerTask.measure(() {
445 handler(uri, begin, end, message, kind); 445 handler.report(uri, begin, end, message, kind);
446 }); 446 });
447 } catch (ex, s) { 447 } catch (ex, s) {
448 diagnoseCrashInUserCode( 448 diagnoseCrashInUserCode(
449 'Uncaught exception in diagnostic handler', ex, s); 449 'Uncaught exception in diagnostic handler', ex, s);
450 rethrow; 450 rethrow;
451 } 451 }
452 } 452 }
453 453
454 Future callUserProvider(Uri uri) { 454 Future callUserProvider(Uri uri) {
455 try { 455 try {
456 return userProviderTask.measure(() => provider(uri)); 456 return userProviderTask.measure(() => provider.readFromUri(uri));
457 } catch (ex, s) { 457 } catch (ex, s) {
458 diagnoseCrashInUserCode('Uncaught exception in input provider', ex, s); 458 diagnoseCrashInUserCode('Uncaught exception in input provider', ex, s);
459 rethrow; 459 rethrow;
460 } 460 }
461 } 461 }
462 462
463 Future<Packages> callUserPackagesDiscovery(Uri uri) { 463 Future<Packages> callUserPackagesDiscovery(Uri uri) {
464 try { 464 try {
465 return userPackagesDiscoveryTask.measure( 465 return userPackagesDiscoveryTask.measure(
466 () => packagesDiscoveryProvider(uri)); 466 () => packagesDiscoveryProvider(uri));
467 } catch (ex, s) { 467 } catch (ex, s) {
468 diagnoseCrashInUserCode('Uncaught exception in package discovery', ex, s); 468 diagnoseCrashInUserCode('Uncaught exception in package discovery', ex, s);
469 rethrow; 469 rethrow;
470 } 470 }
471 } 471 }
472 472
473 void diagnoseCrashInUserCode(String message, exception, stackTrace) { 473 void diagnoseCrashInUserCode(String message, exception, stackTrace) {
474 hasCrashed = true; 474 hasCrashed = true;
475 print('$message: ${tryToString(exception)}'); 475 print('$message: ${tryToString(exception)}');
476 print(tryToString(stackTrace)); 476 print(tryToString(stackTrace));
477 } 477 }
478 478
479 fromEnvironment(String name) => environment[name]; 479 fromEnvironment(String name) => environment[name];
480 480
481 LibraryInfo lookupLibraryInfo(String libraryName) { 481 LibraryInfo lookupLibraryInfo(String libraryName) {
482 return library_info.LIBRARIES[libraryName]; 482 return library_info.LIBRARIES[libraryName];
483 } 483 }
484 } 484 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/compiler_new.dart ('k') | pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698