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

Unified Diff: runtime/vm/parser.cc

Issue 12321082: - Properly load the core libraries as libraries and not as scripts. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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: runtime/vm/parser.cc
===================================================================
--- runtime/vm/parser.cc (revision 18894)
+++ runtime/vm/parser.cc (working copy)
@@ -4252,12 +4252,18 @@
}
-Dart_Handle Parser::CallLibraryTagHandler(Dart_LibraryTag tag,
+RawObject* Parser::CallLibraryTagHandler(Dart_LibraryTag tag,
intptr_t token_pos,
const String& url) {
Isolate* isolate = Isolate::Current();
Dart_LibraryTagHandler handler = isolate->library_tag_handler();
if (handler == NULL) {
+ if (url.StartsWith(Symbols::DartScheme())) {
+ if (tag == kCanonicalizeUrl) {
+ return url.raw();
+ }
+ return Object::null();
+ }
ErrorMsg(token_pos, "no library handler registered");
}
Dart_Handle result = handler(tag,
@@ -4267,8 +4273,14 @@
Error& prev_error = Error::Handle();
prev_error ^= Api::UnwrapHandle(result);
AppendErrorMsg(prev_error, token_pos, "library handler failed");
+ UNREACHABLE();
siva 2013/02/23 00:11:03 Why UNREACHABLE here (AppendErrorMsg already has o
Ivan Posva 2013/02/25 22:20:14 I wanted to make it clear that we will not be able
}
- return result;
+ if (tag == kCanonicalizeUrl) {
+ if (!Dart_IsString(result)) {
+ ErrorMsg(token_pos, "library handler failed URI canonicalization");
+ }
+ }
+ return Api::UnwrapHandle(result);
}
@@ -4303,10 +4315,8 @@
}
ExpectToken(Token::kRPAREN);
ExpectToken(Token::kSEMICOLON);
- Dart_Handle handle = CallLibraryTagHandler(kCanonicalizeUrl,
- import_pos,
- url);
- const String& canon_url = String::CheckedHandle(Api::UnwrapHandle(handle));
+ const String& canon_url = String::CheckedHandle(
+ CallLibraryTagHandler(kCanonicalizeUrl, import_pos, url));
// Lookup the library URL.
Library& library = Library::Handle(Library::LookupLibrary(canon_url));
if (library.IsNull()) {
@@ -4352,10 +4362,8 @@
ConsumeToken();
ExpectToken(Token::kRPAREN);
ExpectToken(Token::kSEMICOLON);
- Dart_Handle handle = CallLibraryTagHandler(kCanonicalizeUrl,
- source_pos,
- url);
- const String& canon_url = String::CheckedHandle(Api::UnwrapHandle(handle));
+ const String& canon_url = String::CheckedHandle(
+ CallLibraryTagHandler(kCanonicalizeUrl, source_pos, url));
CallLibraryTagHandler(kSourceTag, source_pos, canon_url);
}
}
@@ -4442,9 +4450,8 @@
ExpectSemicolon();
// Canonicalize library URL.
- Dart_Handle handle =
- CallLibraryTagHandler(kCanonicalizeUrl, import_pos, url);
- const String& canon_url = String::CheckedHandle(Api::UnwrapHandle(handle));
+ const String& canon_url = String::CheckedHandle(
+ CallLibraryTagHandler(kCanonicalizeUrl, import_pos, url));
// Lookup the library URL.
Library& library = Library::Handle(Library::LookupLibrary(canon_url));
if (library.IsNull()) {
@@ -4496,9 +4503,8 @@
const String& url = *CurrentLiteral();
ConsumeToken();
ExpectSemicolon();
- Dart_Handle handle =
- CallLibraryTagHandler(kCanonicalizeUrl, source_pos, url);
- const String& canon_url = String::CheckedHandle(Api::UnwrapHandle(handle));
+ const String& canon_url = String::CheckedHandle(
+ CallLibraryTagHandler(kCanonicalizeUrl, source_pos, url));
CallLibraryTagHandler(kSourceTag, source_pos, canon_url);
}

Powered by Google App Engine
This is Rietveld 408576698