| Index: sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
|
| diff --git a/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart b/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
|
| index 851be055ed0328e3765ed6e1ad5784a89a0618e4..c9735cebd79bd4e8b943d915f3874d25212e8747 100644
|
| --- a/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
|
| +++ b/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart
|
| @@ -199,8 +199,12 @@ class SqlResultSetRowList extends Object with ListMixin<Map>, ImmutableListMixin
|
| @DocsEditable
|
| int get length => JS("int", "#.length", this);
|
|
|
| - Map operator[](int index) => this.item(index);
|
| -
|
| + Map operator[](int index) {
|
| + if (JS("bool", "# >>> 0 !== # || # >= #", index,
|
| + index, index, length))
|
| + throw new RangeError.range(index, 0, length);
|
| + return this.item(index);
|
| + }
|
| void operator[]=(int index, Map value) {
|
| throw new UnsupportedError("Cannot assign element of immutable List.");
|
| }
|
| @@ -212,6 +216,31 @@ class SqlResultSetRowList extends Object with ListMixin<Map>, ImmutableListMixin
|
| throw new UnsupportedError("Cannot resize immutable List.");
|
| }
|
|
|
| + Map get first {
|
| + if (this.length > 0) {
|
| + return JS('Map', '#[0]', this);
|
| + }
|
| + throw new StateError("No elements");
|
| + }
|
| +
|
| + Map get last {
|
| + int len = this.length;
|
| + if (len > 0) {
|
| + return JS('Map', '#[#]', this, len - 1);
|
| + }
|
| + throw new StateError("No elements");
|
| + }
|
| +
|
| + Map get single {
|
| + int len = this.length;
|
| + if (len == 1) {
|
| + return JS('Map', '#[0]', this);
|
| + }
|
| + if (len == 0) throw new StateError("No elements");
|
| + throw new StateError("More than one element");
|
| + }
|
| +
|
| + Map elementAt(int index) => this[index];
|
| // -- end List<Map> mixins.
|
|
|
| @DomName('SQLResultSetRowList.item')
|
|
|