Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
cd3fed9b
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cd3fed9b
编写于
7月 09, 2019
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix comments
上级
7cefb7cd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
117 addition
and
11 deletion
+117
-11
src/EditorFeatures/CSharpTest/Wrapping/ChainedExpressionWrappingTests.cs
...res/CSharpTest/Wrapping/ChainedExpressionWrappingTests.cs
+107
-0
src/EditorFeatures/Core/Wrapping/ChainedExpression/AbstractChainedExpressionWrapper.cs
...ing/ChainedExpression/AbstractChainedExpressionWrapper.cs
+10
-11
未找到文件。
src/EditorFeatures/CSharpTest/Wrapping/ChainedExpressionWrappingTests.cs
浏览文件 @
cd3fed9b
...
...
@@ -44,6 +44,12 @@ public async Task TestWithEnoughChunks()
[||]the.quick.brown().fox.jumped();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
.jumped();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -61,6 +67,12 @@ public async Task TestGenericNames()
[||]the.quick.brown<int>().fox.jumped<string, bool>();
}
}"
,
@"class C {
void Bar() {
the.quick.brown<int>().fox
.jumped<string, bool>();
}
}"
,
@"class C {
void Bar() {
the.quick.brown<int>().fox
...
...
@@ -78,6 +90,12 @@ public async Task TestElementAccess()
[||]the.quick.brown[1, 2, 3].fox.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the.quick.brown[1, 2, 3].fox
.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the.quick.brown[1, 2, 3].fox
...
...
@@ -96,6 +114,12 @@ public async Task TestUnwrap()
.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the.quick.brown[1, 2, 3].fox
.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the.quick.brown[1, 2, 3].fox.jumped[1][2][3];
...
...
@@ -114,6 +138,12 @@ public async Task TestWrapAndUnwrap()
.fox.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the.quick.brown[1, 2, 3].fox
.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the.quick.brown[1, 2, 3].fox
...
...
@@ -136,6 +166,12 @@ public async Task TestChunkMustHaveDottedSection()
[||]the().quick.brown[1, 2, 3].fox.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the().quick.brown[1, 2, 3].fox
.jumped[1][2][3];
}
}"
,
@"class C {
void Bar() {
the().quick.brown[1, 2, 3].fox
...
...
@@ -153,6 +189,12 @@ public async Task TrailingNonCallIsNotWrapped()
[||]the.quick.brown().fox.jumped().over;
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
.jumped().over;
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -171,6 +213,15 @@ public async Task TrailingLongWrapping1()
}
}"
,
GetIndentionColumn
(
35
),
@"class C {
void Bar() {
the.quick.brown().fox
.jumped().over
.the()
.lazy()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -180,6 +231,13 @@ public async Task TrailingLongWrapping1()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
.jumped().over.the()
.lazy().dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -200,6 +258,15 @@ public async Task TrailingLongWrapping2()
}
}"
,
GetIndentionColumn
(
40
),
@"class C {
void Bar() {
the.quick.brown().fox
.jumped().over
.the()
.lazy()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -209,6 +276,13 @@ public async Task TrailingLongWrapping2()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
.jumped().over.the().lazy()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -228,6 +302,15 @@ public async Task TrailingLongWrapping3()
}
}"
,
GetIndentionColumn
(
60
),
@"class C {
void Bar() {
the.quick.brown().fox
.jumped().over
.the()
.lazy()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox
...
...
@@ -237,6 +320,12 @@ public async Task TrailingLongWrapping3()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox.jumped().over.the().lazy()
.dog();
}
}"
,
@"class C {
void Bar() {
the.quick.brown().fox.jumped().over.the().lazy()
...
...
@@ -254,6 +343,12 @@ public async Task TestInConditionalAccess()
the?.[||]quick.brown().fox.jumped();
}
}"
,
@"class C {
void Bar() {
the?.quick.brown().fox
.jumped();
}
}"
,
@"class C {
void Bar() {
the?.quick.brown().fox
...
...
@@ -271,6 +366,12 @@ public async Task TestInConditionalAccess2()
the?.[||]quick.brown()?.fox.jumped();
}
}"
,
@"class C {
void Bar() {
the?.quick.brown()?.fox
.jumped();
}
}"
,
@"class C {
void Bar() {
the?.quick.brown()?.fox
...
...
@@ -288,6 +389,12 @@ public async Task TestInConditionalAccess3()
the?.[||]quick.brown()?.fox().jumped();
}
}"
,
@"class C {
void Bar() {
the?.quick.brown()?.fox()
.jumped();
}
}"
,
@"class C {
void Bar() {
the?.quick.brown()?.fox()
...
...
src/EditorFeatures/Core/Wrapping/ChainedExpression/AbstractChainedExpressionWrapper.cs
浏览文件 @
cd3fed9b
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using
System
;
using
System.Collections.Immutable
;
using
System.Threading
;
using
System.Threading.Tasks
;
...
...
@@ -13,22 +12,22 @@ namespace Microsoft.CodeAnalysis.Editor.Wrapping.ChainedExpression
/// Finds and wraps 'chained' expressions. For the purpose of this feature, a chained
/// expression is built out of 'chunks' where each chunk is of the form
///
/// <c>
/// <c
ode
>
/// . name (arglist) remainder
/// </c>
/// </c
ode
>
///
/// So, if there are two or more of these like:
///
/// <c>
/// <c
ode
>
/// . name1 (arglist1) remainder1 . name2 (arglist2) remainder2
/// </c>
/// </c
ode
>
///
/// Then this will be wrapped such that the dots align like so:
///
/// <c>
/// <c
ode
>
/// . name1 (arglist1) remainder1
/// . name2 (arglist2) remainder2
/// </c>
/// </c
ode
>
///
/// Note: for the sake of simplicity, (arglist) is used both for the argument list of
/// an InvocationExpression and an ElementAccessExpression.
...
...
@@ -152,20 +151,20 @@ private ImmutableArray<ImmutableArray<SyntaxNodeOrToken>> GetChainChunks(SyntaxN
// Note: the only way to get the `.Foo().Bar().Baz()` case today is in VB in
// a 'with' statement. if we have that, we don't want to wrap it into:
//
// <c>
// <c
ode
>
// with ...
// .Foo()
// .Bar()
// .Baz()
// <
c
>
// <
/code
>
//
// Instead, we want to create
//
// <c>
// <c
ode
>
// with ...
// .Foo().Bar()
// .Baz()
// <
c
>
// <
/code
>
var
currentChunkStart
=
FindNextChunkStart
(
pieces
,
firstChunk
:
true
,
index
:
1
);
if
(
currentChunkStart
<
0
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录