Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET
Roslyn
提交
29dadf0c
R
Roslyn
项目概览
dotNET
/
Roslyn
通知
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,发现更多精彩内容 >>
提交
29dadf0c
编写于
2月 18, 2020
作者:
R
Rikki Gibson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add some parsing and incremental parsing tests
上级
9a88cd45
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
291 addition
and
0 deletion
+291
-0
src/Compilers/CSharp/Test/Syntax/IncrementalParsing/IncrementalParsingTests.cs
...Test/Syntax/IncrementalParsing/IncrementalParsingTests.cs
+217
-0
src/Compilers/CSharp/Test/Syntax/Parsing/StatementAttributeParsingTests.cs
...arp/Test/Syntax/Parsing/StatementAttributeParsingTests.cs
+74
-0
未找到文件。
src/Compilers/CSharp/Test/Syntax/IncrementalParsing/IncrementalParsingTests.cs
浏览文件 @
29dadf0c
...
@@ -2879,6 +2879,223 @@ class A { }
...
@@ -2879,6 +2879,223 @@ class A { }
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
}
[
Fact
]
public
void
Statement_EditAttributeList_01
()
{
var
source
=
@"
class C
{
void M()
{
[Attr]
void local1() { };
}
}
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
"Attr"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
"1, Attr2"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
Statement_EditAttributeList_02
()
{
var
source
=
@"
class C
{
void M()
{
[Attr1]
Method1();
}
}
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"Attr1"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
", Attr2"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
Statement_AddAttributeList
()
{
var
source
=
@"
class C
{
void M()
{
[Attr1]
void local1() { };
}
}
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"[Attr1]"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
" [Attr2]"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditStatementWithAttributes_01
()
{
var
source
=
@"
class C
{
void M()
{
[Attr1]
void local1() { Method(); };
}
}
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"Method("
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
"Arg"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditStatementWithAttributes_02
()
{
var
source
=
@"
class C
{
void M()
{
[Attr1]
Method1();
}
}
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"Method"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
1
);
var
change
=
new
TextChange
(
span
,
"2"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditGlobalStatementWithAttributes_01
()
{
var
source
=
@"
[Attr]
x.y();
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"x.y"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
".z"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditGlobalStatementWithAttributes_02
()
{
var
source
=
@"
[Attr]
if (b) { }
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"if (b) { }"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
" if (c) { }"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditGlobalStatementWithAttributes_03
()
{
var
source
=
@"
[Attr]
if (b) { }
"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
@"if (b) { }"
;
var
span
=
new
TextSpan
(
source
.
IndexOf
(
substring
)
+
substring
.
Length
,
0
);
var
change
=
new
TextChange
(
span
,
" else (c) { }"
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditNestedStatementWithAttributes_01
()
{
var
source
=
"{ [Goo]Goo(); [Goo]Goo(); [Goo]Goo(); }"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
span
=
new
TextSpan
(
start
:
0
,
length
:
1
);
// delete first character
var
change
=
new
TextChange
(
span
,
""
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditNestedStatementWithAttributes_02
()
{
var
source
=
"{ [Goo]Goo(); [Goo]Goo(); [Goo]Goo(); }"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
span
=
new
TextSpan
(
start
:
0
,
length
:
0
);
var
change
=
new
TextChange
(
span
,
"{ "
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
[
Fact
]
public
void
EditNestedStatementWithAttributes_03
()
{
var
source
=
"class C { void M() { Goo[Goo] [Goo]if(Goo) { } } }"
;
var
tree
=
SyntaxFactory
.
ParseSyntaxTree
(
source
);
var
text
=
tree
.
GetText
();
var
substring
=
"Goo[Goo]"
;
var
span
=
new
TextSpan
(
start
:
source
.
IndexOf
(
substring
),
length
:
3
);
// Goo[Goo] -> [Goo]
var
change
=
new
TextChange
(
span
,
""
);
text
=
text
.
WithChanges
(
change
);
tree
=
tree
.
WithChangedText
(
text
);
var
fullTree
=
SyntaxFactory
.
ParseSyntaxTree
(
text
.
ToString
());
WalkTreeAndVerify
(
tree
.
GetCompilationUnitRoot
(),
fullTree
.
GetCompilationUnitRoot
());
}
#
endregion
#
endregion
#
region
Helper
functions
#
region
Helper
functions
...
...
src/Compilers/CSharp/Test/Syntax/Parsing/StatementAttributeParsingTests.cs
浏览文件 @
29dadf0c
...
@@ -7365,5 +7365,79 @@ async void Goo(System.IAsyncDisposable d)
...
@@ -7365,5 +7365,79 @@ async void Goo(System.IAsyncDisposable d)
// [A]await using var i = d;
// [A]await using var i = d;
Diagnostic
(
ErrorCode
.
ERR_PredefinedTypeNotFound
,
"await"
).
WithArguments
(
"System.IAsyncDisposable"
).
WithLocation
(
6
,
12
));
Diagnostic
(
ErrorCode
.
ERR_PredefinedTypeNotFound
,
"await"
).
WithArguments
(
"System.IAsyncDisposable"
).
WithLocation
(
6
,
12
));
}
}
[
Fact
]
public
void
AttrDeclOnStatementWhereMemberExpected
()
{
UsingTree
(
@"
class C
{
[Attr] x.y();
}
"
);
N
(
SyntaxKind
.
CompilationUnit
);
{
N
(
SyntaxKind
.
ClassDeclaration
);
{
N
(
SyntaxKind
.
ClassKeyword
);
N
(
SyntaxKind
.
IdentifierToken
,
"C"
);
N
(
SyntaxKind
.
OpenBraceToken
);
N
(
SyntaxKind
.
IncompleteMember
);
{
N
(
SyntaxKind
.
AttributeList
);
{
N
(
SyntaxKind
.
OpenBracketToken
);
N
(
SyntaxKind
.
Attribute
);
{
N
(
SyntaxKind
.
IdentifierName
);
{
N
(
SyntaxKind
.
IdentifierToken
,
"Attr"
);
}
}
N
(
SyntaxKind
.
CloseBracketToken
);
}
N
(
SyntaxKind
.
QualifiedName
);
{
N
(
SyntaxKind
.
IdentifierName
);
{
N
(
SyntaxKind
.
IdentifierToken
,
"x"
);
}
N
(
SyntaxKind
.
DotToken
);
N
(
SyntaxKind
.
IdentifierName
);
{
N
(
SyntaxKind
.
IdentifierToken
,
"y"
);
}
}
}
N
(
SyntaxKind
.
IncompleteMember
);
{
N
(
SyntaxKind
.
TupleType
);
{
N
(
SyntaxKind
.
OpenParenToken
);
M
(
SyntaxKind
.
TupleElement
);
{
M
(
SyntaxKind
.
IdentifierName
);
{
M
(
SyntaxKind
.
IdentifierToken
);
}
}
M
(
SyntaxKind
.
CommaToken
);
M
(
SyntaxKind
.
TupleElement
);
{
M
(
SyntaxKind
.
IdentifierName
);
{
M
(
SyntaxKind
.
IdentifierToken
);
}
}
N
(
SyntaxKind
.
CloseParenToken
);
}
}
N
(
SyntaxKind
.
CloseBraceToken
);
}
N
(
SyntaxKind
.
EndOfFileToken
);
}
EOF
();
}
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录