From 32adbb82c900b7bf8ffae22d32c16ecddb38e99c Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Fri, 25 Oct 2013 16:50:17 +0400 Subject: [PATCH] Created Disposable (for ix.js); Removed generative type recursion Via TS spec #3.5.2 generative recursive are disallowed (restriction will be removed in the future), so added workaround. Disposable interface extracted from Enumerator --- ix.js/l2o.d.ts | 59 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/ix.js/l2o.d.ts b/ix.js/l2o.d.ts index be5f43c2f5..8177376e13 100644 --- a/ix.js/l2o.d.ts +++ b/ix.js/l2o.d.ts @@ -3,10 +3,13 @@ // Definitions by: Igor Oleinikov declare module Ix { - export interface Enumerator { + export interface Disposable { + dispose(); + } + + export interface Enumerator extends Disposable { moveNext(): boolean; getCurrent(): T; - dispose(); } export interface EnumeratorStatic { @@ -84,8 +87,11 @@ declare module Ix { groupBy( keySelector: (item: T) => TKey, elementSelector: (item: T) => TElement): Grouping; - groupBy( - keySelector: (item: T) => TKey): Grouping; + // spec 3.5.2, waiting for restriction on generative recursion removal + /*groupBy( + keySelector: (item: T) => TKey): Grouping;*/ + groupBy( + keySelector: (item: T) => TKey): Grouping; // if need to set comparer without resultSelector groupBy( @@ -100,11 +106,17 @@ declare module Ix { resultSelector: (key: TKey, values: Enumerable) => TResult, comparer?: EqualityComparer): Enumerable; // if need to set comparer without elementSelector and resultSelector - groupBy( + // spec 3.5.2, waiting for restriction on generative recursion removal + /*groupBy( keySelector: (item: T) => TKey, _: boolean, __: boolean, - comparer: EqualityComparer): Grouping; + comparer: EqualityComparer): Grouping;*/ + groupBy( + keySelector: (item: T) => TKey, + _: boolean, + __: boolean, + comparer: EqualityComparer): Grouping; groupJoin( inner: Enumerable, @@ -160,25 +172,41 @@ declare module Ix { keySelector: (item: T) => TKey, elementSelector: (item: T) => TValue, comparer?: EqualityComparer): Dictionary; - toDictionary( - keySelector: (item: T) => TKey): Dictionary; + // spec 3.5.2, waiting for restriction on generative recursion removal + /*toDictionary( + keySelector: (item: T) => TKey): Dictionary;*/ + toDictionary( + keySelector: (item: T) => TKey): Dictionary; // if need to set comparer without elementSelector - toDictionary( + // spec 3.5.2, waiting for restriction on generative recursion removal + /*toDictionary( keySelector: (item: T) => TKey, _: boolean, - comparer: EqualityComparer): Dictionary; + comparer: EqualityComparer): Dictionary;*/ + toDictionary( + keySelector: (item: T) => TKey, + _: boolean, + comparer: EqualityComparer): Dictionary; toLookup( keySelector: (item: T) => TKey, elementSelector: (item: T) => TValue, comparer?: EqualityComparer): Lookup; - toLookup( - keySelector: (item: T) => TKey): Lookup; + // spec 3.5.2, waiting for restriction on generative recursion removal + /*toLookup( + keySelector: (item: T) => TKey): Lookup;*/ + toLookup( + keySelector: (item: T) => TKey): Lookup; // if need to set comparer without elementSelector - toLookup( + // spec 3.5.2, waiting for restriction on generative recursion removal + /*toLookup( keySelector: (item: T) => TKey, _: boolean, - comparer: EqualityComparer): Lookup; + comparer: EqualityComparer): Lookup;*/ + toLookup( + keySelector: (item: T) => TKey, + _: boolean, + comparer: EqualityComparer): Lookup; where(selector: EnumerablePredicate, thisArg?: any): Enumerable; filter(selector: EnumerablePredicate, thisArg?: any): Enumerable; @@ -199,6 +227,7 @@ declare module Ix { constructor(capacity, comparer?: EqualityComparer); toEnumerable(): Enumerable>; + add(key: TKey, value: TValue): void; remove(key: TKey): boolean; clear(): void; @@ -216,7 +245,7 @@ declare module Ix { } export interface Lookup { - toEnumerable(): Enumerable>; + toEnumerable(): Enumerable>; has(key: TKey): boolean; length(): number; get(key: TKey): Enumerable;