Chromium Code Reviews| Index: pkg/compiler/lib/src/apiimpl.dart |
| diff --git a/pkg/compiler/lib/src/apiimpl.dart b/pkg/compiler/lib/src/apiimpl.dart |
| index a81aabc837a3e89c78c6acd9d4c75bee50c21a53..9b8923588e63029e9892dca6dd9c2594420cddf2 100644 |
| --- a/pkg/compiler/lib/src/apiimpl.dart |
| +++ b/pkg/compiler/lib/src/apiimpl.dart |
| @@ -78,7 +78,9 @@ class Compiler extends leg.Compiler { |
| forceIncrementalSupport || |
| hasOption(options, '--incremental-support'), |
| suppressWarnings: hasOption(options, '--suppress-warnings'), |
| - enableAsyncAwait: hasOption(options, '--enable-async')) { |
| + enableAsyncAwait: hasOption(options, '--enable-async'), |
| + allowNativeExtensions: |
| + hasOption(options, '--allow-native-extensions')) { |
| tasks.addAll([ |
| userHandlerTask = new leg.GenericTask('Diagnostic handler', this), |
| userProviderTask = new leg.GenericTask('Input provider', this), |
| @@ -89,9 +91,16 @@ class Compiler extends leg.Compiler { |
| if (packageRoot != null && !packageRoot.path.endsWith("/")) { |
| throw new ArgumentError("packageRoot must end with a /"); |
| } |
| - if (enableAsyncAwait && !analyzeOnly) { |
| - throw new ArgumentError( |
| - "--enable-async is currently only supported with --analyze-only"); |
| + if (!analyzeOnly) { |
| + if (enableAsyncAwait) { |
| + throw new ArgumentError( |
| + "--enable-async is currently only supported with --analyze-only"); |
| + } |
| + if (allowNativeExtensions) { |
| + throw new ArgumentError( |
| + "--allow-native-extensions is only supported with in combination " |
|
floitsch
2014/11/21 13:26:11
-with-
Johnni Winther
2014/11/21 13:51:15
Done.
|
| + "with --analyze-only"); |
| + } |
| } |
| } |
| @@ -194,12 +203,23 @@ class Compiler extends leg.Compiler { |
| } |
| Uri resourceUri = translateUri(node, readableUri); |
| + String resourceUriString = resourceUri.toString(); |
| + if (resourceUri.scheme == 'dart-ext') { |
| + if (!allowNativeExtensions) { |
| + withCurrentElement(element, () { |
| + reportError(node, leg.MessageKind.DART_EXT_NOT_SUPPORTED); |
| + }); |
| + } |
| + return new Future.value(new leg.Script(readableUri, resourceUri, |
| + new StringSourceFile(resourceUriString, |
| + "// Synthetic source file generated for '$readableUri'."))); |
| + } |
| + |
| // TODO(johnniwinther): Wrap the result from [provider] in a specialized |
| // [Future] to ensure that we never execute an asynchronous action without |
| // setting up the current element of the compiler. |
| return new Future.sync(() => callUserProvider(resourceUri)).then((data) { |
| SourceFile sourceFile; |
| - String resourceUriString = resourceUri.toString(); |
| if (data is List<int>) { |
| sourceFile = new Utf8BytesSourceFile(resourceUriString, data); |
| } else if (data is String) { |