Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
87c75136
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,体验更适合开发者的 AI 搜索 >>
提交
87c75136
编写于
12月 08, 2020
作者:
D
David Wengier
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use the same type character that the user already uses in their enum when generating new members
上级
ad294e9c
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
125 addition
and
2 deletion
+125
-2
src/EditorFeatures/CSharpTest/Diagnostics/GenerateEnumMember/GenerateEnumMemberTests.cs
...Diagnostics/GenerateEnumMember/GenerateEnumMemberTests.cs
+96
-0
src/EditorFeatures/VisualBasicTest/Diagnostics/GenerateEnumMember/GenerateEnumMemberTests.vb
...Diagnostics/GenerateEnumMember/GenerateEnumMemberTests.vb
+23
-0
src/Workspaces/CSharp/Portable/CodeGeneration/EnumMemberGenerator.cs
...ces/CSharp/Portable/CodeGeneration/EnumMemberGenerator.cs
+3
-1
src/Workspaces/VisualBasic/Portable/CodeGeneration/EnumMemberGenerator.vb
...isualBasic/Portable/CodeGeneration/EnumMemberGenerator.vb
+3
-1
未找到文件。
src/EditorFeatures/CSharpTest/Diagnostics/GenerateEnumMember/GenerateEnumMemberTests.cs
浏览文件 @
87c75136
...
...
@@ -1690,6 +1690,102 @@ class Program
void Main()
{
E.C }
}"
);
}
[
WorkItem
(
49679
,
"https://github.com/dotnet/roslyn/issues/49679"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsGenerateEnumMember
)]
public
async
Task
TestWithLeftShift_Long
()
{
await
TestInRegularAndScriptAsync
(
@"class Program
{
void Main()
{
Color.[|Blue|];
}
}
enum Color : long
{
Green = 1L << 0
}"
,
@"class Program
{
void Main()
{
Color.Blue;
}
}
enum Color : long
{
Green = 1L << 0,
Blue = 1L << 1
}"
);
}
[
WorkItem
(
49679
,
"https://github.com/dotnet/roslyn/issues/49679"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsGenerateEnumMember
)]
public
async
Task
TestWithLeftShift_UInt
()
{
await
TestInRegularAndScriptAsync
(
@"class Program
{
void Main()
{
Color.[|Blue|];
}
}
enum Color : uint
{
Green = 1u << 0
}"
,
@"class Program
{
void Main()
{
Color.Blue;
}
}
enum Color : uint
{
Green = 1u << 0,
Blue = 1u << 1
}"
);
}
[
WorkItem
(
49679
,
"https://github.com/dotnet/roslyn/issues/49679"
)]
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsGenerateEnumMember
)]
public
async
Task
TestWithLeftShift_ULong
()
{
await
TestInRegularAndScriptAsync
(
@"class Program
{
void Main()
{
Color.[|Blue|];
}
}
enum Color : ulong
{
Green = 1UL << 0
}"
,
@"class Program
{
void Main()
{
Color.Blue;
}
}
enum Color : ulong
{
Green = 1UL << 0,
Blue = 1UL << 1
}"
);
}
}
...
...
src/EditorFeatures/VisualBasicTest/Diagnostics/GenerateEnumMember/GenerateEnumMemberTests.vb
浏览文件 @
87c75136
...
...
@@ -1339,5 +1339,28 @@ Enum E As UShort
Y = &H8000US
End Enum"
)
End
Function
<
WorkItem
(
49679
,
"https://github.com/dotnet/roslyn/issues/49679"
)
>
<
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
CodeActionsGenerateEnumMember
)
>
Public
Async
Function
TestWithLeftShift_Long
()
As
Task
Await
TestInRegularAndScriptAsync
(
"Module Program
Sub Main(args As String())
Goo([|Color.Blue|])
End Sub
Enum Color
Green = 1L << 0
End Enum
End Module"
,
"Module Program
Sub Main(args As String())
Goo(Color.Blue)
End Sub
Enum Color
Green = 1L << 0
Blue = 1L << 1
End Enum
End Module"
)
End
Function
End
Class
End
Namespace
src/Workspaces/CSharp/Portable/CodeGeneration/EnumMemberGenerator.cs
浏览文件 @
87c75136
...
...
@@ -123,9 +123,11 @@ private static ExpressionSyntax CreateEnumMemberValue(EnumDeclarationSyntax dest
{
// The user is left shifting ones, stick with that pattern
var
shiftValue
=
IntegerUtilities
.
LogBase2
(
value
);
// Re-use the numericLiteral text so type suffixes match too
return
SyntaxFactory
.
BinaryExpression
(
SyntaxKind
.
LeftShiftExpression
,
SyntaxFactory
.
LiteralExpression
(
SyntaxKind
.
NumericLiteralExpression
,
SyntaxFactory
.
Literal
(
"1"
,
1
)),
SyntaxFactory
.
LiteralExpression
(
SyntaxKind
.
NumericLiteralExpression
,
SyntaxFactory
.
Literal
(
numericLiteral
.
Token
.
Text
,
1
)),
SyntaxFactory
.
LiteralExpression
(
SyntaxKind
.
NumericLiteralExpression
,
SyntaxFactory
.
Literal
(
shiftValue
.
ToString
(),
shiftValue
)));
}
}
...
...
src/Workspaces/VisualBasic/Portable/CodeGeneration/EnumMemberGenerator.vb
浏览文件 @
87c75136
...
...
@@ -93,8 +93,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
If
numericLiteral
.
Token
.
ValueText
=
"1"
Then
' The user is left shifting ones, stick with that pattern
Dim
shiftValue
=
IntegerUtilities
.
LogBase2
(
value
)
' Using the numericLiteral text will ensure the correct type character, ignoring the None that is passed in below
Return
SyntaxFactory
.
LeftShiftExpression
(
left
:
=
SyntaxFactory
.
NumericLiteralExpression
(
SyntaxFactory
.
IntegerLiteralToken
(
"1"
,
LiteralBase
.
Decimal
,
TypeCharacter
.
None
,
1
)),
left
:
=
SyntaxFactory
.
NumericLiteralExpression
(
SyntaxFactory
.
IntegerLiteralToken
(
numericLiteral
.
Token
.
Text
,
LiteralBase
.
Decimal
,
TypeCharacter
.
None
,
1
)),
right
:
=
SyntaxFactory
.
NumericLiteralExpression
(
SyntaxFactory
.
IntegerLiteralToken
(
shiftValue
.
ToString
(),
LiteralBase
.
Decimal
,
TypeCharacter
.
None
,
IntegerUtilities
.
ToUnsigned
(
shiftValue
))))
End
If
End
If
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录