| OLD | NEW |
| 1 #!/usr/bin/env node | 1 #!/usr/bin/env node |
| 2 // ********** Library dart:core ************** | 2 // ********** Library dart:core ************** |
| 3 // ********** Natives dart:core ************** | 3 // ********** Natives dart:core ************** |
| 4 function $defProp(obj, prop, value) { | 4 function $defProp(obj, prop, value) { |
| 5 Object.defineProperty(obj, prop, | 5 Object.defineProperty(obj, prop, |
| 6 {value: value, enumerable: false, writable: true, configurable: true}); | 6 {value: value, enumerable: false, writable: true, configurable: true}); |
| 7 } | 7 } |
| 8 Function.prototype.bind = Function.prototype.bind || | 8 Function.prototype.bind = Function.prototype.bind || |
| 9 function(thisObj, args) { | 9 function(thisObj, args) { |
| 10 var func = this; | 10 var func = this; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 function $throw(e) { | 25 function $throw(e) { |
| 26 // If e is not a value, we can use V8's captureStackTrace utility method. | 26 // If e is not a value, we can use V8's captureStackTrace utility method. |
| 27 // TODO(jmesserly): capture the stack trace on other JS engines. | 27 // TODO(jmesserly): capture the stack trace on other JS engines. |
| 28 if (e && (typeof e == 'object') && Error.captureStackTrace) { | 28 if (e && (typeof e == 'object') && Error.captureStackTrace) { |
| 29 // TODO(jmesserly): this will clobber the e.stack property | 29 // TODO(jmesserly): this will clobber the e.stack property |
| 30 Error.captureStackTrace(e, $throw); | 30 Error.captureStackTrace(e, $throw); |
| 31 } | 31 } |
| 32 throw e; | 32 throw e; |
| 33 } | 33 } |
| 34 $defProp(Object.prototype, '$index', function(i) { | 34 $defProp(Object.prototype, '$index', function(i) { |
| 35 var proto = Object.getPrototypeOf(this); | 35 $throw(new NoSuchMethodException(this, "operator []", [i])); |
| 36 if (proto !== Object) { | |
| 37 proto.$index = function(i) { return this[i]; } | |
| 38 } | |
| 39 return this[i]; | |
| 40 }); | 36 }); |
| 41 $defProp(Array.prototype, '$index', function(index) { | 37 $defProp(Array.prototype, '$index', function(index) { |
| 42 var i = index | 0; | 38 var i = index | 0; |
| 43 if (i !== index) { | 39 if (i !== index) { |
| 44 throw new IllegalArgumentException('index is not int'); | 40 throw new IllegalArgumentException('index is not int'); |
| 45 } else if (i < 0 || i >= this.length) { | 41 } else if (i < 0 || i >= this.length) { |
| 46 throw new IndexOutOfRangeException(index); | 42 throw new IndexOutOfRangeException(index); |
| 47 } | 43 } |
| 48 return this[i]; | 44 return this[i]; |
| 49 }); | 45 }); |
| 50 $defProp(String.prototype, '$index', function(i) { | 46 $defProp(String.prototype, '$index', function(i) { |
| 51 return this[i]; | 47 return this[i]; |
| 52 }); | 48 }); |
| 53 $defProp(Object.prototype, '$setindex', function(i, value) { | 49 $defProp(Object.prototype, '$setindex', function(i, value) { |
| 54 var proto = Object.getPrototypeOf(this); | 50 $throw(new NoSuchMethodException(this, "operator []=", [i, value])); |
| 55 if (proto !== Object) { | |
| 56 proto.$setindex = function(i, value) { return this[i] = value; } | |
| 57 } | |
| 58 return this[i] = value; | |
| 59 }); | 51 }); |
| 60 $defProp(Array.prototype, '$setindex', function(index, value) { | 52 $defProp(Array.prototype, '$setindex', function(index, value) { |
| 61 var i = index | 0; | 53 var i = index | 0; |
| 62 if (i !== index) { | 54 if (i !== index) { |
| 63 throw new IllegalArgumentException('index is not int'); | 55 throw new IllegalArgumentException('index is not int'); |
| 64 } else if (i < 0 || i >= this.length) { | 56 } else if (i < 0 || i >= this.length) { |
| 65 throw new IndexOutOfRangeException(index); | 57 throw new IndexOutOfRangeException(index); |
| 66 } | 58 } |
| 67 return this[i] = value; | 59 return this[i] = value; |
| 68 }); | 60 }); |
| 61 function $add$complex(x, y) { |
| 62 if (typeof(x) == 'number') { |
| 63 $throw(new IllegalArgumentException(y)); |
| 64 } else if (typeof(x) == 'string') { |
| 65 var str = (y == null) ? 'null' : y.toString(); |
| 66 if (typeof(str) != 'string') { |
| 67 throw new Error("calling toString() on right hand operand of operator " + |
| 68 "+ did not return a String"); |
| 69 } |
| 70 return x + str; |
| 71 } else if (typeof(x) == 'object') { |
| 72 return x.$add(y); |
| 73 } else { |
| 74 $throw(new NoSuchMethodException(x, "operator +", [y])); |
| 75 } |
| 76 } |
| 77 |
| 69 function $add(x, y) { | 78 function $add(x, y) { |
| 70 return ((typeof(x) == 'number' && typeof(y) == 'number') || | 79 if (typeof(x) == 'number' && typeof(y) == 'number') return x + y; |
| 71 (typeof(x) == 'string')) | 80 return $add$complex(x, y); |
| 72 ? x + y : x.$add(y); | 81 } |
| 82 function $bit_xor$complex(x, y) { |
| 83 if (typeof(x) == 'number') { |
| 84 $throw(new IllegalArgumentException(y)); |
| 85 } else if (typeof(x) == 'object') { |
| 86 return x.$bit_xor(y); |
| 87 } else { |
| 88 $throw(new NoSuchMethodException(x, "operator ^", [y])); |
| 89 } |
| 73 } | 90 } |
| 74 function $bit_xor(x, y) { | 91 function $bit_xor(x, y) { |
| 75 return (typeof(x) == 'number' && typeof(y) == 'number') | 92 if (typeof(x) == 'number' && typeof(y) == 'number') return x ^ y; |
| 76 ? x ^ y : x.$bit_xor(y); | 93 return $bit_xor$complex(x, y); |
| 77 } | 94 } |
| 78 function $eq(x, y) { | 95 function $eq(x, y) { |
| 79 if (x == null) return y == null; | 96 if (x == null) return y == null; |
| 80 return (typeof(x) == 'number' && typeof(y) == 'number') || | 97 return (typeof(x) != 'object') ? x === y : x.$eq(y); |
| 81 (typeof(x) == 'boolean' && typeof(y) == 'boolean') || | |
| 82 (typeof(x) == 'string' && typeof(y) == 'string') | |
| 83 ? x == y : x.$eq(y); | |
| 84 } | 98 } |
| 85 // TODO(jimhug): Should this or should it not match equals? | 99 // TODO(jimhug): Should this or should it not match equals? |
| 86 $defProp(Object.prototype, '$eq', function(other) { | 100 $defProp(Object.prototype, '$eq', function(other) { |
| 87 return this === other; | 101 return this === other; |
| 88 }); | 102 }); |
| 103 function $gt$complex(x, y) { |
| 104 if (typeof(x) == 'number') { |
| 105 $throw(new IllegalArgumentException(y)); |
| 106 } else if (typeof(x) == 'object') { |
| 107 return x.$gt(y); |
| 108 } else { |
| 109 $throw(new NoSuchMethodException(x, "operator >", [y])); |
| 110 } |
| 111 } |
| 89 function $gt(x, y) { | 112 function $gt(x, y) { |
| 90 return (typeof(x) == 'number' && typeof(y) == 'number') | 113 if (typeof(x) == 'number' && typeof(y) == 'number') return x > y; |
| 91 ? x > y : x.$gt(y); | 114 return $gt$complex(x, y); |
| 115 } |
| 116 function $gte$complex(x, y) { |
| 117 if (typeof(x) == 'number') { |
| 118 $throw(new IllegalArgumentException(y)); |
| 119 } else if (typeof(x) == 'object') { |
| 120 return x.$gte(y); |
| 121 } else { |
| 122 $throw(new NoSuchMethodException(x, "operator >=", [y])); |
| 123 } |
| 92 } | 124 } |
| 93 function $gte(x, y) { | 125 function $gte(x, y) { |
| 94 return (typeof(x) == 'number' && typeof(y) == 'number') | 126 if (typeof(x) == 'number' && typeof(y) == 'number') return x >= y; |
| 95 ? x >= y : x.$gte(y); | 127 return $gte$complex(x, y); |
| 128 } |
| 129 function $lt$complex(x, y) { |
| 130 if (typeof(x) == 'number') { |
| 131 $throw(new IllegalArgumentException(y)); |
| 132 } else if (typeof(x) == 'object') { |
| 133 return x.$lt(y); |
| 134 } else { |
| 135 $throw(new NoSuchMethodException(x, "operator <", [y])); |
| 136 } |
| 96 } | 137 } |
| 97 function $lt(x, y) { | 138 function $lt(x, y) { |
| 98 return (typeof(x) == 'number' && typeof(y) == 'number') | 139 if (typeof(x) == 'number' && typeof(y) == 'number') return x < y; |
| 99 ? x < y : x.$lt(y); | 140 return $lt$complex(x, y); |
| 141 } |
| 142 function $lte$complex(x, y) { |
| 143 if (typeof(x) == 'number') { |
| 144 $throw(new IllegalArgumentException(y)); |
| 145 } else if (typeof(x) == 'object') { |
| 146 return x.$lte(y); |
| 147 } else { |
| 148 $throw(new NoSuchMethodException(x, "operator <=", [y])); |
| 149 } |
| 100 } | 150 } |
| 101 function $lte(x, y) { | 151 function $lte(x, y) { |
| 102 return (typeof(x) == 'number' && typeof(y) == 'number') | 152 if (typeof(x) == 'number' && typeof(y) == 'number') return x <= y; |
| 103 ? x <= y : x.$lte(y); | 153 return $lte$complex(x, y); |
| 104 } | 154 } |
| 105 function $mod(x, y) { | 155 function $mod(x, y) { |
| 106 if (typeof(x) == 'number' && typeof(y) == 'number') { | 156 if (typeof(x) == 'number') { |
| 107 var result = x % y; | 157 if (typeof(y) == 'number') { |
| 108 if (result == 0) { | 158 var result = x % y; |
| 109 return 0; // Make sure we don't return -0.0. | 159 if (result == 0) { |
| 110 } else if (result < 0) { | 160 return 0; // Make sure we don't return -0.0. |
| 111 if (y < 0) { | 161 } else if (result < 0) { |
| 112 return result - y; | 162 if (y < 0) { |
| 113 } else { | 163 return result - y; |
| 114 return result + y; | 164 } else { |
| 165 return result + y; |
| 166 } |
| 115 } | 167 } |
| 168 return result; |
| 169 } else { |
| 170 $throw(new IllegalArgumentException(y)); |
| 116 } | 171 } |
| 117 return result; | 172 } else if (typeof(x) == 'object') { |
| 173 return x.$mod(y); |
| 118 } else { | 174 } else { |
| 119 return x.$mod(y); | 175 $throw(new NoSuchMethodException(x, "operator %", [y])); |
| 176 } |
| 177 } |
| 178 function $mul$complex(x, y) { |
| 179 if (typeof(x) == 'number') { |
| 180 $throw(new IllegalArgumentException(y)); |
| 181 } else if (typeof(x) == 'object') { |
| 182 return x.$mul(y); |
| 183 } else { |
| 184 $throw(new NoSuchMethodException(x, "operator *", [y])); |
| 120 } | 185 } |
| 121 } | 186 } |
| 122 function $mul(x, y) { | 187 function $mul(x, y) { |
| 123 return (typeof(x) == 'number' && typeof(y) == 'number') | 188 if (typeof(x) == 'number' && typeof(y) == 'number') return x * y; |
| 124 ? x * y : x.$mul(y); | 189 return $mul$complex(x, y); |
| 125 } | 190 } |
| 126 function $ne(x, y) { | 191 function $ne(x, y) { |
| 127 if (x == null) return y != null; | 192 if (x == null) return y != null; |
| 128 return (typeof(x) == 'number' && typeof(y) == 'number') || | 193 return (typeof(x) != 'object') ? x !== y : !x.$eq(y); |
| 129 (typeof(x) == 'boolean' && typeof(y) == 'boolean') || | 194 } |
| 130 (typeof(x) == 'string' && typeof(y) == 'string') | 195 function $shl$complex(x, y) { |
| 131 ? x != y : !x.$eq(y); | 196 if (typeof(x) == 'number') { |
| 197 $throw(new IllegalArgumentException(y)); |
| 198 } else if (typeof(x) == 'object') { |
| 199 return x.$shl(y); |
| 200 } else { |
| 201 $throw(new NoSuchMethodException(x, "operator <<", [y])); |
| 202 } |
| 132 } | 203 } |
| 133 function $shl(x, y) { | 204 function $shl(x, y) { |
| 134 return (typeof(x) == 'number' && typeof(y) == 'number') | 205 if (typeof(x) == 'number' && typeof(y) == 'number') return x << y; |
| 135 ? x << y : x.$shl(y); | 206 return $shl$complex(x, y); |
| 207 } |
| 208 function $sub$complex(x, y) { |
| 209 if (typeof(x) == 'number') { |
| 210 $throw(new IllegalArgumentException(y)); |
| 211 } else if (typeof(x) == 'object') { |
| 212 return x.$sub(y); |
| 213 } else { |
| 214 $throw(new NoSuchMethodException(x, "operator -", [y])); |
| 215 } |
| 136 } | 216 } |
| 137 function $sub(x, y) { | 217 function $sub(x, y) { |
| 138 return (typeof(x) == 'number' && typeof(y) == 'number') | 218 if (typeof(x) == 'number' && typeof(y) == 'number') return x - y; |
| 139 ? x - y : x.$sub(y); | 219 return $sub$complex(x, y); |
| 140 } | 220 } |
| 141 function $truncdiv(x, y) { | 221 function $truncdiv(x, y) { |
| 142 if (typeof(x) == 'number' && typeof(y) == 'number') { | 222 if (typeof(x) == 'number') { |
| 143 if (y == 0) $throw(new IntegerDivisionByZeroException()); | 223 if (typeof(y) == 'number') { |
| 144 var tmp = x / y; | 224 if (y == 0) $throw(new IntegerDivisionByZeroException()); |
| 145 return (tmp < 0) ? Math.ceil(tmp) : Math.floor(tmp); | 225 var tmp = x / y; |
| 226 return (tmp < 0) ? Math.ceil(tmp) : Math.floor(tmp); |
| 227 } else { |
| 228 $throw(new IllegalArgumentException(y)); |
| 229 } |
| 230 } else if (typeof(x) == 'object') { |
| 231 return x.$truncdiv(y); |
| 146 } else { | 232 } else { |
| 147 return x.$truncdiv(y); | 233 $throw(new NoSuchMethodException(x, "operator ~/", [y])); |
| 148 } | 234 } |
| 149 } | 235 } |
| 150 // ********** Code for Object ************** | 236 // ********** Code for Object ************** |
| 151 $defProp(Object.prototype, "get$dynamic", function() { | 237 $defProp(Object.prototype, "get$dynamic", function() { |
| 152 "use strict"; return this; | 238 "use strict"; return this; |
| 153 }); | 239 }); |
| 154 $defProp(Object.prototype, "noSuchMethod", function(name, args) { | 240 $defProp(Object.prototype, "noSuchMethod", function(name, args) { |
| 155 $throw(new NoSuchMethodException(this, name, args)); | 241 $throw(new NoSuchMethodException(this, name, args)); |
| 156 }); | 242 }); |
| 157 $defProp(Object.prototype, "_pushBlock$1", function($0) { | 243 $defProp(Object.prototype, "_pushBlock$1", function($0) { |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 248 return "Attempt to modify an immutable object"; | 334 return "Attempt to modify an immutable object"; |
| 249 } | 335 } |
| 250 IllegalAccessException.prototype.toString$0 = IllegalAccessException.prototype.t
oString; | 336 IllegalAccessException.prototype.toString$0 = IllegalAccessException.prototype.t
oString; |
| 251 // ********** Code for NoSuchMethodException ************** | 337 // ********** Code for NoSuchMethodException ************** |
| 252 function NoSuchMethodException(_receiver, _functionName, _arguments, _existingAr
gumentNames) { | 338 function NoSuchMethodException(_receiver, _functionName, _arguments, _existingAr
gumentNames) { |
| 253 this._existingArgumentNames = _existingArgumentNames; | 339 this._existingArgumentNames = _existingArgumentNames; |
| 254 this._receiver = _receiver; | 340 this._receiver = _receiver; |
| 255 this._functionName = _functionName; | 341 this._functionName = _functionName; |
| 256 this._arguments = _arguments; | 342 this._arguments = _arguments; |
| 257 } | 343 } |
| 344 NoSuchMethodException.prototype.is$NoSuchMethodException = function(){return tru
e}; |
| 258 NoSuchMethodException.prototype.toString = function() { | 345 NoSuchMethodException.prototype.toString = function() { |
| 259 var sb = new StringBufferImpl(""); | 346 var sb = new StringBufferImpl(""); |
| 260 for (var i = (0); | 347 for (var i = (0); |
| 261 i < this._arguments.get$length(); i++) { | 348 i < this._arguments.get$length(); i++) { |
| 262 if (i > (0)) { | 349 if (i > (0)) { |
| 263 sb.add(", "); | 350 sb.add(", "); |
| 264 } | 351 } |
| 265 sb.add(this._arguments.$index(i)); | 352 sb.add(this._arguments.$index(i)); |
| 266 } | 353 } |
| 267 if (null == this._existingArgumentNames) { | 354 if (null == this._existingArgumentNames) { |
| (...skipping 1242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1510 hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); | 1597 hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); |
| 1511 hash ^= hash >> 11; | 1598 hash ^= hash >> 11; |
| 1512 return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); | 1599 return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); |
| 1513 } | 1600 } |
| 1514 StringImplementation.prototype.compareTo = function(other) { | 1601 StringImplementation.prototype.compareTo = function(other) { |
| 1515 'use strict'; return this == other ? 0 : this < other ? -1 : 1; | 1602 'use strict'; return this == other ? 0 : this < other ? -1 : 1; |
| 1516 } | 1603 } |
| 1517 StringImplementation.prototype.contains$1 = StringImplementation.prototype.conta
ins; | 1604 StringImplementation.prototype.contains$1 = StringImplementation.prototype.conta
ins; |
| 1518 StringImplementation.prototype.indexOf$1 = StringImplementation.prototype.indexO
f; | 1605 StringImplementation.prototype.indexOf$1 = StringImplementation.prototype.indexO
f; |
| 1519 StringImplementation.prototype.substring$1 = StringImplementation.prototype.subs
tring; | 1606 StringImplementation.prototype.substring$1 = StringImplementation.prototype.subs
tring; |
| 1520 // ********** Code for _Worker ************** | |
| 1521 // ********** Code for _ArgumentMismatchException ************** | 1607 // ********** Code for _ArgumentMismatchException ************** |
| 1522 $inherits(_ArgumentMismatchException, ClosureArgumentMismatchException); | 1608 $inherits(_ArgumentMismatchException, ClosureArgumentMismatchException); |
| 1523 function _ArgumentMismatchException(_message) { | 1609 function _ArgumentMismatchException(_message) { |
| 1524 this._dart_coreimpl_message = _message; | 1610 this._dart_coreimpl_message = _message; |
| 1525 ClosureArgumentMismatchException.call(this); | 1611 ClosureArgumentMismatchException.call(this); |
| 1526 } | 1612 } |
| 1527 _ArgumentMismatchException.prototype.toString = function() { | 1613 _ArgumentMismatchException.prototype.toString = function() { |
| 1528 return ("Closure argument mismatch: " + this._dart_coreimpl_message); | 1614 return ("Closure argument mismatch: " + this._dart_coreimpl_message); |
| 1529 } | 1615 } |
| 1530 _ArgumentMismatchException.prototype.toString$0 = _ArgumentMismatchException.pro
totype.toString; | 1616 _ArgumentMismatchException.prototype.toString$0 = _ArgumentMismatchException.pro
totype.toString; |
| (...skipping 1253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2784 this.useThrow = false; | 2870 this.useThrow = false; |
| 2785 this._generatedDynamicProto = false; | 2871 this._generatedDynamicProto = false; |
| 2786 this._generatedBind = false; | 2872 this._generatedBind = false; |
| 2787 this.useWrap1 = false; | 2873 this.useWrap1 = false; |
| 2788 this.useSetIndex = false; | 2874 this.useSetIndex = false; |
| 2789 this.useIndex = false; | 2875 this.useIndex = false; |
| 2790 this._generatedDefProp = false; | 2876 this._generatedDefProp = false; |
| 2791 } | 2877 } |
| 2792 CoreJs.prototype.get$writer = function() { return this.writer; }; | 2878 CoreJs.prototype.get$writer = function() { return this.writer; }; |
| 2793 CoreJs.prototype.set$writer = function(value) { return this.writer = value; }; | 2879 CoreJs.prototype.set$writer = function(value) { return this.writer = value; }; |
| 2880 CoreJs.prototype.markCorelibTypeUsed = function(typeName) { |
| 2881 $globals.world.gen.markTypeUsed($globals.world.corelib.types.$index(typeName))
; |
| 2882 } |
| 2794 CoreJs.prototype.useOperator = function(name) { | 2883 CoreJs.prototype.useOperator = function(name) { |
| 2795 if ($ne(this._usedOperators.$index(name))) return; | 2884 if ($ne(this._usedOperators.$index(name))) return; |
| 2885 if (name != ":ne" && name != ":eq") { |
| 2886 this.markCorelibTypeUsed("NoSuchMethodException"); |
| 2887 } |
| 2888 if (name != ":bit_not" && name != ":negate") { |
| 2889 this.markCorelibTypeUsed("IllegalArgumentException"); |
| 2890 } |
| 2796 var code; | 2891 var code; |
| 2797 switch (name) { | 2892 switch (name) { |
| 2798 case ":ne": | 2893 case ":ne": |
| 2799 | 2894 |
| 2800 code = "function $ne(x, y) {\n if (x == null) return y != null;\n return
(typeof(x) == 'number' && typeof(y) == 'number') ||\n (typeof(x) == 'bo
olean' && typeof(y) == 'boolean') ||\n (typeof(x) == 'string' && typeof(
y) == 'string')\n ? x != y : !x.$eq(y);\n}"; | 2895 code = "function $ne(x, y) {\n if (x == null) return y != null;\n return
(typeof(x) != 'object') ? x !== y : !x.$eq(y);\n}"; |
| 2801 break; | 2896 break; |
| 2802 | 2897 |
| 2803 case ":eq": | 2898 case ":eq": |
| 2804 | 2899 |
| 2805 this.ensureDefProp(); | 2900 this.ensureDefProp(); |
| 2806 code = "function $eq(x, y) {\n if (x == null) return y == null;\n return
(typeof(x) == 'number' && typeof(y) == 'number') ||\n (typeof(x) == 'bo
olean' && typeof(y) == 'boolean') ||\n (typeof(x) == 'string' && typeof(
y) == 'string')\n ? x == y : x.$eq(y);\n}\n// TODO(jimhug): Should this or sh
ould it not match equals?\n$defProp(Object.prototype, '$eq', function(other) {\n
return this === other;\n});"; | 2901 code = "function $eq(x, y) {\n if (x == null) return y == null;\n return
(typeof(x) != 'object') ? x === y : x.$eq(y);\n}\n// TODO(jimhug): Should this
or should it not match equals?\n$defProp(Object.prototype, '$eq', function(other
) {\n return this === other;\n});"; |
| 2807 break; | 2902 break; |
| 2808 | 2903 |
| 2809 case ":bit_not": | 2904 case ":bit_not": |
| 2810 | 2905 |
| 2811 code = "function $bit_not(x) {\n return (typeof(x) == 'number') ? ~x : x.
$bit_not();\n}"; | 2906 code = "function $bit_not(x) {\n if (typeof(x) == 'number') return ~x;\n
if (typeof(x) == 'object') return x.$bit_not();\n $throw(new NoSuchMethodExce
ption(x, \"operator ~\", []));\n}"; |
| 2812 break; | 2907 break; |
| 2813 | 2908 |
| 2814 case ":negate": | 2909 case ":negate": |
| 2815 | 2910 |
| 2816 code = "function $negate(x) {\n return (typeof(x) == 'number') ? -x : x.$
negate();\n}"; | 2911 code = "function $negate(x) {\n if (typeof(x) == 'number') return -x;\n
if (typeof(x) == 'object') return x.$negate();\n $throw(new NoSuchMethodExcepti
on(x, \"operator negate\", []));\n}"; |
| 2817 break; | 2912 break; |
| 2818 | 2913 |
| 2819 case ":add": | 2914 case ":add": |
| 2820 | 2915 |
| 2821 code = "function $add(x, y) {\n return ((typeof(x) == 'number' && typeof(
y) == 'number') ||\n (typeof(x) == 'string'))\n ? x + y : x.$add(y);
\n}"; | 2916 code = "function $add$complex(x, y) {\n if (typeof(x) == 'number') {\n
$throw(new IllegalArgumentException(y));\n } else if (typeof(x) == 'string') {
\n var str = (y == null) ? 'null' : y.toString();\n if (typeof(str) != 'st
ring') {\n throw new Error(\"calling toString() on right hand operand of op
erator \" +\n \"+ did not return a String\");\n }\n return x + str;\n
} else if (typeof(x) == 'object') {\n return x.$add(y);\n } else {\n $t
hrow(new NoSuchMethodException(x, \"operator +\", [y]));\n }\n}\n\nfunction $ad
d(x, y) {\n if (typeof(x) == 'number' && typeof(y) == 'number') return x + y;\n
return $add$complex(x, y);\n}"; |
| 2822 break; | 2917 break; |
| 2823 | 2918 |
| 2824 case ":truncdiv": | 2919 case ":truncdiv": |
| 2825 | 2920 |
| 2826 this.useThrow = true; | 2921 this.useThrow = true; |
| 2827 $globals.world.gen.markTypeUsed($globals.world.corelib.types.$index("Integ
erDivisionByZeroException")); | 2922 this.markCorelibTypeUsed("IntegerDivisionByZeroException"); |
| 2828 code = "function $truncdiv(x, y) {\n if (typeof(x) == 'number' && typeof(
y) == 'number') {\n if (y == 0) $throw(new IntegerDivisionByZeroException());
\n var tmp = x / y;\n return (tmp < 0) ? Math.ceil(tmp) : Math.floor(tmp);
\n } else {\n return x.$truncdiv(y);\n }\n}"; | 2923 code = "function $truncdiv(x, y) {\n if (typeof(x) == 'number') {\n if
(typeof(y) == 'number') {\n if (y == 0) $throw(new IntegerDivisionByZeroEx
ception());\n var tmp = x / y;\n return (tmp < 0) ? Math.ceil(tmp) : M
ath.floor(tmp);\n } else {\n $throw(new IllegalArgumentException(y));\n
}\n } else if (typeof(x) == 'object') {\n return x.$truncdiv(y);\n } els
e {\n $throw(new NoSuchMethodException(x, \"operator ~/\", [y]));\n }\n}"; |
| 2829 break; | 2924 break; |
| 2830 | 2925 |
| 2831 case ":mod": | 2926 case ":mod": |
| 2832 | 2927 |
| 2833 code = "function $mod(x, y) {\n if (typeof(x) == 'number' && typeof(y) ==
'number') {\n var result = x % y;\n if (result == 0) {\n return 0;
// Make sure we don't return -0.0.\n } else if (result < 0) {\n if (y <
0) {\n return result - y;\n } else {\n return result + y;\n
}\n }\n return result;\n } else {\n return x.$mod(y);\n }\n}"; | 2928 code = "function $mod(x, y) {\n if (typeof(x) == 'number') {\n if (typ
eof(y) == 'number') {\n var result = x % y;\n if (result == 0) {\n
return 0; // Make sure we don't return -0.0.\n } else if (result < 0)
{\n if (y < 0) {\n return result - y;\n } else {\n
return result + y;\n }\n }\n return result;\n } else {\n
$throw(new IllegalArgumentException(y));\n }\n } else if (typeof(x) ==
'object') {\n return x.$mod(y);\n } else {\n $throw(new NoSuchMethodExcep
tion(x, \"operator %\", [y]));\n }\n}"; |
| 2834 break; | 2929 break; |
| 2835 | 2930 |
| 2836 default: | 2931 default: |
| 2837 | 2932 |
| 2838 var op = TokenKind.rawOperatorFromMethod(name); | 2933 var op = TokenKind.rawOperatorFromMethod(name); |
| 2839 var jsname = $globals.world.toJsIdentifier(name); | 2934 var jsname = $globals.world.toJsIdentifier(name); |
| 2840 code = _otherOperator(jsname, op); | 2935 code = _otherOperator(jsname, op); |
| 2841 break; | 2936 break; |
| 2842 | 2937 |
| 2843 } | 2938 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2880 w.write(this.writer.get$text()); | 2975 w.write(this.writer.get$text()); |
| 2881 this.writer = w; | 2976 this.writer = w; |
| 2882 if (this.useNotNullBool) { | 2977 if (this.useNotNullBool) { |
| 2883 this.useThrow = true; | 2978 this.useThrow = true; |
| 2884 w.writeln("function $notnull_bool(test) {\n if (test === true || test === f
alse) return test;\n $throw(new TypeError(test, 'bool'));\n}"); | 2979 w.writeln("function $notnull_bool(test) {\n if (test === true || test === f
alse) return test;\n $throw(new TypeError(test, 'bool'));\n}"); |
| 2885 } | 2980 } |
| 2886 if (this.useThrow) { | 2981 if (this.useThrow) { |
| 2887 w.writeln("function $throw(e) {\n // If e is not a value, we can use V8's c
aptureStackTrace utility method.\n // TODO(jmesserly): capture the stack trace
on other JS engines.\n if (e && (typeof e == 'object') && Error.captureStackTra
ce) {\n // TODO(jmesserly): this will clobber the e.stack property\n Error
.captureStackTrace(e, $throw);\n }\n throw e;\n}"); | 2982 w.writeln("function $throw(e) {\n // If e is not a value, we can use V8's c
aptureStackTrace utility method.\n // TODO(jmesserly): capture the stack trace
on other JS engines.\n if (e && (typeof e == 'object') && Error.captureStackTra
ce) {\n // TODO(jmesserly): this will clobber the e.stack property\n Error
.captureStackTrace(e, $throw);\n }\n throw e;\n}"); |
| 2888 } | 2983 } |
| 2889 if (this.useIndex) { | 2984 if (this.useIndex) { |
| 2985 this.markCorelibTypeUsed("NoSuchMethodException"); |
| 2890 this.ensureDefProp(); | 2986 this.ensureDefProp(); |
| 2891 w.writeln($globals.options.disableBoundsChecks ? "$defProp(Object.prototype,
'$index', function(i) {\n var proto = Object.getPrototypeOf(this);\n if (prot
o !== Object) {\n proto.$index = function(i) { return this[i]; }\n }\n retu
rn this[i];\n});\n$defProp(Array.prototype, '$index', function(i) {\n return th
is[i];\n});\n$defProp(String.prototype, '$index', function(i) {\n return this[i
];\n});" : "$defProp(Object.prototype, '$index', function(i) {\n var proto = Ob
ject.getPrototypeOf(this);\n if (proto !== Object) {\n proto.$index = functi
on(i) { return this[i]; }\n }\n return this[i];\n});\n$defProp(Array.prototype
, '$index', function(index) {\n var i = index | 0;\n if (i !== index) {\n t
hrow new IllegalArgumentException('index is not int');\n } else if (i < 0 || i
>= this.length) {\n throw new IndexOutOfRangeException(index);\n }\n return
this[i];\n});\n$defProp(String.prototype, '$index', function(i) {\n return thi
s[i];\n});"); | 2987 w.writeln($globals.options.disableBoundsChecks ? "$defProp(Object.prototype,
'$index', function(i) {\n $throw(new NoSuchMethodException(this, \"operator []
\", [i]));\n});\n$defProp(Array.prototype, '$index', function(i) {\n return thi
s[i];\n});\n$defProp(String.prototype, '$index', function(i) {\n return this[i]
;\n});" : "$defProp(Object.prototype, '$index', function(i) {\n $throw(new NoSu
chMethodException(this, \"operator []\", [i]));\n});\n$defProp(Array.prototype,
'$index', function(index) {\n var i = index | 0;\n if (i !== index) {\n thr
ow new IllegalArgumentException('index is not int');\n } else if (i < 0 || i >=
this.length) {\n throw new IndexOutOfRangeException(index);\n }\n return t
his[i];\n});\n$defProp(String.prototype, '$index', function(i) {\n return this[
i];\n});"); |
| 2892 } | 2988 } |
| 2893 if (this.useSetIndex) { | 2989 if (this.useSetIndex) { |
| 2990 this.markCorelibTypeUsed("NoSuchMethodException"); |
| 2894 this.ensureDefProp(); | 2991 this.ensureDefProp(); |
| 2895 w.writeln($globals.options.disableBoundsChecks ? "$defProp(Object.prototype,
'$setindex', function(i, value) {\n var proto = Object.getPrototypeOf(this);\n
if (proto !== Object) {\n proto.$setindex = function(i, value) { return thi
s[i] = value; }\n }\n return this[i] = value;\n});\n$defProp(Array.prototype,
'$setindex',\n function(i, value) { return this[i] = value; });" : "$defProp(
Object.prototype, '$setindex', function(i, value) {\n var proto = Object.getPro
totypeOf(this);\n if (proto !== Object) {\n proto.$setindex = function(i, va
lue) { return this[i] = value; }\n }\n return this[i] = value;\n});\n$defProp(
Array.prototype, '$setindex', function(index, value) {\n var i = index | 0;\n
if (i !== index) {\n throw new IllegalArgumentException('index is not int');\
n } else if (i < 0 || i >= this.length) {\n throw new IndexOutOfRangeExcepti
on(index);\n }\n return this[i] = value;\n});"); | 2992 w.writeln($globals.options.disableBoundsChecks ? "$defProp(Object.prototype,
'$setindex', function(i, value) {\n $throw(new NoSuchMethodException(this, \"o
perator []=\", [i, value]));\n});\n$defProp(Array.prototype, '$setindex',\n f
unction(i, value) { return this[i] = value; });" : "$defProp(Object.prototype, '
$setindex', function(i, value) {\n $throw(new NoSuchMethodException(this, \"ope
rator []=\", [i, value]));\n});\n$defProp(Array.prototype, '$setindex', function
(index, value) {\n var i = index | 0;\n if (i !== index) {\n throw new Ille
galArgumentException('index is not int');\n } else if (i < 0 || i >= this.lengt
h) {\n throw new IndexOutOfRangeException(index);\n }\n return this[i] = va
lue;\n});"); |
| 2896 } | 2993 } |
| 2897 if (this.useIsolates) { | 2994 if (!this.useIsolates) { |
| 2898 if (this.useWrap0) { | |
| 2899 w.writeln("// Wrap a 0-arg dom-callback to bind it with the current isolat
e:\nfunction $wrap_call$0(fn) { return fn && fn.wrap$call$0(); }\nFunction.proto
type.wrap$call$0 = function() {\n var isolateContext = $globalState.currentCont
ext;\n var self = this;\n this.wrap$0 = function() {\n isolateContext.eval(
self);\n $globalState.topEventLoop.run();\n };\n this.wrap$call$0 = functio
n() { return this.wrap$0; };\n return this.wrap$0;\n}"); | |
| 2900 } | |
| 2901 if (this.useWrap1) { | |
| 2902 w.writeln("// Wrap a 1-arg dom-callback to bind it with the current isolat
e:\nfunction $wrap_call$1(fn) { return fn && fn.wrap$call$1(); }\nFunction.proto
type.wrap$call$1 = function() {\n var isolateContext = $globalState.currentCont
ext;\n var self = this;\n this.wrap$1 = function(arg) {\n isolateContext.ev
al(function() { self(arg); });\n $globalState.topEventLoop.run();\n };\n th
is.wrap$call$1 = function() { return this.wrap$1; };\n return this.wrap$1;\n}")
; | |
| 2903 } | |
| 2904 w.writeln("var $globalThis = this;\nvar $globals = null;\nvar $globalState =
null;"); | |
| 2905 } | |
| 2906 else { | |
| 2907 if (this.useWrap0) { | 2995 if (this.useWrap0) { |
| 2908 w.writeln("function $wrap_call$0(fn) { return fn; }"); | 2996 w.writeln("function $wrap_call$0(fn) { return fn; }"); |
| 2909 } | 2997 } |
| 2910 if (this.useWrap1) { | 2998 if (this.useWrap1) { |
| 2911 w.writeln("function $wrap_call$1(fn) { return fn; }"); | 2999 w.writeln("function $wrap_call$1(fn) { return fn; }"); |
| 2912 } | 3000 } |
| 2913 } | 3001 } |
| 2914 var $$list = orderValuesByKeys(this._usedOperators); | 3002 var $$list = orderValuesByKeys(this._usedOperators); |
| 2915 for (var $$i = $$list.iterator(); $$i.hasNext(); ) { | 3003 for (var $$i = $$list.iterator(); $$i.hasNext(); ) { |
| 2916 var opImpl = $$i.next(); | 3004 var opImpl = $$i.next(); |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3102 this.markLibrariesUsed([$globals.world.coreimpl, $globals.world.corelib, thi
s.main.declaringType.get$library()]); | 3190 this.markLibrariesUsed([$globals.world.coreimpl, $globals.world.corelib, thi
s.main.declaringType.get$library()]); |
| 3103 } | 3191 } |
| 3104 $globals.world.numImplType.markUsed(); | 3192 $globals.world.numImplType.markUsed(); |
| 3105 $globals.world.stringImplType.markUsed(); | 3193 $globals.world.stringImplType.markUsed(); |
| 3106 if (this.corejs.useIndex || this.corejs.useSetIndex) { | 3194 if (this.corejs.useIndex || this.corejs.useSetIndex) { |
| 3107 if (!$globals.options.disableBoundsChecks) { | 3195 if (!$globals.options.disableBoundsChecks) { |
| 3108 this.markTypeUsed($globals.world.corelib.types.$index("IndexOutOfRangeExce
ption")); | 3196 this.markTypeUsed($globals.world.corelib.types.$index("IndexOutOfRangeExce
ption")); |
| 3109 this.markTypeUsed($globals.world.corelib.types.$index("IllegalArgumentExce
ption")); | 3197 this.markTypeUsed($globals.world.corelib.types.$index("IllegalArgumentExce
ption")); |
| 3110 } | 3198 } |
| 3111 } | 3199 } |
| 3112 if ($globals.world.corelib.types.$index("Isolate").get$isUsed() || $globals.wo
rld.coreimpl.types.$index("ReceivePortImpl").get$isUsed()) { | 3200 if ($globals.world.isolatelib != null) { |
| 3113 if (this.corejs.useWrap0 || this.corejs.useWrap1) { | |
| 3114 this.genMethod($globals.world.coreimpl.types.$index("IsolateContext").getM
ember("eval")); | |
| 3115 this.genMethod($globals.world.coreimpl.types.$index("EventLoop").getMember
("run")); | |
| 3116 } | |
| 3117 this.corejs.useIsolates = true; | 3201 this.corejs.useIsolates = true; |
| 3118 var isolateMain = $globals.world.coreimpl.lookup("startRootIsolate", this.ma
in.get$span()); | 3202 var isolateMain = $globals.world.isolatelib.lookup("startRootIsolate", this.
main.get$span()); |
| 3119 var isolateMainTarget = new TypeValue($globals.world.coreimpl.topType, this.
main.get$span()); | 3203 mainCall = isolateMain.invoke(this.mainContext, null, new TypeValue($globals
.world.isolatelib.topType, this.main.get$span()), new Arguments(null, [this.main
._get(this.mainContext, this.main.definition, null)])); |
| 3120 mainCall = isolateMain.invoke(this.mainContext, null, isolateMainTarget, new
Arguments(null, [this.main._get(this.mainContext, this.main.definition, null)])
); | |
| 3121 } | 3204 } |
| 3122 this.writeTypes($globals.world.coreimpl); | 3205 this.writeTypes($globals.world.coreimpl); |
| 3123 this.writeTypes($globals.world.corelib); | 3206 this.writeTypes($globals.world.corelib); |
| 3124 this.writeTypes(this.main.declaringType.get$library()); | 3207 this.writeTypes(this.main.declaringType.get$library()); |
| 3125 if (this._mixins != null) this.writer.write(this._mixins.get$text()); | 3208 if (this._mixins != null) this.writer.write(this._mixins.get$text()); |
| 3126 this.writeDynamicDispatchMetadata(); | 3209 this.writeDynamicDispatchMetadata(); |
| 3127 this.writeGlobals(); | 3210 this.writeGlobals(); |
| 3128 this.writer.writeln(("" + mainCall.get$code() + ";")); | 3211 this.writer.writeln(("" + mainCall.get$code() + ";")); |
| 3129 } | 3212 } |
| 3130 WorldGenerator.prototype.markLibrariesUsed = function(libs) { | 3213 WorldGenerator.prototype.markLibrariesUsed = function(libs) { |
| (...skipping 5830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8961 this._afterParens = []; | 9044 this._afterParens = []; |
| 8962 } | 9045 } |
| 8963 Parser.prototype.get$enableAwait = function() { | 9046 Parser.prototype.get$enableAwait = function() { |
| 8964 return $globals.experimentalAwaitPhase != null; | 9047 return $globals.experimentalAwaitPhase != null; |
| 8965 } | 9048 } |
| 8966 Parser.prototype.isPrematureEndOfFile = function() { | 9049 Parser.prototype.isPrematureEndOfFile = function() { |
| 8967 if (this.throwOnIncomplete && this._maybeEat((1))) { | 9050 if (this.throwOnIncomplete && this._maybeEat((1))) { |
| 8968 $throw(new IncompleteSourceException(this._previousToken)); | 9051 $throw(new IncompleteSourceException(this._previousToken)); |
| 8969 } | 9052 } |
| 8970 else if (this._maybeEat((1))) { | 9053 else if (this._maybeEat((1))) { |
| 8971 this._lang_error("unexpected end of file", this._peekToken.get$span()); | 9054 this._error("unexpected end of file", this._peekToken.get$span()); |
| 8972 return true; | 9055 return true; |
| 8973 } | 9056 } |
| 8974 else { | 9057 else { |
| 8975 return false; | 9058 return false; |
| 8976 } | 9059 } |
| 8977 } | 9060 } |
| 8978 Parser.prototype._recoverTo = function(kind1, kind2, kind3) { | 9061 Parser.prototype._recoverTo = function(kind1, kind2, kind3) { |
| 8979 while (!this.isPrematureEndOfFile()) { | 9062 while (!this.isPrematureEndOfFile()) { |
| 8980 var kind = this._peek(); | 9063 var kind = this._peek(); |
| 8981 if (kind == kind1 || kind == kind2 || kind == kind3) { | 9064 if (kind == kind1 || kind == kind2 || kind == kind3) { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9019 } | 9102 } |
| 9020 } | 9103 } |
| 9021 Parser.prototype._eatSemicolon = function() { | 9104 Parser.prototype._eatSemicolon = function() { |
| 9022 if (this.optionalSemicolons && this._peekKind((1))) return; | 9105 if (this.optionalSemicolons && this._peekKind((1))) return; |
| 9023 this._eat((10)); | 9106 this._eat((10)); |
| 9024 } | 9107 } |
| 9025 Parser.prototype._errorExpected = function(expected) { | 9108 Parser.prototype._errorExpected = function(expected) { |
| 9026 if (this.throwOnIncomplete) this.isPrematureEndOfFile(); | 9109 if (this.throwOnIncomplete) this.isPrematureEndOfFile(); |
| 9027 var tok = this._lang_next(); | 9110 var tok = this._lang_next(); |
| 9028 if ((tok instanceof ErrorToken) && tok.get$message() != null) { | 9111 if ((tok instanceof ErrorToken) && tok.get$message() != null) { |
| 9029 this._lang_error(tok.get$message(), tok.get$span()); | 9112 this._error(tok.get$message(), tok.get$span()); |
| 9030 } | 9113 } |
| 9031 else { | 9114 else { |
| 9032 this._lang_error(("expected " + expected + ", but found " + tok), tok.get$sp
an()); | 9115 this._error(("expected " + expected + ", but found " + tok), tok.get$span())
; |
| 9033 } | 9116 } |
| 9034 } | 9117 } |
| 9035 Parser.prototype._lang_error = function(message, location) { | 9118 Parser.prototype._error = function(message, location) { |
| 9036 if (this._recover) return; | 9119 if (this._recover) return; |
| 9037 if (location == null) { | 9120 if (location == null) { |
| 9038 location = this._peekToken.get$span(); | 9121 location = this._peekToken.get$span(); |
| 9039 } | 9122 } |
| 9040 $globals.world.fatal(message, location); | 9123 $globals.world.fatal(message, location); |
| 9041 this._recover = true; | 9124 this._recover = true; |
| 9042 } | 9125 } |
| 9043 Parser.prototype._skipBlock = function() { | 9126 Parser.prototype._skipBlock = function() { |
| 9044 var depth = (1); | 9127 var depth = (1); |
| 9045 this._eat((6)); | 9128 this._eat((6)); |
| 9046 while (true) { | 9129 while (true) { |
| 9047 var tok = this._lang_next(); | 9130 var tok = this._lang_next(); |
| 9048 if (tok.get$kind() == (6)) { | 9131 if (tok.get$kind() == (6)) { |
| 9049 depth += (1); | 9132 depth += (1); |
| 9050 } | 9133 } |
| 9051 else if (tok.get$kind() == (7)) { | 9134 else if (tok.get$kind() == (7)) { |
| 9052 depth -= (1); | 9135 depth -= (1); |
| 9053 if (depth == (0)) return; | 9136 if (depth == (0)) return; |
| 9054 } | 9137 } |
| 9055 else if (tok.get$kind() == (1)) { | 9138 else if (tok.get$kind() == (1)) { |
| 9056 this._lang_error("unexpected end of file during diet parse", tok.get$span(
)); | 9139 this._error("unexpected end of file during diet parse", tok.get$span()); |
| 9057 return; | 9140 return; |
| 9058 } | 9141 } |
| 9059 } | 9142 } |
| 9060 } | 9143 } |
| 9061 Parser.prototype._makeSpan = function(start) { | 9144 Parser.prototype._makeSpan = function(start) { |
| 9062 return new SourceSpan(this.source, start, this._previousToken.end); | 9145 return new SourceSpan(this.source, start, this._previousToken.end); |
| 9063 } | 9146 } |
| 9064 Parser.prototype.compilationUnit = function() { | 9147 Parser.prototype.compilationUnit = function() { |
| 9065 var ret = []; | 9148 var ret = []; |
| 9066 this._maybeEat((13)); | 9149 this._maybeEat((13)); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9193 } | 9276 } |
| 9194 else { | 9277 else { |
| 9195 return this.block(); | 9278 return this.block(); |
| 9196 } | 9279 } |
| 9197 } | 9280 } |
| 9198 else if (!inExpression) { | 9281 else if (!inExpression) { |
| 9199 if (this._maybeEat((10))) { | 9282 if (this._maybeEat((10))) { |
| 9200 return null; | 9283 return null; |
| 9201 } | 9284 } |
| 9202 } | 9285 } |
| 9203 this._lang_error("Expected function body (neither { nor => found)"); | 9286 this._error("Expected function body (neither { nor => found)"); |
| 9204 } | 9287 } |
| 9205 Parser.prototype.finishField = function(start, modifiers, type, name, value) { | 9288 Parser.prototype.finishField = function(start, modifiers, type, name, value) { |
| 9206 var names = [name]; | 9289 var names = [name]; |
| 9207 var values = [value]; | 9290 var values = [value]; |
| 9208 while (this._maybeEat((11))) { | 9291 while (this._maybeEat((11))) { |
| 9209 names.add(this.identifier()); | 9292 names.add(this.identifier()); |
| 9210 if (this._maybeEat((20))) { | 9293 if (this._maybeEat((20))) { |
| 9211 values.add(this.expression()); | 9294 values.add(this.expression()); |
| 9212 } | 9295 } |
| 9213 else { | 9296 else { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9280 } | 9363 } |
| 9281 else { | 9364 else { |
| 9282 if (names.get$length() > (1)) { | 9365 if (names.get$length() > (1)) { |
| 9283 name = names.removeLast(); | 9366 name = names.removeLast(); |
| 9284 } | 9367 } |
| 9285 else { | 9368 else { |
| 9286 name = new Identifier("", names.$index((0)).get$span()); | 9369 name = new Identifier("", names.$index((0)).get$span()); |
| 9287 } | 9370 } |
| 9288 } | 9371 } |
| 9289 if (names.get$length() > (1)) { | 9372 if (names.get$length() > (1)) { |
| 9290 this._lang_error("unsupported qualified name for factory", names.$index((0))
.get$span()); | 9373 this._error("unsupported qualified name for factory", names.$index((0)).get$
span()); |
| 9291 } | 9374 } |
| 9292 type = new NameTypeReference(false, names.$index((0)), null, names.$index((0))
.get$span()); | 9375 type = new NameTypeReference(false, names.$index((0)), null, names.$index((0))
.get$span()); |
| 9293 var di = new DeclaredIdentifier(type, name, this._makeSpan(start)); | 9376 var di = new DeclaredIdentifier(type, name, this._makeSpan(start)); |
| 9294 return this.finishDefinition(start, [factoryToken], di); | 9377 return this.finishDefinition(start, [factoryToken], di); |
| 9295 } | 9378 } |
| 9296 Parser.prototype.statement = function() { | 9379 Parser.prototype.statement = function() { |
| 9297 switch (this._peek()) { | 9380 switch (this._peek()) { |
| 9298 case (88): | 9381 case (88): |
| 9299 | 9382 |
| 9300 return this.breakStatement(); | 9383 return this.breakStatement(); |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9559 } | 9642 } |
| 9560 else if (this._maybeEat((94))) { | 9643 else if (this._maybeEat((94))) { |
| 9561 cases.add(); | 9644 cases.add(); |
| 9562 this._eat((8)); | 9645 this._eat((8)); |
| 9563 } | 9646 } |
| 9564 else { | 9647 else { |
| 9565 break; | 9648 break; |
| 9566 } | 9649 } |
| 9567 } | 9650 } |
| 9568 if (cases.get$length() == (0)) { | 9651 if (cases.get$length() == (0)) { |
| 9569 this._lang_error("case or default"); | 9652 this._error("case or default"); |
| 9570 } | 9653 } |
| 9571 var stmts = []; | 9654 var stmts = []; |
| 9572 while (!this._peekCaseEnd()) { | 9655 while (!this._peekCaseEnd()) { |
| 9573 stmts.add(this.statement()); | 9656 stmts.add(this.statement()); |
| 9574 if (this._recover && !this._recoverTo((7), (89), (94))) { | 9657 if (this._recover && !this._recoverTo((7), (89), (94))) { |
| 9575 break; | 9658 break; |
| 9576 } | 9659 } |
| 9577 } | 9660 } |
| 9578 return new CaseNode(label, cases, stmts, this._makeSpan(start)); | 9661 return new CaseNode(label, cases, stmts, this._makeSpan(start)); |
| 9579 } | 9662 } |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9644 if (type.get$names() == null) { | 9727 if (type.get$names() == null) { |
| 9645 type.set$names([expr.get$name()]); | 9728 type.set$names([expr.get$name()]); |
| 9646 } | 9729 } |
| 9647 else { | 9730 else { |
| 9648 type.get$names().add(expr.get$name()); | 9731 type.get$names().add(expr.get$name()); |
| 9649 } | 9732 } |
| 9650 type.set$span(expr.get$span()); | 9733 type.set$span(expr.get$span()); |
| 9651 return type; | 9734 return type; |
| 9652 } | 9735 } |
| 9653 else { | 9736 else { |
| 9654 this._lang_error("expected type reference"); | 9737 this._error("expected type reference"); |
| 9655 return null; | 9738 return null; |
| 9656 } | 9739 } |
| 9657 } | 9740 } |
| 9658 Parser.prototype.infixExpression = function(precedence) { | 9741 Parser.prototype.infixExpression = function(precedence) { |
| 9659 return this.finishInfixExpression(this.unaryExpression(), precedence); | 9742 return this.finishInfixExpression(this.unaryExpression(), precedence); |
| 9660 } | 9743 } |
| 9661 Parser.prototype._finishDeclaredId = function(type) { | 9744 Parser.prototype._finishDeclaredId = function(type) { |
| 9662 var name = this.identifier(); | 9745 var name = this.identifier(); |
| 9663 return this.finishPostfixExpression(new DeclaredIdentifier(type, name, this._m
akeSpan(type.get$span().start))); | 9746 return this.finishPostfixExpression(new DeclaredIdentifier(type, name, this._m
akeSpan(type.get$span().start))); |
| 9664 } | 9747 } |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9822 } | 9905 } |
| 9823 } | 9906 } |
| 9824 Parser.prototype.finishCallOrLambdaExpression = function(expr) { | 9907 Parser.prototype.finishCallOrLambdaExpression = function(expr) { |
| 9825 if (this._atClosureParameters()) { | 9908 if (this._atClosureParameters()) { |
| 9826 var formals = this.formalParameterList(); | 9909 var formals = this.formalParameterList(); |
| 9827 var body = this.functionBody(true); | 9910 var body = this.functionBody(true); |
| 9828 return this._makeFunction(expr, formals, body); | 9911 return this._makeFunction(expr, formals, body); |
| 9829 } | 9912 } |
| 9830 else { | 9913 else { |
| 9831 if ((expr instanceof DeclaredIdentifier)) { | 9914 if ((expr instanceof DeclaredIdentifier)) { |
| 9832 this._lang_error("illegal target for call, did you mean to declare a funct
ion?", expr.get$span()); | 9915 this._error("illegal target for call, did you mean to declare a function?"
, expr.get$span()); |
| 9833 } | 9916 } |
| 9834 var args = this.arguments(); | 9917 var args = this.arguments(); |
| 9835 return this.finishPostfixExpression(new CallExpression(expr, args, this._mak
eSpan(expr.get$span().start))); | 9918 return this.finishPostfixExpression(new CallExpression(expr, args, this._mak
eSpan(expr.get$span().start))); |
| 9836 } | 9919 } |
| 9837 } | 9920 } |
| 9838 Parser.prototype._isBin = function(expr, kind) { | 9921 Parser.prototype._isBin = function(expr, kind) { |
| 9839 return (expr instanceof BinaryExpression) && expr.get$op().kind == kind; | 9922 return (expr instanceof BinaryExpression) && expr.get$op().kind == kind; |
| 9840 } | 9923 } |
| 9841 Parser.prototype._makeLiteral = function(value) { | 9924 Parser.prototype._makeLiteral = function(value) { |
| 9842 return new LiteralExpression(value, value.span); | 9925 return new LiteralExpression(value, value.span); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10048 } | 10131 } |
| 10049 return type.get$name(); | 10132 return type.get$name(); |
| 10050 } | 10133 } |
| 10051 Parser.prototype._specialIdentifier = function(includeOperators) { | 10134 Parser.prototype._specialIdentifier = function(includeOperators) { |
| 10052 var start = this._peekToken.start; | 10135 var start = this._peekToken.start; |
| 10053 var name; | 10136 var name; |
| 10054 switch (this._peek()) { | 10137 switch (this._peek()) { |
| 10055 case (15): | 10138 case (15): |
| 10056 | 10139 |
| 10057 this._eat((15)); | 10140 this._eat((15)); |
| 10058 this._lang_error("rest no longer supported", this._previousToken.get$span(
)); | 10141 this._error("rest no longer supported", this._previousToken.get$span()); |
| 10059 name = this.identifier().get$name(); | 10142 name = this.identifier().get$name(); |
| 10060 break; | 10143 break; |
| 10061 | 10144 |
| 10062 case (110): | 10145 case (110): |
| 10063 | 10146 |
| 10064 this._eat((110)); | 10147 this._eat((110)); |
| 10065 this._eat((14)); | 10148 this._eat((14)); |
| 10066 name = ("this." + this.identifier().get$name()); | 10149 name = ("this." + this.identifier().get$name()); |
| 10067 break; | 10150 break; |
| 10068 | 10151 |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10357 return this.type.bind(this); | 10440 return this.type.bind(this); |
| 10358 } | 10441 } |
| 10359 Parser.prototype.formalParameter = function(inOptionalBlock) { | 10442 Parser.prototype.formalParameter = function(inOptionalBlock) { |
| 10360 var start = this._peekToken.start; | 10443 var start = this._peekToken.start; |
| 10361 var isThis = false; | 10444 var isThis = false; |
| 10362 var isRest = false; | 10445 var isRest = false; |
| 10363 var di = this.declaredIdentifier(false); | 10446 var di = this.declaredIdentifier(false); |
| 10364 var type = di.get$type(); | 10447 var type = di.get$type(); |
| 10365 var name = di.get$name(); | 10448 var name = di.get$name(); |
| 10366 if ($eq(name)) { | 10449 if ($eq(name)) { |
| 10367 this._lang_error("Formal parameter invalid", this._makeSpan(start)); | 10450 this._error("Formal parameter invalid", this._makeSpan(start)); |
| 10368 } | 10451 } |
| 10369 var value = null; | 10452 var value = null; |
| 10370 if (this._maybeEat((20))) { | 10453 if (this._maybeEat((20))) { |
| 10371 if (!inOptionalBlock) { | 10454 if (!inOptionalBlock) { |
| 10372 this._lang_error("default values only allowed inside [optional] section"); | 10455 this._error("default values only allowed inside [optional] section"); |
| 10373 } | 10456 } |
| 10374 value = this.expression(); | 10457 value = this.expression(); |
| 10375 } | 10458 } |
| 10376 else if (this._peekKind((2))) { | 10459 else if (this._peekKind((2))) { |
| 10377 var formals = this.formalParameterList(); | 10460 var formals = this.formalParameterList(); |
| 10378 var func = new FunctionDefinition(null, type, name, formals, null, null, nul
l, this._makeSpan(start)); | 10461 var func = new FunctionDefinition(null, type, name, formals, null, null, nul
l, this._makeSpan(start)); |
| 10379 type = new FunctionTypeReference(false, func, func.get$span()); | 10462 type = new FunctionTypeReference(false, func, func.get$span()); |
| 10380 } | 10463 } |
| 10381 if (inOptionalBlock && $eq(value)) { | 10464 if (inOptionalBlock && $eq(value)) { |
| 10382 value = this._makeLiteral(Value.fromNull(this._makeSpan(start))); | 10465 value = this._makeLiteral(Value.fromNull(this._makeSpan(start))); |
| 10383 } | 10466 } |
| 10384 return new FormalNode(isThis, isRest, type, name, value, this._makeSpan(start)
); | 10467 return new FormalNode(isThis, isRest, type, name, value, this._makeSpan(start)
); |
| 10385 } | 10468 } |
| 10386 Parser.prototype.formalParameterList = function() { | 10469 Parser.prototype.formalParameterList = function() { |
| 10387 this._eatLeftParen(); | 10470 this._eatLeftParen(); |
| 10388 var formals = []; | 10471 var formals = []; |
| 10389 var inOptionalBlock = false; | 10472 var inOptionalBlock = false; |
| 10390 if (!this._maybeEat((3))) { | 10473 if (!this._maybeEat((3))) { |
| 10391 if (this._maybeEat((4))) { | 10474 if (this._maybeEat((4))) { |
| 10392 inOptionalBlock = true; | 10475 inOptionalBlock = true; |
| 10393 } | 10476 } |
| 10394 formals.add(this.formalParameter(inOptionalBlock)); | 10477 formals.add(this.formalParameter(inOptionalBlock)); |
| 10395 while (this._maybeEat((11))) { | 10478 while (this._maybeEat((11))) { |
| 10396 if (this._maybeEat((4))) { | 10479 if (this._maybeEat((4))) { |
| 10397 if (inOptionalBlock) { | 10480 if (inOptionalBlock) { |
| 10398 this._lang_error("already inside an optional block", this._previousTok
en.get$span()); | 10481 this._error("already inside an optional block", this._previousToken.ge
t$span()); |
| 10399 } | 10482 } |
| 10400 inOptionalBlock = true; | 10483 inOptionalBlock = true; |
| 10401 } | 10484 } |
| 10402 formals.add(this.formalParameter(inOptionalBlock)); | 10485 formals.add(this.formalParameter(inOptionalBlock)); |
| 10403 } | 10486 } |
| 10404 if (inOptionalBlock) { | 10487 if (inOptionalBlock) { |
| 10405 this._eat((5)); | 10488 this._eat((5)); |
| 10406 } | 10489 } |
| 10407 this._eat((3)); | 10490 this._eat((3)); |
| 10408 } | 10491 } |
| 10409 return formals; | 10492 return formals; |
| 10410 } | 10493 } |
| 10411 Parser.prototype.identifierForType = function() { | 10494 Parser.prototype.identifierForType = function() { |
| 10412 var $0; | 10495 var $0; |
| 10413 var tok = this._lang_next(); | 10496 var tok = this._lang_next(); |
| 10414 if (!this._isIdentifier(tok.get$kind())) { | 10497 if (!this._isIdentifier(tok.get$kind())) { |
| 10415 this._lang_error(("expected identifier, but found " + tok), tok.get$span()); | 10498 this._error(("expected identifier, but found " + tok), tok.get$span()); |
| 10416 } | 10499 } |
| 10417 if ((($0 = tok.get$kind()) == null ? null != ((70)) : $0 !== (70)) && tok.get$
kind() != (80)) { | 10500 if ((($0 = tok.get$kind()) == null ? null != ((70)) : $0 !== (70)) && tok.get$
kind() != (80)) { |
| 10418 this._lang_error(("" + tok + " may not be used as a type name"), tok.get$spa
n()); | 10501 this._error(("" + tok + " may not be used as a type name"), tok.get$span()); |
| 10419 } | 10502 } |
| 10420 return new Identifier(tok.get$text(), this._makeSpan(tok.get$start())); | 10503 return new Identifier(tok.get$text(), this._makeSpan(tok.get$start())); |
| 10421 } | 10504 } |
| 10422 Parser.prototype.identifier = function() { | 10505 Parser.prototype.identifier = function() { |
| 10423 var tok = this._lang_next(); | 10506 var tok = this._lang_next(); |
| 10424 if (!this._isIdentifier(tok.get$kind())) { | 10507 if (!this._isIdentifier(tok.get$kind())) { |
| 10425 this._lang_error(("expected identifier, but found " + tok), tok.get$span()); | 10508 this._error(("expected identifier, but found " + tok), tok.get$span()); |
| 10426 } | 10509 } |
| 10427 return new Identifier(tok.get$text(), this._makeSpan(tok.get$start())); | 10510 return new Identifier(tok.get$text(), this._makeSpan(tok.get$start())); |
| 10428 } | 10511 } |
| 10429 Parser.prototype._makeFunction = function(expr, formals, body) { | 10512 Parser.prototype._makeFunction = function(expr, formals, body) { |
| 10430 var name, type; | 10513 var name, type; |
| 10431 if ((expr instanceof VarExpression)) { | 10514 if ((expr instanceof VarExpression)) { |
| 10432 name = expr.get$name(); | 10515 name = expr.get$name(); |
| 10433 type = null; | 10516 type = null; |
| 10434 } | 10517 } |
| 10435 else if ((expr instanceof DeclaredIdentifier)) { | 10518 else if ((expr instanceof DeclaredIdentifier)) { |
| 10436 name = expr.get$name(); | 10519 name = expr.get$name(); |
| 10437 type = expr.get$type(); | 10520 type = expr.get$type(); |
| 10438 if ($eq(name)) { | 10521 if ($eq(name)) { |
| 10439 this._lang_error("expected name and type", expr.get$span()); | 10522 this._error("expected name and type", expr.get$span()); |
| 10440 } | 10523 } |
| 10441 } | 10524 } |
| 10442 else { | 10525 else { |
| 10443 this._lang_error("bad function body", expr.get$span()); | 10526 this._error("bad function body", expr.get$span()); |
| 10444 } | 10527 } |
| 10445 var span = new SourceSpan(expr.get$span().file, expr.get$span().start, body.ge
t$span().end); | 10528 var span = new SourceSpan(expr.get$span().file, expr.get$span().start, body.ge
t$span().end); |
| 10446 var func = new FunctionDefinition(null, type, name, formals, null, null, body,
span); | 10529 var func = new FunctionDefinition(null, type, name, formals, null, null, body,
span); |
| 10447 return new LambdaExpression(func, func.get$span()); | 10530 return new LambdaExpression(func, func.get$span()); |
| 10448 } | 10531 } |
| 10449 Parser.prototype._makeDeclaredIdentifier = function(e) { | 10532 Parser.prototype._makeDeclaredIdentifier = function(e) { |
| 10450 if ((e instanceof VarExpression)) { | 10533 if ((e instanceof VarExpression)) { |
| 10451 return new DeclaredIdentifier(null, e.get$name(), e.get$span()); | 10534 return new DeclaredIdentifier(null, e.get$name(), e.get$span()); |
| 10452 } | 10535 } |
| 10453 else if ((e instanceof DeclaredIdentifier)) { | 10536 else if ((e instanceof DeclaredIdentifier)) { |
| 10454 return e; | 10537 return e; |
| 10455 } | 10538 } |
| 10456 else { | 10539 else { |
| 10457 this._lang_error("expected declared identifier"); | 10540 this._error("expected declared identifier"); |
| 10458 return new DeclaredIdentifier(null, null, e.get$span()); | 10541 return new DeclaredIdentifier(null, null, e.get$span()); |
| 10459 } | 10542 } |
| 10460 } | 10543 } |
| 10461 Parser.prototype._makeLabel = function(expr) { | 10544 Parser.prototype._makeLabel = function(expr) { |
| 10462 if ((expr instanceof VarExpression)) { | 10545 if ((expr instanceof VarExpression)) { |
| 10463 return expr.get$name(); | 10546 return expr.get$name(); |
| 10464 } | 10547 } |
| 10465 else { | 10548 else { |
| 10466 this._errorExpected("label"); | 10549 this._errorExpected("label"); |
| 10467 return null; | 10550 return null; |
| (...skipping 3484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13952 return li.get$library().get$isCore(); | 14035 return li.get$library().get$isCore(); |
| 13953 }) | 14036 }) |
| 13954 )) { | 14037 )) { |
| 13955 library.imports.add(new LibraryImport(this.corelib)); | 14038 library.imports.add(new LibraryImport(this.corelib)); |
| 13956 } | 14039 } |
| 13957 this.libraries.$setindex(filename, library); | 14040 this.libraries.$setindex(filename, library); |
| 13958 this._todo.add(library); | 14041 this._todo.add(library); |
| 13959 if (filename == "dart:dom") { | 14042 if (filename == "dart:dom") { |
| 13960 this.dom = library; | 14043 this.dom = library; |
| 13961 } | 14044 } |
| 14045 else if (filename == "dart:isolate") { |
| 14046 this.isolatelib = library; |
| 14047 } |
| 13962 } | 14048 } |
| 13963 return library; | 14049 return library; |
| 13964 } | 14050 } |
| 13965 World.prototype.process = function() { | 14051 World.prototype.process = function() { |
| 13966 while (this._todo.get$length() > (0)) { | 14052 while (this._todo.get$length() > (0)) { |
| 13967 var todo = this._todo; | 14053 var todo = this._todo; |
| 13968 this._todo = []; | 14054 this._todo = []; |
| 13969 for (var $$i = todo.iterator(); $$i.hasNext(); ) { | 14055 for (var $$i = todo.iterator(); $$i.hasNext(); ) { |
| 13970 var lib = $$i.next(); | 14056 var lib = $$i.next(); |
| 13971 lib.visitSources(); | 14057 lib.visitSources(); |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14267 this.libDir = temp; | 14353 this.libDir = temp; |
| 14268 } | 14354 } |
| 14269 else { | 14355 else { |
| 14270 this.libDir = "lib"; | 14356 this.libDir = "lib"; |
| 14271 } | 14357 } |
| 14272 } | 14358 } |
| 14273 } | 14359 } |
| 14274 // ********** Code for LibraryReader ************** | 14360 // ********** Code for LibraryReader ************** |
| 14275 function LibraryReader() { | 14361 function LibraryReader() { |
| 14276 if ($eq($globals.options.config, "dev")) { | 14362 if ($eq($globals.options.config, "dev")) { |
| 14277 this._specialLibs = _map(["dart:core", joinPaths($globals.options.libDir, "c
orelib.dart"), "dart:coreimpl", joinPaths($globals.options.libDir, "corelib_impl
.dart"), "dart:html", joinPaths($globals.options.libDir, "../../client/html/rele
ase/html.dart"), "dart:htmlimpl", joinPaths($globals.options.libDir, "../../clie
nt/html/release/htmlimpl.dart"), "dart:dom", joinPaths($globals.options.libDir,
"../../client/dom/frog/dom_frog.dart"), "dart:json", joinPaths($globals.options.
libDir, "../../lib/json/json_frog.dart")]); | 14363 this._specialLibs = _map(["dart:core", joinPaths($globals.options.libDir, "c
orelib.dart"), "dart:coreimpl", joinPaths($globals.options.libDir, "corelib_impl
.dart"), "dart:html", joinPaths($globals.options.libDir, "../../client/html/rele
ase/html.dart"), "dart:htmlimpl", joinPaths($globals.options.libDir, "../../clie
nt/html/release/htmlimpl.dart"), "dart:dom", joinPaths($globals.options.libDir,
"../../client/dom/frog/dom_frog.dart"), "dart:json", joinPaths($globals.options.
libDir, "../../lib/json/json_frog.dart"), "dart:isolate", joinPaths($globals.opt
ions.libDir, "../../lib/isolate/isolate_frog.dart")]); |
| 14278 } | 14364 } |
| 14279 else if ($eq($globals.options.config, "sdk")) { | 14365 else if ($eq($globals.options.config, "sdk")) { |
| 14280 this._specialLibs = _map(["dart:core", joinPaths($globals.options.libDir, "c
ore/core_frog.dart"), "dart:coreimpl", joinPaths($globals.options.libDir, "corei
mpl/coreimpl_frog.dart"), "dart:html", joinPaths($globals.options.libDir, "html/
html.dart"), "dart:htmlimpl", joinPaths($globals.options.libDir, "htmlimpl/htmli
mpl.dart"), "dart:dom", joinPaths($globals.options.libDir, "dom/frog/dom_frog.da
rt"), "dart:json", joinPaths($globals.options.libDir, "json/json_frog.dart")]); | 14366 this._specialLibs = _map(["dart:core", joinPaths($globals.options.libDir, "c
ore/core_frog.dart"), "dart:coreimpl", joinPaths($globals.options.libDir, "corei
mpl/coreimpl_frog.dart"), "dart:html", joinPaths($globals.options.libDir, "html/
html.dart"), "dart:htmlimpl", joinPaths($globals.options.libDir, "htmlimpl/htmli
mpl.dart"), "dart:dom", joinPaths($globals.options.libDir, "dom/frog/dom_frog.da
rt"), "dart:json", joinPaths($globals.options.libDir, "json/json_frog.dart"), "d
art:isolate", joinPaths($globals.options.libDir, "isolate/isolate_frog.dart")]); |
| 14281 } | 14367 } |
| 14282 else { | 14368 else { |
| 14283 $globals.world.error(("Invalid configuration " + $globals.options.config)); | 14369 $globals.world.error(("Invalid configuration " + $globals.options.config)); |
| 14284 } | 14370 } |
| 14285 } | 14371 } |
| 14286 LibraryReader.prototype.readFile = function(fullname) { | 14372 LibraryReader.prototype.readFile = function(fullname) { |
| 14287 var filename = this._specialLibs.$index(fullname); | 14373 var filename = this._specialLibs.$index(fullname); |
| 14288 if ($eq(filename)) { | 14374 if ($eq(filename)) { |
| 14289 filename = fullname; | 14375 filename = fullname; |
| 14290 } | 14376 } |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14458 var result = target.invokeNoSuchMethod(context, this.baseName, node, this.ar
gs); | 14544 var result = target.invokeNoSuchMethod(context, this.baseName, node, this.ar
gs); |
| 14459 var stub = new VarMethodStub(this.name, null, this.args, $add("return ", res
ult.get$code())); | 14545 var stub = new VarMethodStub(this.name, null, this.args, $add("return ", res
ult.get$code())); |
| 14460 $globals.world.objectType.varStubs.$setindex(stub.get$name(), stub); | 14546 $globals.world.objectType.varStubs.$setindex(stub.get$name(), stub); |
| 14461 } | 14547 } |
| 14462 } | 14548 } |
| 14463 VarMethodSet.prototype.generate = function(code) { | 14549 VarMethodSet.prototype.generate = function(code) { |
| 14464 | 14550 |
| 14465 } | 14551 } |
| 14466 // ********** Code for top level ************** | 14552 // ********** Code for top level ************** |
| 14467 function _otherOperator(jsname, op) { | 14553 function _otherOperator(jsname, op) { |
| 14468 return ("function " + jsname + "(x, y) {\n return (typeof(x) == 'number' && t
ypeof(y) == 'number')\n ? x " + op + " y : x." + jsname + "(y);\n}"); | 14554 return ("function " + jsname + "$complex(x, y) {\n if (typeof(x) == 'number')
{\n $throw(new IllegalArgumentException(y));\n } else if (typeof(x) == 'obj
ect') {\n return x." + jsname + "(y);\n } else {\n $throw(new NoSuchMetho
dException(x, \"operator " + op + "\", [y]));\n }\n}\nfunction " + jsname + "(x
, y) {\n if (typeof(x) == 'number' && typeof(y) == 'number') return x " + op +
" y;\n return " + jsname + "$complex(x, y);\n}"); |
| 14469 } | 14555 } |
| 14470 function map(source, mapper) { | 14556 function map(source, mapper) { |
| 14471 var result = new Array(); | 14557 var result = new Array(); |
| 14472 if (!!(source && source.is$List())) { | 14558 if (!!(source && source.is$List())) { |
| 14473 var list = source; | 14559 var list = source; |
| 14474 result.set$length(list.get$length()); | 14560 result.set$length(list.get$length()); |
| 14475 for (var i = (0); | 14561 for (var i = (0); |
| 14476 i < list.get$length(); i++) { | 14562 i < list.get$length(); i++) { |
| 14477 result.$setindex(i, mapper(list.$index(i))); | 14563 result.$setindex(i, mapper(list.$index(i))); |
| 14478 } | 14564 } |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14585 } | 14671 } |
| 14586 var const$0000 = Object.create(_DeletedKeySentinel.prototype, {}); | 14672 var const$0000 = Object.create(_DeletedKeySentinel.prototype, {}); |
| 14587 var const$0001 = Object.create(NoMoreElementsException.prototype, {}); | 14673 var const$0001 = Object.create(NoMoreElementsException.prototype, {}); |
| 14588 var const$0002 = Object.create(EmptyQueueException.prototype, {}); | 14674 var const$0002 = Object.create(EmptyQueueException.prototype, {}); |
| 14589 var const$0006 = Object.create(IllegalAccessException.prototype, {}); | 14675 var const$0006 = Object.create(IllegalAccessException.prototype, {}); |
| 14590 var const$0007 = ImmutableList.ImmutableList$from$factory([]); | 14676 var const$0007 = ImmutableList.ImmutableList$from$factory([]); |
| 14591 var const$0009 = new JSSyntaxRegExp("^[a-zA-Z]:/"); | 14677 var const$0009 = new JSSyntaxRegExp("^[a-zA-Z]:/"); |
| 14592 var $globals = {}; | 14678 var $globals = {}; |
| 14593 $static_init(); | 14679 $static_init(); |
| 14594 main(); | 14680 main(); |
| OLD | NEW |