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: frog/world.dart

Issue 9110027: Some cleanups to Frog to avoid looking up its builtin types too much (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: removed dead files Created 8 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: frog/world.dart
diff --git a/frog/world.dart b/frog/world.dart
index 42652b39af38bdf84874604d8d2137def7c6396e..d1e098ad9b79bcec468e97df6e147da056a267ee 100644
--- a/frog/world.dart
+++ b/frog/world.dart
@@ -68,9 +68,10 @@ class World {
Map<String, Library> libraries;
Library corelib;
+ Library coreimpl;
- Library get coreimpl() => libraries['dart:coreimpl'];
- Library get dom() => libraries['dart:dom'];
+ // TODO(jmesserly): we shouldn't be special casing DOM anywhere.
+ Library dom;
List<Library> _todo;
@@ -91,7 +92,6 @@ class World {
DefinedType dynamicType;
DefinedType voidType;
-
DefinedType objectType;
DefinedType numType;
DefinedType intType;
@@ -101,6 +101,14 @@ class World {
DefinedType listType;
DefinedType mapType;
DefinedType functionType;
+ DefinedType typeErrorType;
+
+ // Types from dart:coreimpl that the compiler needs
+ DefinedType numImplType;
+ DefinedType stringImplType;
+ DefinedType functionImplType;
+ DefinedType listFactoryType;
+ DefinedType immutableListType;
NonNullableType nonNullBool;
@@ -125,19 +133,28 @@ class World {
libraries['dart:core'] = corelib;
_todo.add(corelib);
- voidType = _addToCoreLib('void', false);
- dynamicType = _addToCoreLib('Dynamic', false);
+ coreimpl = getOrAddLibrary('dart:coreimpl');
+
+ voidType = corelib.addType('void', null, false);
+ dynamicType = corelib.addType('Dynamic', null, false);
varType = dynamicType;
- objectType = _addToCoreLib('Object', true);
- numType = _addToCoreLib('num', false);
- intType = _addToCoreLib('int', false);
- doubleType = _addToCoreLib('double', false);
- boolType = _addToCoreLib('bool', false);
- stringType = _addToCoreLib('String', false);
- listType = _addToCoreLib('List', false);
- mapType = _addToCoreLib('Map', false);
- functionType = _addToCoreLib('Function', false);
+ objectType = corelib.addType('Object', null, true);
+ numType = corelib.addType('num', null, false);
+ intType = corelib.addType('int', null, false);
+ doubleType = corelib.addType('double', null, false);
+ boolType = corelib.addType('bool', null, false);
+ stringType = corelib.addType('String', null, false);
+ listType = corelib.addType('List', null, false);
+ mapType = corelib.addType('Map', null, false);
+ functionType = corelib.addType('Function', null, false);
+ typeErrorType = corelib.addType('TypeError', null, false);
+
+ numImplType = coreimpl.addType('NumImplementation', null, true);
+ stringImplType = coreimpl.addType('StringImplementation', null, true);
+ immutableListType = coreimpl.addType('ImmutableList', null, true);
+ listFactoryType = coreimpl.addType('ListFactory', null, true);
+ functionImplType = coreimpl.addType('_FunctionImplementation', null, true);
nonNullBool = new NonNullableType(boolType);
}
@@ -166,7 +183,7 @@ class World {
* the generated JS.
*/
_addTopName(Element named) {
- if (named.nativeName != null) {
+ if (named is Type && named.isNative) {
// Reserve the native name if we have one. This ensures no other type
// will take our native name.
_addJavascriptTopName(named, named.nativeName);
@@ -255,12 +272,6 @@ class World {
if (!type.isTop) _addTopName(type);
}
- _addToCoreLib(String name, bool isClass) {
- var ret = new DefinedType(name, corelib, null, isClass);
- corelib.types[name] = ret;
- return ret;
- }
-
// TODO(jimhug): Can this just be a const Set?
Set<String> _jsKeywords;
@@ -390,6 +401,10 @@ class World {
}
libraries[filename] = library;
_todo.add(library);
+
+ if (filename == 'dart:dom') {
+ dom = library;
+ }
}
return library;
}
« frog/member.dart ('K') | « frog/var_member.dart ('k') | utils/apidoc/html_diff.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698