Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
a4ead5c9
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4ead5c9
编写于
4月 16, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make service collection map-ish
上级
d1ea6b2a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
7 deletion
+14
-7
src/vs/platform/instantiation/common/instantiation.ts
src/vs/platform/instantiation/common/instantiation.ts
+10
-3
src/vs/platform/instantiation/test/common/instantiationService.test.ts
...rm/instantiation/test/common/instantiationService.test.ts
+4
-4
未找到文件。
src/vs/platform/instantiation/common/instantiation.ts
浏览文件 @
a4ead5c9
...
...
@@ -105,7 +105,7 @@ export interface IFunctionSignature8<A1, A2, A3, A4, A5, A6, A7, A8, R> {
}
export
interface
IServiceCollection
{
add
<
T
>
(
id
:
ServiceIdentifier
<
T
>
,
instanceOrDescriptor
:
T
|
descriptors
.
SyncDescriptor
<
T
>
):
void
;
put
<
T
>
(
id
:
ServiceIdentifier
<
T
>
,
instanceOrDescriptor
:
T
|
descriptors
.
SyncDescriptor
<
T
>
):
void
;
forEach
(
callback
:
(
id
:
ServiceIdentifier
<
any
>
,
instanceOrDescriptor
:
any
)
=>
any
):
void
;
has
(
id
:
ServiceIdentifier
<
any
>
):
boolean
;
}
...
...
@@ -237,11 +237,11 @@ export class ServiceCollection implements IServiceCollection {
constructor
(...
entries
:[
ServiceIdentifier
<
any
>
,
any
][])
{
for
(
let
entry
of
entries
)
{
this
.
add
(
entry
[
0
],
entry
[
1
]);
this
.
put
(
entry
[
0
],
entry
[
1
]);
}
}
add
<
T
>
(
id
:
ServiceIdentifier
<
T
>
,
instanceOrDescriptor
:
T
|
descriptors
.
SyncDescriptor
<
T
>
):
void
{
put
<
T
>
(
id
:
ServiceIdentifier
<
T
>
,
instanceOrDescriptor
:
T
|
descriptors
.
SyncDescriptor
<
T
>
):
void
{
const
entry
:
Entry
=
[
id
,
instanceOrDescriptor
];
const
idx
=
~
binarySearch
(
this
.
_entries
,
entry
,
ServiceCollection
.
_entryCompare
);
if
(
idx
<
0
)
{
...
...
@@ -261,6 +261,13 @@ export class ServiceCollection implements IServiceCollection {
return
binarySearch
(
this
.
_entries
,
<
Entry
>
[
id
,],
ServiceCollection
.
_entryCompare
)
>=
0
;
}
get
<
T
>
(
id
:
ServiceIdentifier
<
T
>
):
T
|
descriptors
.
SyncDescriptor
<
T
>
{
const
idx
=
binarySearch
(
this
.
_entries
,
<
Entry
>
[
id
,],
ServiceCollection
.
_entryCompare
);
if
(
idx
>=
0
)
{
return
this
.
_entries
[
idx
][
1
];
}
}
private
static
_entryCompare
(
a
:
Entry
,
b
:
Entry
):
number
{
const
_a
=
_util
.
getServiceId
(
a
[
0
]);
const
_b
=
_util
.
getServiceId
(
b
[
0
]);
...
...
src/vs/platform/instantiation/test/common/instantiationService.test.ts
浏览文件 @
a4ead5c9
...
...
@@ -126,16 +126,16 @@ suite('Instantiation Service', () => {
test
(
'
service collection, cannot overwrite
'
,
function
()
{
let
collection
=
new
instantiation
.
ServiceCollection
();
collection
.
add
(
IService1
,
null
);
assert
.
throws
(()
=>
collection
.
add
(
IService1
,
null
));
collection
.
put
(
IService1
,
null
);
assert
.
throws
(()
=>
collection
.
put
(
IService1
,
null
));
});
test
(
'
service collection, add/has
'
,
function
()
{
let
collection
=
new
instantiation
.
ServiceCollection
();
collection
.
add
(
IService1
,
null
);
collection
.
put
(
IService1
,
null
);
assert
.
ok
(
collection
.
has
(
IService1
));
collection
.
add
(
IService2
,
null
);
collection
.
put
(
IService2
,
null
);
assert
.
ok
(
collection
.
has
(
IService1
));
assert
.
ok
(
collection
.
has
(
IService2
));
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录