Index: sdk/lib/_internal/compiler/implementation/lib/js_helper.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart b/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart |
index 6dae54a419aa7bc9389316cf0fd57520654e820c..bae31a14c1b1475267c6573ec4154d06a7338f19 100644 |
--- a/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart |
+++ b/sdk/lib/_internal/compiler/implementation/lib/js_helper.dart |
@@ -302,7 +302,8 @@ index$slow(var a, var index) { |
if (index < 0 || index >= a.length) { |
throw new RangeError.value(index); |
} |
- return JS('Object', r'#[#]', a, index); |
+ // return JS('Object', r'#[#]', a, index); |
ngeoffray
2012/11/14 21:17:39
Remove commented line.
sra1
2012/11/15 00:09:10
Done.
|
+ return JS('', r'#[#]', a, index); |
} |
return UNINTERCEPTED(a[index]); |
} |
@@ -316,7 +317,7 @@ void indexSet$slow(var a, var index, var value) { |
throw new RangeError.value(index); |
} |
checkMutable(a, 'indexed set'); |
- JS('Object', r'#[#] = #', a, index, value); |
+ JS('void', r'#[#] = #', a, index, value); |
return; |
} |
UNINTERCEPTED(a[index] = value); |
@@ -347,7 +348,8 @@ class ListIterator<T> implements Iterator<T> { |
bool get hasNext => i < JS('int', r'#.length', list); |
T next() { |
if (!hasNext) throw new StateError("No more elements"); |
- var value = JS('Object', r'#[#]', list, i); |
+ // var value = JS('Object', r'#[#]', list, i); |
ngeoffray
2012/11/14 21:17:39
ditto
sra1
2012/11/15 00:09:10
Done.
|
+ var value = JS('', r'#[#]', list, i); |
i += 1; |
return value; |
} |
@@ -464,7 +466,7 @@ class Primitives { |
static int parseInt(String string) { |
checkString(string); |
- var match = JS('List', |
+ var match = JS('=List', |
r'/^\s*[+-]?(?:0(x)[a-f0-9]+|\d+)\s*$/i.exec(#)', |
string); |
if (match == null) { |
@@ -522,11 +524,14 @@ class Primitives { |
} |
static List newList(length) { |
- if (length == null) return JS('Object', r'new Array()'); |
+ // TODO(sra): For good concrete type analysis we need the JS-type to |
+ // specifically name the JavaScript Array implementation. 'List' matches |
+ // all the dart:html types that implement List<T>. |
+ if (length == null) return JS('=List', r'new Array()'); |
if ((length is !int) || (length < 0)) { |
throw new ArgumentError(length); |
} |
- var result = JS('Object', r'new Array(#)', length); |
+ var result = JS('=List', r'new Array(#)', length); |
JS('void', r'#.fixed$length = #', result, true); |
return result; |
} |
@@ -583,7 +588,8 @@ class Primitives { |
} |
static patchUpY2K(value, years, isUtc) { |
- var date = JS('Object', r'new Date(#)', value); |
+ // var date = JS('Object', r'new Date(#)', value); |
ngeoffray
2012/11/14 21:17:39
ditto
sra1
2012/11/15 00:09:10
Done.
|
+ var date = JS('', r'new Date(#)', value); |
if (isUtc) { |
JS('num', r'#.setUTCFullYear(#)', date, years); |
} else { |
@@ -895,7 +901,8 @@ class MathNatives { |
*/ |
$throw(ex) { |
if (ex == null) ex = const NullPointerException(); |
- var jsError = JS('Object', r'new Error()'); |
+ // var jsError = JS('Object', r'new Error()'); |
ngeoffray
2012/11/14 21:17:39
ditto
sra1
2012/11/15 00:09:10
Done.
|
+ var jsError = JS('var', r'new Error()'); |
JS('void', r'#.name = #', jsError, ex); |
JS('void', r'#.description = #', jsError, ex); |
JS('void', r'#.dartException = #', jsError, ex); |
@@ -910,7 +917,8 @@ $throw(ex) { |
* JavaScript Error to which we have added a property 'dartException' |
* which holds a Dart object. |
*/ |
-toStringWrapper() => JS('Object', r'this.dartException').toString(); |
+// toStringWrapper() => JS('Object', r'this.dartException').toString(); |
ngeoffray
2012/11/14 21:17:39
ditto
sra1
2012/11/15 00:09:10
Done.
|
+toStringWrapper() => JS('', r'this.dartException').toString(); |
makeLiteralListConst(list) { |
JS('bool', r'#.immutable$list = #', list, true); |
@@ -938,7 +946,8 @@ unwrapException(ex) { |
// Note that we are checking if the object has the property. If it |
// has, it could be set to null if the thrown value is null. |
if (JS('bool', r'"dartException" in #', ex)) { |
- return JS('Object', r'#.dartException', ex); |
+ // return JS('Object', r'#.dartException', ex); |
ngeoffray
2012/11/14 21:17:39
ditto
sra1
2012/11/15 00:09:10
Done.
|
+ return JS('', r'#.dartException', ex); |
} |
// Grab hold of the exception message. This field is available on |
@@ -1110,6 +1119,23 @@ abstract class Dynamic_ { |
} |
/** |
+ * A metadata annotation describing the types instantiated by a native element. |
+ */ |
+class Creates { |
+ final String types; |
+ const Creates(this.types); |
+} |
+ |
+/** |
+ * A metadata annotation describing the types returned or yielded by a native |
+ * element. |
+ */ |
+class Returns { |
+ final String types; |
+ const Returns(this.types); |
+} |
+ |
+/** |
* Represents the type of Null. The compiler treats this specially. |
* TODO(lrn): Null should be defined in core. It's a class, like int. |
* It just happens to act differently in assignability tests and, |
@@ -1480,6 +1506,7 @@ Type getOrCreateCachedRuntimeType(String key) { |
} |
String getRuntimeTypeString(var object) { |
- var typeInfo = JS('Object', r'#.builtin$typeInfo', object); |
+ //var typeInfo = JS('Object', r'#.builtin$typeInfo', object); |
ngeoffray
2012/11/14 21:17:39
ditto
sra1
2012/11/15 00:09:10
Done.
|
+ var typeInfo = JS('var', r'#.builtin$typeInfo', object); |
return JS('String', r'#.runtimeType', typeInfo); |
} |