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

Unified Diff: dart/pkg/compiler/lib/src/apiimpl.dart

Issue 841653004: Recover from read errors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Merged with r42871 Created 5 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
« no previous file with comments | « no previous file | dart/pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/pkg/compiler/lib/src/apiimpl.dart
diff --git a/dart/pkg/compiler/lib/src/apiimpl.dart b/dart/pkg/compiler/lib/src/apiimpl.dart
index 6f9250dcf5b350432b1514a5f2582c32c7b19785..e57178245aa53b599bd5148bb2408e71adc5b8d3 100644
--- a/dart/pkg/compiler/lib/src/apiimpl.dart
+++ b/dart/pkg/compiler/lib/src/apiimpl.dart
@@ -208,24 +208,30 @@ class Compiler extends leg.Compiler {
// [node] to be valid.
elements.Element element = currentElement;
void reportReadError(exception) {
- withCurrentElement(element, () {
- reportError(node,
- leg.MessageKind.READ_SCRIPT_ERROR,
- {'uri': readableUri, 'exception': exception});
- });
+ if (element == null || node == null) {
+ reportError(
+ new leg.SourceSpan(readableUri, 0, 0),
+ leg.MessageKind.READ_SELF_ERROR,
+ {'uri': readableUri, 'exception': exception});
+ } else {
+ withCurrentElement(element, () {
+ reportError(
+ node,
+ leg.MessageKind.READ_SCRIPT_ERROR,
+ {'uri': readableUri, 'exception': exception});
+ });
+ }
}
Uri resourceUri = translateUri(node, readableUri);
- String resourceUriString = resourceUri.toString();
+ String resourceUriString = '$resourceUri';
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'.")));
+ return synthesizeScript(node, readableUri);
}
// TODO(johnniwinther): Wrap the result from [provider] in a specialized
@@ -249,10 +255,21 @@ class Compiler extends leg.Compiler {
return new leg.Script(readableUri, resourceUri, sourceFile);
}).catchError((error) {
reportReadError(error);
- return null;
+ return synthesizeScript(node, readableUri);
});
}
+ Future<leg.Script> synthesizeScript(leg.Spannable node, Uri readableUri) {
+ Uri resourceUri = translateUri(node, readableUri);
+ return new Future.value(
+ new leg.Script(
+ readableUri, resourceUri,
+ new StringSourceFile(
+ '$resourceUri',
+ "// Synthetic source file generated for '$readableUri'."),
+ isSynthesized: true));
+ }
+
/**
* Translates a readable URI into a resource URI.
*
« no previous file with comments | « no previous file | dart/pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698