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

Unified Diff: sdk/lib/_internal/compiler/implementation/mirrors/analyze.dart

Issue 119913002: Align source mirrors with runtime mirrors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments + small fix. Created 6 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 side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/mirrors/analyze.dart
diff --git a/sdk/lib/_internal/compiler/implementation/mirrors/analyze.dart b/sdk/lib/_internal/compiler/implementation/mirrors/analyze.dart
new file mode 100644
index 0000000000000000000000000000000000000000..c1231a871852d45ecd6261027ffad0db1697ef9c
--- /dev/null
+++ b/sdk/lib/_internal/compiler/implementation/mirrors/analyze.dart
@@ -0,0 +1,66 @@
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library dart2js.source_mirrors.analyze;
+
+import 'dart:async';
+
+import 'source_mirrors.dart';
+import 'dart2js_mirrors.dart' show Dart2JsMirrorSystem;
+import '../../compiler.dart' as api;
+import '../apiimpl.dart' as apiimpl;
+import '../dart2jslib.dart' show Compiler;
+
+//------------------------------------------------------------------------------
+// Analysis entry point.
+//------------------------------------------------------------------------------
+
+/**
+ * Analyzes set of libraries and provides a mirror system which can be used for
+ * static inspection of the source code.
+ */
+// TODO(johnniwinther): Move this to [compiler/compiler.dart].
+Future<MirrorSystem> analyze(List<Uri> libraries,
+ Uri libraryRoot,
+ Uri packageRoot,
+ api.CompilerInputProvider inputProvider,
+ api.DiagnosticHandler diagnosticHandler,
+ [List<String> options = const <String>[]]) {
+ if (!libraryRoot.path.endsWith("/")) {
+ throw new ArgumentError("libraryRoot must end with a /");
+ }
+ if (packageRoot != null && !packageRoot.path.endsWith("/")) {
+ throw new ArgumentError("packageRoot must end with a /");
+ }
+ options = new List<String>.from(options);
+ options.add('--analyze-only');
+ options.add('--analyze-signatures-only');
+ options.add('--analyze-all');
+ options.add('--categories=Client,Server');
+
+ bool compilationFailed = false;
+ void internalDiagnosticHandler(Uri uri, int begin, int end,
+ String message, api.Diagnostic kind) {
+ if (kind == api.Diagnostic.ERROR ||
+ kind == api.Diagnostic.CRASH) {
+ compilationFailed = true;
+ }
+ diagnosticHandler(uri, begin, end, message, kind);
+ }
+
+ Compiler compiler = new apiimpl.Compiler(inputProvider,
+ null,
+ internalDiagnosticHandler,
+ libraryRoot, packageRoot,
+ options,
+ const {});
+ compiler.librariesToAnalyzeWhenRun = libraries;
+ return compiler.run(null).then((bool success) {
+ if (success && !compilationFailed) {
+ return new Dart2JsMirrorSystem(compiler);
+ } else {
+ throw new StateError('Failed to create mirror system.');
+ }
+ });
+}

Powered by Google App Engine
This is Rietveld 408576698