Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
000637b7
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
000637b7
编写于
4月 06, 2020
作者:
J
João Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove old iterator and utils
上级
382cb345
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
2 addition
and
223 deletion
+2
-223
src/vs/base/common/iterator.ts
src/vs/base/common/iterator.ts
+0
-209
src/vs/base/common/map.ts
src/vs/base/common/map.ts
+1
-1
src/vs/base/test/common/iterator.test.ts
src/vs/base/test/common/iterator.test.ts
+1
-13
未找到文件。
src/vs/base/common/iterator.ts
浏览文件 @
000637b7
...
...
@@ -3,37 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
export
interface
IteratorDefinedResult
<
T
>
{
readonly
done
:
false
;
readonly
value
:
T
;
}
export
interface
IteratorUndefinedResult
{
readonly
done
:
true
;
readonly
value
:
undefined
;
}
export
const
FIN
:
IteratorUndefinedResult
=
{
done
:
true
,
value
:
undefined
};
export
type
IteratorResult
<
T
>
=
IteratorDefinedResult
<
T
>
|
IteratorUndefinedResult
;
export
interface
Iterator
<
T
>
{
next
():
IteratorResult
<
T
>
;
}
interface
NativeIteratorYieldResult
<
TYield
>
{
done
?:
false
;
value
:
TYield
;
}
interface
NativeIteratorReturnResult
<
TReturn
>
{
done
:
true
;
value
:
TReturn
;
}
type
NativeIteratorResult
<
T
,
TReturn
=
any
>
=
NativeIteratorYieldResult
<
T
>
|
NativeIteratorReturnResult
<
TReturn
>
;
export
interface
NativeIterator
<
T
>
{
next
():
NativeIteratorResult
<
T
>
;
}
export
namespace
Iterable
{
const
_empty
:
Iterable
<
any
>
=
Object
.
freeze
([]);
...
...
@@ -107,184 +76,6 @@ export namespace Iterable {
}
}
export
module
Iterator
{
const
_empty
:
Iterator
<
any
>
=
{
next
()
{
return
FIN
;
}
};
export
function
empty
<
T
>
():
Iterator
<
T
>
{
return
_empty
;
}
export
function
single
<
T
>
(
value
:
T
):
Iterator
<
T
>
{
let
done
=
false
;
return
{
next
():
IteratorResult
<
T
>
{
if
(
done
)
{
return
FIN
;
}
done
=
true
;
return
{
done
:
false
,
value
};
}
};
}
export
function
fromArray
<
T
>
(
array
:
ReadonlyArray
<
T
>
,
index
=
0
,
length
=
array
.
length
):
Iterator
<
T
>
{
return
{
next
():
IteratorResult
<
T
>
{
if
(
index
>=
length
)
{
return
FIN
;
}
return
{
done
:
false
,
value
:
array
[
index
++
]
};
}
};
}
export
function
fromNativeIterator
<
T
>
(
it
:
NativeIterator
<
T
>
):
Iterator
<
T
>
{
return
{
next
():
IteratorResult
<
T
>
{
const
result
=
it
.
next
();
if
(
result
.
done
)
{
return
FIN
;
}
return
{
done
:
false
,
value
:
result
.
value
};
}
};
}
export
function
from
<
T
>
(
elements
:
Iterator
<
T
>
|
T
[]
|
undefined
):
Iterator
<
T
>
{
if
(
!
elements
)
{
return
Iterator
.
empty
();
}
else
if
(
Array
.
isArray
(
elements
))
{
return
Iterator
.
fromArray
(
elements
);
}
else
{
return
elements
;
}
}
export
function
map
<
T
,
R
>
(
iterator
:
Iterator
<
T
>
,
fn
:
(
t
:
T
)
=>
R
):
Iterator
<
R
>
{
return
{
next
()
{
const
element
=
iterator
.
next
();
if
(
element
.
done
)
{
return
FIN
;
}
else
{
return
{
done
:
false
,
value
:
fn
(
element
.
value
)
};
}
}
};
}
export
function
filter
<
T
>
(
iterator
:
Iterator
<
T
>
,
fn
:
(
t
:
T
)
=>
boolean
):
Iterator
<
T
>
{
return
{
next
()
{
while
(
true
)
{
const
element
=
iterator
.
next
();
if
(
element
.
done
)
{
return
FIN
;
}
if
(
fn
(
element
.
value
))
{
return
{
done
:
false
,
value
:
element
.
value
};
}
}
}
};
}
export
function
some
<
T
>
(
iterator
:
Iterator
<
T
>
|
NativeIterator
<
T
>
,
fn
:
(
t
:
T
)
=>
boolean
):
boolean
{
while
(
true
)
{
const
element
=
iterator
.
next
();
if
(
element
.
done
)
{
return
false
;
}
if
(
fn
(
element
.
value
))
{
return
true
;
}
}
}
export
function
forEach
<
T
>
(
iterator
:
Iterator
<
T
>
,
fn
:
(
t
:
T
)
=>
void
):
void
{
for
(
let
next
=
iterator
.
next
();
!
next
.
done
;
next
=
iterator
.
next
())
{
fn
(
next
.
value
);
}
}
export
function
collect
<
T
>
(
iterator
:
Iterator
<
T
>
,
atMost
:
number
=
Number
.
POSITIVE_INFINITY
):
T
[]
{
const
result
:
T
[]
=
[];
if
(
atMost
===
0
)
{
return
result
;
}
let
i
=
0
;
for
(
let
next
=
iterator
.
next
();
!
next
.
done
;
next
=
iterator
.
next
())
{
result
.
push
(
next
.
value
);
if
(
++
i
>=
atMost
)
{
break
;
}
}
return
result
;
}
export
function
concat
<
T
>
(...
iterators
:
Iterator
<
T
>
[]):
Iterator
<
T
>
{
let
i
=
0
;
return
{
next
()
{
if
(
i
>=
iterators
.
length
)
{
return
FIN
;
}
const
iterator
=
iterators
[
i
];
const
result
=
iterator
.
next
();
if
(
result
.
done
)
{
i
++
;
return
this
.
next
();
}
return
result
;
}
};
}
export
function
chain
<
T
>
(
iterator
:
Iterator
<
T
>
):
ChainableIterator
<
T
>
{
return
new
ChainableIterator
(
iterator
);
}
}
export
class
ChainableIterator
<
T
>
implements
Iterator
<
T
>
{
constructor
(
private
it
:
Iterator
<
T
>
)
{
}
next
():
IteratorResult
<
T
>
{
return
this
.
it
.
next
();
}
map
<
R
>
(
fn
:
(
t
:
T
)
=>
R
):
ChainableIterator
<
R
>
{
return
new
ChainableIterator
(
Iterator
.
map
(
this
.
it
,
fn
));
}
filter
(
fn
:
(
t
:
T
)
=>
boolean
):
ChainableIterator
<
T
>
{
return
new
ChainableIterator
(
Iterator
.
filter
(
this
.
it
,
fn
));
}
}
export
type
ISequence
<
T
>
=
Iterator
<
T
>
|
T
[];
export
function
getSequenceIterator
<
T
>
(
arg
:
ISequence
<
T
>
|
undefined
):
Iterator
<
T
>
{
if
(
Array
.
isArray
(
arg
))
{
return
Iterator
.
fromArray
(
arg
);
}
else
if
(
!
arg
)
{
return
Iterator
.
empty
();
}
else
{
return
arg
;
}
}
export
interface
INextIterator
<
T
>
{
next
():
T
|
null
;
}
...
...
src/vs/base/common/map.ts
浏览文件 @
000637b7
...
...
@@ -369,7 +369,7 @@ export class TernarySearchTree<E> {
this
.
_forEach
(
node
,
value
=>
data
.
push
(
value
));
}
if
(
idx
>=
data
.
length
)
{
return
FIN
;
return
{
done
:
true
,
value
:
undefined
}
;
}
if
(
!
res
)
{
...
...
src/vs/base/test/common/iterator.test.ts
浏览文件 @
000637b7
...
...
@@ -4,19 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
Iterator
,
Iterable
}
from
'
vs/base/common/iterator
'
;
suite
(
'
Iterator
'
,
()
=>
{
test
(
'
concat
'
,
()
=>
{
const
first
=
Iterator
.
fromArray
([
1
,
2
,
3
]);
const
second
=
Iterator
.
fromArray
([
4
,
5
,
6
]);
const
third
=
Iterator
.
fromArray
([
7
,
8
,
9
]);
const
actualIterator
=
Iterator
.
concat
(
first
,
second
,
third
);
const
actual
=
Iterator
.
collect
(
actualIterator
);
assert
.
deepEqual
(
actual
,
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
]);
});
});
import
{
Iterable
}
from
'
vs/base/common/iterator
'
;
suite
(
'
Iterable
'
,
function
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录