Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
b742d758
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,发现更多精彩内容 >>
未验证
提交
b742d758
编写于
5月 05, 2020
作者:
J
Jason Malinowski
提交者:
GitHub
5月 05, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #43527 from jasonmalinowski/fix-api-review-issues
Fix API issues identified during API review
上级
ca0a72ff
7a2ffe9b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
75 addition
and
8 deletion
+75
-8
src/Workspaces/Core/Portable/PublicAPI.Unshipped.txt
src/Workspaces/Core/Portable/PublicAPI.Unshipped.txt
+2
-0
src/Workspaces/Core/Portable/Workspace/Solution/Project.cs
src/Workspaces/Core/Portable/Workspace/Solution/Project.cs
+37
-8
src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs
src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs
+36
-0
未找到文件。
src/Workspaces/Core/Portable/PublicAPI.Unshipped.txt
浏览文件 @
b742d758
...
@@ -7,6 +7,8 @@ Microsoft.CodeAnalysis.CompilationOutputFilePaths.AssemblyPath.get -> string
...
@@ -7,6 +7,8 @@ Microsoft.CodeAnalysis.CompilationOutputFilePaths.AssemblyPath.get -> string
Microsoft.CodeAnalysis.CompilationOutputFilePaths.Equals(Microsoft.CodeAnalysis.CompilationOutputFilePaths other) -> bool
Microsoft.CodeAnalysis.CompilationOutputFilePaths.Equals(Microsoft.CodeAnalysis.CompilationOutputFilePaths other) -> bool
Microsoft.CodeAnalysis.CompilationOutputFilePaths.WithAssemblyPath(string path) -> Microsoft.CodeAnalysis.CompilationOutputFilePaths
Microsoft.CodeAnalysis.CompilationOutputFilePaths.WithAssemblyPath(string path) -> Microsoft.CodeAnalysis.CompilationOutputFilePaths
Microsoft.CodeAnalysis.Project.CompilationOutputFilePaths.get -> Microsoft.CodeAnalysis.CompilationOutputFilePaths
Microsoft.CodeAnalysis.Project.CompilationOutputFilePaths.get -> Microsoft.CodeAnalysis.CompilationOutputFilePaths
Microsoft.CodeAnalysis.Project.RemoveAdditionalDocuments(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.DocumentId> documentIds) -> Microsoft.CodeAnalysis.Project
Microsoft.CodeAnalysis.Project.RemoveAnalyzerConfigDocuments(System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.DocumentId> documentIds) -> Microsoft.CodeAnalysis.Project
Microsoft.CodeAnalysis.ProjectInfo.CompilationOutputFilePaths.get -> Microsoft.CodeAnalysis.CompilationOutputFilePaths
Microsoft.CodeAnalysis.ProjectInfo.CompilationOutputFilePaths.get -> Microsoft.CodeAnalysis.CompilationOutputFilePaths
Microsoft.CodeAnalysis.ProjectInfo.WithCompilationOutputFilePaths(in Microsoft.CodeAnalysis.CompilationOutputFilePaths paths) -> Microsoft.CodeAnalysis.ProjectInfo
Microsoft.CodeAnalysis.ProjectInfo.WithCompilationOutputFilePaths(in Microsoft.CodeAnalysis.CompilationOutputFilePaths paths) -> Microsoft.CodeAnalysis.ProjectInfo
Microsoft.CodeAnalysis.Rename.Renamer.RenameDocumentAction
Microsoft.CodeAnalysis.Rename.Renamer.RenameDocumentAction
...
...
src/Workspaces/Core/Portable/Workspace/Solution/Project.cs
浏览文件 @
b742d758
...
@@ -555,14 +555,7 @@ public Project RemoveDocument(DocumentId documentId)
...
@@ -555,14 +555,7 @@ public Project RemoveDocument(DocumentId documentId)
/// </summary>
/// </summary>
public
Project
RemoveDocuments
(
ImmutableArray
<
DocumentId
>
documentIds
)
public
Project
RemoveDocuments
(
ImmutableArray
<
DocumentId
>
documentIds
)
{
{
foreach
(
var
documentId
in
documentIds
)
CheckIdsContainedInProject
(
documentIds
);
{
// Handling of null entries is handled by Solution.RemoveDocuments.
if
(
documentId
?.
ProjectId
!=
this
.
Id
)
{
throw
new
ArgumentException
(
string
.
Format
(
WorkspacesResources
.
_0_is_in_a_different_project
,
documentId
));
}
}
return
this
.
Solution
.
RemoveDocuments
(
documentIds
).
GetRequiredProject
(
this
.
Id
);
return
this
.
Solution
.
RemoveDocuments
(
documentIds
).
GetRequiredProject
(
this
.
Id
);
}
}
...
@@ -571,14 +564,50 @@ public Project RemoveDocuments(ImmutableArray<DocumentId> documentIds)
...
@@ -571,14 +564,50 @@ public Project RemoveDocuments(ImmutableArray<DocumentId> documentIds)
/// Creates a new instance of this project updated to no longer include the specified additional document.
/// Creates a new instance of this project updated to no longer include the specified additional document.
/// </summary>
/// </summary>
public
Project
RemoveAdditionalDocument
(
DocumentId
documentId
)
public
Project
RemoveAdditionalDocument
(
DocumentId
documentId
)
// NOTE: the method isn't checking if documentId belongs to the project. This probably should be done, but may be a compat change.
// https://github.com/dotnet/roslyn/issues/41211 tracks this investigation.
=>
this
.
Solution
.
RemoveAdditionalDocument
(
documentId
).
GetProject
(
this
.
Id
)!;
=>
this
.
Solution
.
RemoveAdditionalDocument
(
documentId
).
GetProject
(
this
.
Id
)!;
/// <summary>
/// Creates a new instance of this project updated to no longer include the specified additional documents.
/// </summary>
public
Project
RemoveAdditionalDocuments
(
ImmutableArray
<
DocumentId
>
documentIds
)
{
CheckIdsContainedInProject
(
documentIds
);
return
this
.
Solution
.
RemoveAdditionalDocuments
(
documentIds
).
GetRequiredProject
(
this
.
Id
);
}
/// <summary>
/// <summary>
/// Creates a new instance of this project updated to no longer include the specified analyzer config document.
/// Creates a new instance of this project updated to no longer include the specified analyzer config document.
/// </summary>
/// </summary>
public
Project
RemoveAnalyzerConfigDocument
(
DocumentId
documentId
)
public
Project
RemoveAnalyzerConfigDocument
(
DocumentId
documentId
)
// NOTE: the method isn't checking if documentId belongs to the project. This probably should be done, but may be a compat change.
// https://github.com/dotnet/roslyn/issues/41211 tracks this investigation.
=>
this
.
Solution
.
RemoveAnalyzerConfigDocument
(
documentId
).
GetProject
(
this
.
Id
)!;
=>
this
.
Solution
.
RemoveAnalyzerConfigDocument
(
documentId
).
GetProject
(
this
.
Id
)!;
/// <summary>
/// Creates a new solution instance that no longer includes the specified <see cref="AnalyzerConfigDocument"/>s.
/// </summary>
public
Project
RemoveAnalyzerConfigDocuments
(
ImmutableArray
<
DocumentId
>
documentIds
)
{
CheckIdsContainedInProject
(
documentIds
);
return
this
.
Solution
.
RemoveAnalyzerConfigDocuments
(
documentIds
).
GetRequiredProject
(
this
.
Id
);
}
private
void
CheckIdsContainedInProject
(
ImmutableArray
<
DocumentId
>
documentIds
)
{
foreach
(
var
documentId
in
documentIds
)
{
// Dealing with nulls is handled by the caller of this
if
(
documentId
?.
ProjectId
!=
this
.
Id
)
{
throw
new
ArgumentException
(
string
.
Format
(
WorkspacesResources
.
_0_is_in_a_different_project
,
documentId
));
}
}
}
internal
ImmutableDictionary
<
string
,
ReportDiagnostic
>
GetAnalyzerConfigSpecialDiagnosticOptions
()
internal
ImmutableDictionary
<
string
,
ReportDiagnostic
>
GetAnalyzerConfigSpecialDiagnosticOptions
()
=>
_projectState
.
GetAnalyzerConfigSpecialDiagnosticOptions
();
=>
_projectState
.
GetAnalyzerConfigSpecialDiagnosticOptions
();
...
...
src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs
浏览文件 @
b742d758
...
@@ -1251,6 +1251,42 @@ public void RemoveDocumentFromUnrelatedProject()
...
@@ -1251,6 +1251,42 @@ public void RemoveDocumentFromUnrelatedProject()
Assert
.
Throws
<
ArgumentException
>(()
=>
solution
.
GetProject
(
projectId2
).
RemoveDocuments
(
ImmutableArray
.
Create
(
documentInfo1
.
Id
)));
Assert
.
Throws
<
ArgumentException
>(()
=>
solution
.
GetProject
(
projectId2
).
RemoveDocuments
(
ImmutableArray
.
Create
(
documentInfo1
.
Id
)));
}
}
[
Fact
]
public
void
RemoveAdditionalDocumentFromUnrelatedProject
()
{
var
projectId1
=
ProjectId
.
CreateNewId
();
var
projectId2
=
ProjectId
.
CreateNewId
();
var
documentInfo1
=
DocumentInfo
.
Create
(
DocumentId
.
CreateNewId
(
projectId1
),
"file1.txt"
);
var
solution
=
CreateSolution
()
.
AddProject
(
projectId1
,
"project1"
,
"project1.dll"
,
LanguageNames
.
CSharp
)
.
AddProject
(
projectId2
,
"project2"
,
"project2.dll"
,
LanguageNames
.
CSharp
)
.
AddAdditionalDocument
(
documentInfo1
);
// This should throw if we're removing one document from the wrong project. Right now we don't test the RemoveAdditionalDocument
// API due to https://github.com/dotnet/roslyn/issues/41211.
Assert
.
Throws
<
ArgumentException
>(()
=>
solution
.
GetProject
(
projectId2
).
RemoveAdditionalDocuments
(
ImmutableArray
.
Create
(
documentInfo1
.
Id
)));
}
[
Fact
]
public
void
RemoveAnalyzerConfigDocumentFromUnrelatedProject
()
{
var
projectId1
=
ProjectId
.
CreateNewId
();
var
projectId2
=
ProjectId
.
CreateNewId
();
var
documentInfo1
=
DocumentInfo
.
Create
(
DocumentId
.
CreateNewId
(
projectId1
),
".editorconfig"
);
var
solution
=
CreateSolution
()
.
AddProject
(
projectId1
,
"project1"
,
"project1.dll"
,
LanguageNames
.
CSharp
)
.
AddProject
(
projectId2
,
"project2"
,
"project2.dll"
,
LanguageNames
.
CSharp
)
.
AddAnalyzerConfigDocuments
(
ImmutableArray
.
Create
(
documentInfo1
));
// This should throw if we're removing one document from the wrong project. Right now we don't test the RemoveAdditionalDocument
// API due to https://github.com/dotnet/roslyn/issues/41211.
Assert
.
Throws
<
ArgumentException
>(()
=>
solution
.
GetProject
(
projectId2
).
RemoveAnalyzerConfigDocuments
(
ImmutableArray
.
Create
(
documentInfo1
.
Id
)));
}
[
Fact
]
[
Fact
]
public
async
Task
TestOneCSharpProjectAsync
()
public
async
Task
TestOneCSharpProjectAsync
()
{
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录