Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
4609f60d
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,发现更多精彩内容 >>
提交
4609f60d
编写于
12月 19, 2014
作者:
W
wochae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update VB tests for EnC StateMachines (changeset 1389653)
上级
b2126a6d
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
205 addition
and
124 deletion
+205
-124
Src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/VisualBasicDefinitionMap.vb
...Portable/Emit/EditAndContinue/VisualBasicDefinitionMap.vb
+9
-3
Src/Compilers/VisualBasic/Portable/Lowering/StateMachineRewriter/StateMachineRewriter.vb
...ble/Lowering/StateMachineRewriter/StateMachineRewriter.vb
+1
-1
Src/Compilers/VisualBasic/Portable/Symbols/SynthesizedSymbols/GeneratedNameKind.vb
.../Portable/Symbols/SynthesizedSymbols/GeneratedNameKind.vb
+6
-0
Src/Compilers/VisualBasic/Portable/Symbols/SynthesizedSymbols/GeneratedNames.vb
...sic/Portable/Symbols/SynthesizedSymbols/GeneratedNames.vb
+4
-11
Src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinueStateMachineTests.vb
...lBasic/Test/Emit/Emit/EditAndContinueStateMachineTests.vb
+185
-109
未找到文件。
Src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/VisualBasicDefinitionMap.vb
浏览文件 @
4609f60d
...
...
@@ -119,7 +119,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit
Select
Case
GeneratedNames
.
GetKind
(
name
)
Case
GeneratedNameKind
.
StateMachineAwaiterField
If
GeneratedNames
.
TryParseSlotIndex
(
name
,
slotIndex
)
Then
If
GeneratedNames
.
TryParseSlotIndex
(
StringConstants
.
StateMachineAwaiterFieldPrefix
,
name
,
slotIndex
)
Then
Dim
field
=
TryCast
(
member
,
IFieldSymbol
)
' Correct metadata won't contain duplicates, but malformed might, ignore the duplicate:
...
...
@@ -130,8 +131,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit
End
If
End
If
Case
GeneratedNameKind
.
HoistedSynthesizedLocalField
If
GeneratedNames
.
TryParseSlotIndex
(
name
,
slotIndex
)
Then
Case
GeneratedNameKind
.
HoistedSynthesizedLocalField
,
GeneratedNameKind
.
StateMachineHoistedUserVariableField
Dim
_name
As
String
=
Nothing
If
GeneratedNames
.
TryParseSlotIndex
(
StringConstants
.
HoistedSynthesizedLocalPrefix
,
name
,
slotIndex
)
OrElse
GeneratedNames
.
TryParseStateMachineHoistedUserVariableName
(
name
,
_name
,
slotIndex
)
Then
Dim
field
=
TryCast
(
member
,
IFieldSymbol
)
If
slotIndex
>=
localSlotDebugInfo
.
Length
Then
' Invalid metadata
...
...
@@ -149,6 +154,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit
hoistedLocalMap
=
hoistedLocals
awaiterMap
=
awaiters
awaiterSlotCount
=
maxAwaiterSlotIndex
+
1
End
Sub
Protected
Overrides
Function
TryGetLocalSlotMapFromMetadata
(
handle
As
MethodDefinitionHandle
,
debugInfo
As
EditAndContinueMethodDebugInformation
)
As
ImmutableArray
(
Of
EncLocalInfo
)
...
...
Src/Compilers/VisualBasic/Portable/Lowering/StateMachineRewriter/StateMachineRewriter.vb
浏览文件 @
4609f60d
...
...
@@ -296,7 +296,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
id
=
New
LocalDebugId
(
syntaxOffset
,
ordinal
)
If
SlotAllocatorOpt
IsNot
Nothing
Then
slotIndex
=
SlotAllocatorOpt
.
GetPreviousHoistedLocalSlotIndex
(
declaratorSyntax
,
DirectCast
(
fieldType
,
Cci
.
IType
Definition
),
local
.
SynthesizedKind
,
id
)
slotIndex
=
SlotAllocatorOpt
.
GetPreviousHoistedLocalSlotIndex
(
declaratorSyntax
,
DirectCast
(
fieldType
,
Cci
.
IType
Reference
),
local
.
SynthesizedKind
,
id
)
End
If
End
If
...
...
Src/Compilers/VisualBasic/Portable/Symbols/SynthesizedSymbols/GeneratedNameKind.vb
浏览文件 @
4609f60d
...
...
@@ -14,13 +14,19 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
IteratorInitialThreadIdField
IteratorParameterProxyField
StateMachineAwaiterField
StateMachineStateField
StateMachineHoistedUserVariableField
StaticLocalField
End
Enum
Partial
Friend
Class
GeneratedNames
Friend
Shared
Function
GetKind
(
name
As
String
)
As
GeneratedNameKind
If
name
.
StartsWith
(
StringConstants
.
HoistedMeName
,
StringComparison
.
Ordinal
)
Then
Return
GeneratedNameKind
.
HoistedMeField
ElseIf
name
.
StartsWith
(
StringConstants
.
StateMachineStateFieldName
,
StringComparison
.
Ordinal
)
Then
Return
GeneratedNameKind
.
StateMachineStateField
ElseIf
name
.
StartsWith
(
StringConstants
.
StaticLocalFieldNamePrefix
,
StringComparison
.
Ordinal
)
Then
Return
GeneratedNameKind
.
StaticLocalField
ElseIf
name
.
StartsWith
(
StringConstants
.
HoistedSynthesizedLocalPrefix
,
StringComparison
.
Ordinal
)
Then
Return
GeneratedNameKind
.
HoistedSynthesizedLocalField
ElseIf
name
.
StartsWith
(
StringConstants
.
HoistedUserVariablePrefix
,
StringComparison
.
Ordinal
)
Then
...
...
Src/Compilers/VisualBasic/Portable/Symbols/SynthesizedSymbols/GeneratedNames.vb
浏览文件 @
4609f60d
...
...
@@ -273,20 +273,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
End
Function
' Extracts the slot index from a name of a field that stores hoisted variables Or awaiters.
' Such a name ends with "
__{slot index + 1
}".
' Such a name ends with "
$prefix{slot index
}".
' Returned slot index Is >= 0.
Friend
Shared
Function
TryParseSlotIndex
(
fieldName
As
String
,
<
Out
>
ByRef
slotIndex
As
Integer
)
As
Boolean
Dim
lastUnder
=
fieldName
.
LastIndexOf
(
"_"
c
)
If
lastUnder
-
1
<
0
OrElse
lastUnder
=
fieldName
.
Length
OrElse
fieldName
(
lastUnder
-
1
)
<>
"_"
c
Then
slotIndex
=
-
1
Return
False
End
If
If
Integer
.
TryParse
(
fieldName
.
Substring
(
lastUnder
+
1
),
slotIndex
)
AndAlso
slotIndex
>=
1
Then
slotIndex
=
slotIndex
-
1
Friend
Shared
Function
TryParseSlotIndex
(
prefix
As
String
,
fieldName
As
String
,
<
Out
>
ByRef
slotIndex
As
Integer
)
As
Boolean
If
fieldName
.
StartsWith
(
prefix
,
StringComparison
.
Ordinal
)
AndAlso
Integer
.
TryParse
(
fieldName
.
Substring
(
prefix
.
Length
),
NumberStyles
.
None
,
CultureInfo
.
InvariantCulture
,
slotIndex
)
Then
Return
True
End
If
slotIndex
=
-
1
Return
False
End
Function
...
...
Src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinueStateMachineTests.vb
浏览文件 @
4609f60d
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录