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

Unified Diff: lib/src/checker/resolver.dart

Issue 1130093007: Create html if needed in server mode (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 5 years, 7 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
« no previous file with comments | « lib/devc.dart ('k') | lib/src/in_memory.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/checker/resolver.dart
diff --git a/lib/src/checker/resolver.dart b/lib/src/checker/resolver.dart
index 5275105e8bc2c355efc784f63bd31ffe093779dd..6af5659330ab0f5c3a426b0e02c02fb852c5da20 100644
--- a/lib/src/checker/resolver.dart
+++ b/lib/src/checker/resolver.dart
@@ -21,7 +21,9 @@ import 'package:analyzer/src/generated/static_type_analyzer.dart';
import 'package:analyzer/src/generated/utilities_collection.dart'
show DirectedGraph;
import 'package:logging/logging.dart' as logger;
+import 'package:path/path.dart' as path;
+import 'package:dev_compiler/src/in_memory.dart';
import 'package:dev_compiler/src/options.dart';
import 'package:dev_compiler/src/report.dart';
import 'package:dev_compiler/src/utils.dart';
@@ -30,6 +32,14 @@ import 'multi_package_resolver.dart';
final _log = new logger.Logger('dev_compiler.src.resolver');
+String _implicitEntryHtml(String src) => '''
+<html>
+ <body>
+ <script type="application/dart" src="$src"></script>
+ </body>
+</html>
+''';
+
/// Encapsulates a resolver from the analyzer package.
class TypeResolver {
final InternalAnalysisContext context;
@@ -39,7 +49,9 @@ class TypeResolver {
TypeResolver(DartUriResolver sdkResolver, ResolverOptions options,
{List otherResolvers})
: context = _initContext(options) {
- var resolvers = [sdkResolver];
+ var resolvers = options.useImplicitHtml
+ ? [_createImplicitEntryResolver(options), sdkResolver]
+ : [sdkResolver];
if (otherResolvers == null) {
resolvers.add(new FileUriResolver());
resolvers.add(options.useMultiPackage
@@ -54,18 +66,25 @@ class TypeResolver {
/// Creates a [TypeResolver] that uses a mock 'dart:' library contents.
TypeResolver.fromMock(
Map<String, String> mockSources, ResolverOptions options,
- {List otherResolvers})
+ {UriResolver entryResolver, List otherResolvers})
: this(
new MockDartSdk(mockSources, reportMissing: true).resolver, options,
otherResolvers: otherResolvers);
/// Creates a [TypeResolver] that uses the SDK at the given [sdkPath].
TypeResolver.fromDir(String sdkPath, ResolverOptions options,
- {List otherResolvers})
+ {UriResolver entryResolver, List otherResolvers})
: this(
new DartUriResolver(new DirectoryBasedDartSdk(new JavaFile(sdkPath))),
options, otherResolvers: otherResolvers);
+ UriResolver _createImplicitEntryResolver(ResolverOptions options) {
+ var entry = path.absolute(ResolverOptions.implicitHtmlFile);
+ var src = path.absolute(options.entryPointFile);
+ var index = <String, String>{'$entry': _implicitEntryHtml(src)};
+ return new InMemoryUriResolver(index, representNonExistingFiles: false);
+ }
+
/// Find the corresponding [Source] for [uri].
Source findSource(Uri uri) {
var source = _sources[uri];
« no previous file with comments | « lib/devc.dart ('k') | lib/src/in_memory.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698