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

Side by Side Diff: pkg/front_end/lib/src/fasta/compile_platform_dartk.dart

Issue 2723113002: Consolidate analyzer dependencies. (Closed)
Patch Set: Remove new dependency on AsyncMarker. Created 3 years, 9 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
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5 library fasta.compile_platform;
6
7 import 'dart:async' show Future;
8
9 import 'dart:io' show File, IOSink;
10
11 import 'package:analyzer/src/generated/source.dart' show Source;
12
13 import 'package:analyzer/dart/element/element.dart'
14 show ExportElement, LibraryElement;
15
16 import 'package:kernel/ast.dart'
17 show Field, Library, Name, Program, StringLiteral;
18
19 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter;
20
21 import 'package:kernel/analyzer/loader.dart'
22 show DartLoader, DartOptions, createDartSdk;
23
24 import 'package:kernel/target/targets.dart' show Target, TargetFlags, getTarget;
25
26 import 'package:kernel/ast.dart' show Program;
27
28 import 'environment_variable.dart'
29 show EnvironmentVariableDirectory, fileExists;
30
31 import 'errors.dart' show inputError;
32
33 const EnvironmentVariableSdk dartAotSdk = const EnvironmentVariableSdk(
34 "DART_AOT_SDK",
35 "The environment variable 'DART_AOT_SDK' should point to a patched SDK.");
36
37 class EnvironmentVariableSdk extends EnvironmentVariableDirectory {
38 const EnvironmentVariableSdk(String name, String what) : super(name, what);
39
40 Future<Null> validate(String value) async {
41 Uri sdk = Uri.base.resolveUri(new Uri.directory(value));
42 const String asyncDart = "lib/async/async.dart";
43 if (!await fileExists(sdk, asyncDart)) {
44 inputError(
45 null,
46 null,
47 "The environment variable '$name' has the value '$value', "
48 "that's a directory that doesn't contain '$asyncDart'. $what");
49 }
50 const String asyncSources = "lib/async/async_sources.gypi";
51 if (await fileExists(sdk, asyncSources)) {
52 inputError(
53 null,
54 null,
55 "The environment variable '$name' has the value '$value', "
56 "that's a directory that contains '$asyncSources', so it isn't a "
57 "patched SDK. $what");
58 }
59 return null;
60 }
61 }
62
63 main(List<String> arguments) async {
64 Uri output = Uri.base.resolveUri(new Uri.file(arguments.single));
65 DartOptions options = new DartOptions(
66 strongMode: false, sdk: await dartAotSdk.value, packagePath: null);
67 Program program = new Program();
68 DartLoader loader = new DartLoader(program, options, null,
69 ignoreRedirectingFactories: false,
70 dartSdk: createDartSdk(options.sdk, strongMode: options.strongMode));
71 Target target =
72 getTarget("vm", new TargetFlags(strongMode: options.strongMode));
73 loader.loadProgram(Uri.base.resolve("pkg/fasta/test/platform.dart"),
74 target: target);
75 if (loader.errors.isNotEmpty) {
76 inputError(null, null, loader.errors.join("\n"));
77 }
78 Library mainLibrary = program.mainMethod.enclosingLibrary;
79 program.uriToSource.remove(mainLibrary.fileUri);
80 program = new Program(
81 program.libraries
82 .where((Library l) => l.importUri.scheme == "dart")
83 .toList(),
84 program.uriToSource);
85 target.performModularTransformations(program);
86 target.performGlobalTransformations(program);
87 for (LibraryElement analyzerLibrary in loader.libraryElements) {
88 Library library = loader.getLibraryReference(analyzerLibrary);
89 StringBuffer sb = new StringBuffer();
90 if (analyzerLibrary.exports.isNotEmpty) {
91 Source source;
92 int offset;
93 for (ExportElement export in analyzerLibrary.exports) {
94 source ??= export.source;
95 offset ??= export.nameOffset;
96 Uri uri = export.exportedLibrary.source.uri;
97 sb.write("export '");
98 sb.write(uri);
99 sb.write("'");
100 if (export.combinators.isNotEmpty) {
101 sb.write(" ");
102 sb.writeAll(export.combinators, " ");
103 }
104 sb.write(";");
105 }
106 Name exports = new Name("_exports#", library);
107 StringLiteral literal = new StringLiteral("$sb")..fileOffset = offset;
108 library.addMember(new Field(exports,
109 isStatic: true,
110 isConst: true,
111 initializer: literal,
112 fileUri: "${new Uri.file(source.fullName)}")..fileOffset = offset);
113 }
114 }
115
116 IOSink sink = new File.fromUri(output).openWrite();
117 new BinaryPrinter(sink).writeProgramFile(program);
118 await sink.close();
119 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/compile_platform.dart ('k') | pkg/front_end/lib/src/fasta/dill/dill_loader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698