|
1 | | -import {assert} from 'rtts_assert/rtts_assert'; |
2 | 1 | export {proxy} from 'rtts_assert/rtts_assert'; |
3 | 2 |
|
4 | 3 | export var Type = Function; |
5 | 4 | export var Math = window.Math; |
6 | 5 |
|
| 6 | +var assertionsEnabled_ = typeof assert !== 'undefined'; |
| 7 | + |
| 8 | +var int; |
7 | 9 | // global assert support, as Dart has it... |
8 | 10 | // TODO: `assert` calls need to be removed in production code! |
9 | | -window.assert = assert; |
| 11 | +if (assertionsEnabled_) { |
| 12 | + window.assert = assert; |
| 13 | + // `int` is not a valid JS type |
| 14 | + int = assert.define('int', function(value) { |
| 15 | + return typeof value === 'number' && value%1 === 0; |
| 16 | + }); |
| 17 | +} else { |
| 18 | + int = {}; |
| 19 | + window.assert = function() {}; |
| 20 | +} |
| 21 | +export {int}; |
10 | 22 |
|
11 | 23 | export class FIELD { |
12 | 24 | constructor(definition) { |
@@ -71,8 +83,8 @@ export class StringWrapper { |
71 | 83 | return s.startsWith(start); |
72 | 84 | } |
73 | 85 |
|
74 | | - static substring(s:string, start:int, end:int = undefined) { |
75 | | - return s.substring(start, end); |
| 86 | + static substring(s:string, start:int, end:int = null) { |
| 87 | + return s.substring(start, end === null ? undefined: end); |
76 | 88 | } |
77 | 89 |
|
78 | 90 | static replaceAllMapped(s:string, from:RegExp, cb:Function): string { |
@@ -157,18 +169,18 @@ export class NumberWrapper { |
157 | 169 | } |
158 | 170 | } |
159 | 171 |
|
160 | | -export function int() {}; |
161 | | -int.assert = function(value) { |
162 | | - return value == null || typeof value == 'number' && value === Math.floor(value); |
| 172 | +var RegExp; |
| 173 | +if (assertionsEnabled_) { |
| 174 | + RegExp = assert.define('RegExp', function(obj) { |
| 175 | + assert(obj).is(assert.structure({ |
| 176 | + single: window.RegExp, |
| 177 | + multiple: window.RegExp |
| 178 | + })); |
| 179 | + }); |
| 180 | +} else { |
| 181 | + RegExp = {}; |
163 | 182 | } |
164 | 183 |
|
165 | | -export var RegExp = assert.define('RegExp', function(obj) { |
166 | | - assert(obj).is(assert.structure({ |
167 | | - single: window.RegExp, |
168 | | - multiple: window.RegExp |
169 | | - })); |
170 | | -}); |
171 | | - |
172 | 184 | export class RegExpWrapper { |
173 | 185 | static create(regExpStr, flags:string = ''):RegExp { |
174 | 186 | flags = flags.replace(/g/g, ''); |
@@ -224,12 +236,7 @@ export function isJsObject(o):boolean { |
224 | 236 | } |
225 | 237 |
|
226 | 238 | export function assertionsEnabled():boolean { |
227 | | - try { |
228 | | - var x:int = "string"; |
229 | | - return false; |
230 | | - } catch (e) { |
231 | | - return true; |
232 | | - } |
| 239 | + return assertionsEnabled_; |
233 | 240 | } |
234 | 241 |
|
235 | 242 | export function print(obj) { |
|
0 commit comments