Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
e5a43558
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,发现更多精彩内容 >>
提交
e5a43558
编写于
6月 08, 2018
作者:
M
Manish Vasani
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add convenience APIs to get CFG
Fixes #27627
上级
e9d03b34
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
251 addition
and
30 deletion
+251
-30
src/Compilers/Core/Portable/CodeAnalysisResources.Designer.cs
...Compilers/Core/Portable/CodeAnalysisResources.Designer.cs
+10
-1
src/Compilers/Core/Portable/CodeAnalysisResources.resx
src/Compilers/Core/Portable/CodeAnalysisResources.resx
+4
-1
src/Compilers/Core/Portable/Compilation/SemanticModel.cs
src/Compilers/Core/Portable/Compilation/SemanticModel.cs
+62
-8
src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticAnalysisContext.cs
.../Portable/DiagnosticAnalyzer/DiagnosticAnalysisContext.cs
+26
-0
src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticAnalysisContextHelpers.cs
...le/DiagnosticAnalyzer/DiagnosticAnalysisContextHelpers.cs
+18
-0
src/Compilers/Core/Portable/Operations/ControlFlowGraphBuilder.cs
...ilers/Core/Portable/Operations/ControlFlowGraphBuilder.cs
+18
-7
src/Compilers/Core/Portable/Operations/OperationExtensions.cs
...Compilers/Core/Portable/Operations/OperationExtensions.cs
+28
-0
src/Compilers/Core/Portable/PublicAPI.Unshipped.txt
src/Compilers/Core/Portable/PublicAPI.Unshipped.txt
+7
-0
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.cs.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.cs.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.de.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.de.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.es.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.es.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.fr.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.fr.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.it.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.it.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ja.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ja.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ko.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ko.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.pl.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.pl.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.pt-BR.xlf
...mpilers/Core/Portable/xlf/CodeAnalysisResources.pt-BR.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ru.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ru.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.tr.xlf
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.tr.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.zh-Hans.xlf
...ilers/Core/Portable/xlf/CodeAnalysisResources.zh-Hans.xlf
+6
-1
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.zh-Hant.xlf
...ilers/Core/Portable/xlf/CodeAnalysisResources.zh-Hant.xlf
+6
-1
未找到文件。
src/Compilers/Core/Portable/CodeAnalysisResources.Designer.cs
浏览文件 @
e5a43558
...
...
@@ -1059,7 +1059,7 @@ internal class CodeAnalysisResources {
/// </summary>
internal
static
string
OperationHasNullSemanticModel
{
get
{
return
ResourceManager
.
GetString
(
"OperationHasN
o
SemanticModel"
,
resourceCulture
);
return
ResourceManager
.
GetString
(
"OperationHasN
ull
SemanticModel"
,
resourceCulture
);
}
}
...
...
@@ -1549,6 +1549,15 @@ internal class CodeAnalysisResources {
}
}
/// <summary>
/// Looks up a localized string similar to Unsupported root operation kind '{0}'..
/// </summary>
internal
static
string
UnsupportedRootOperationKind
{
get
{
return
ResourceManager
.
GetString
(
"UnsupportedRootOperationKind"
,
resourceCulture
);
}
}
/// <summary>
/// Looks up a localized string similar to Value too large to be represented as a 30 bit unsigned integer..
/// </summary>
...
...
src/Compilers/Core/Portable/CodeAnalysisResources.resx
浏览文件 @
e5a43558
...
...
@@ -621,7 +621,10 @@
<data
name=
"NotARootOperation"
xml:space=
"preserve"
>
<value>
Given operation has a non-null parent.
</value>
</data>
<data
name=
"OperationHasN
o
SemanticModel"
xml:space=
"preserve"
>
<data
name=
"OperationHasN
ull
SemanticModel"
xml:space=
"preserve"
>
<value>
Given operation has a null semantic model.
</value>
</data>
<data
name=
"UnsupportedRootOperationKind"
xml:space=
"preserve"
>
<value>
Unsupported root operation kind '{0}'.
</value>
</data>
</root>
\ No newline at end of file
src/Compilers/Core/Portable/Compilation/SemanticModel.cs
浏览文件 @
e5a43558
...
...
@@ -6,6 +6,7 @@
using
System.Diagnostics
;
using
System.Threading
;
using
Microsoft.CodeAnalysis.FlowAnalysis
;
using
Microsoft.CodeAnalysis.Operations
;
using
Microsoft.CodeAnalysis.PooledObjects
;
using
Microsoft.CodeAnalysis.Text
;
...
...
@@ -94,7 +95,9 @@ public IOperation GetOperation(SyntaxNode node, CancellationToken cancellationTo
/// <param name="body">Root operation block, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
Operations
.
IBlockOperation
body
)
{
return
GetControlFlowGraphCore
(
body
,
nameof
(
body
));
VerifyArgumentForGetControlFlowGraph
(
body
,
nameof
(
body
));
return
GetControlFlowGraphCore
(
body
);
}
/// <summary>
...
...
@@ -103,7 +106,9 @@ public static ControlFlowGraph GetControlFlowGraph(Operations.IBlockOperation bo
/// <param name="initializer">Root field initializer operation, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
Operations
.
IFieldInitializerOperation
initializer
)
{
return
GetControlFlowGraphCore
(
initializer
,
nameof
(
initializer
));
VerifyArgumentForGetControlFlowGraph
(
initializer
,
nameof
(
initializer
));
return
GetControlFlowGraphCore
(
initializer
);
}
/// <summary>
...
...
@@ -112,7 +117,9 @@ public static ControlFlowGraph GetControlFlowGraph(Operations.IFieldInitializerO
/// <param name="initializer">Root property initializer operation, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
Operations
.
IPropertyInitializerOperation
initializer
)
{
return
GetControlFlowGraphCore
(
initializer
,
nameof
(
initializer
));
VerifyArgumentForGetControlFlowGraph
(
initializer
,
nameof
(
initializer
));
return
GetControlFlowGraphCore
(
initializer
);
}
/// <summary>
...
...
@@ -121,7 +128,9 @@ public static ControlFlowGraph GetControlFlowGraph(Operations.IPropertyInitializ
/// <param name="initializer">Root parameter initializer operation, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
Operations
.
IParameterInitializerOperation
initializer
)
{
return
GetControlFlowGraphCore
(
initializer
,
nameof
(
initializer
));
VerifyArgumentForGetControlFlowGraph
(
initializer
,
nameof
(
initializer
));
return
GetControlFlowGraphCore
(
initializer
);
}
/// <summary>
...
...
@@ -130,7 +139,9 @@ public static ControlFlowGraph GetControlFlowGraph(Operations.IParameterInitiali
/// <param name="constructorBody">Root constructor body operation, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
Operations
.
IConstructorBodyOperation
constructorBody
)
{
return
GetControlFlowGraphCore
(
constructorBody
,
nameof
(
constructorBody
));
VerifyArgumentForGetControlFlowGraph
(
constructorBody
,
nameof
(
constructorBody
));
return
GetControlFlowGraphCore
(
constructorBody
);
}
/// <summary>
...
...
@@ -139,17 +150,45 @@ public static ControlFlowGraph GetControlFlowGraph(Operations.IConstructorBodyOp
/// <param name="methodBody">Root method body operation, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
Operations
.
IMethodBodyOperation
methodBody
)
{
return
GetControlFlowGraphCore
(
methodBody
,
nameof
(
methodBody
));
VerifyArgumentForGetControlFlowGraph
(
methodBody
,
nameof
(
methodBody
));
return
GetControlFlowGraphCore
(
methodBody
);
}
/// <summary>
/// Gets a <see cref="ControlFlowGraph"/> for the given executable code block <paramref name="rootOperation"/>.
/// </summary>
/// <param name="rootOperation">Root operation for an executable code block, which must have a null parent.</param>
public
static
ControlFlowGraph
GetControlFlowGraph
(
IOperation
rootOperation
)
{
VerifyArgumentForGetControlFlowGraph
(
rootOperation
,
nameof
(
rootOperation
));
VerifyRootOperationKindForGetControlFlowGraph
(
rootOperation
,
nameof
(
rootOperation
));
return
GetControlFlowGraphCore
(
rootOperation
);
}
private
static
ControlFlowGraph
GetControlFlowGraphCore
(
IOperation
operation
,
string
argumentNameForException
)
/// <summary>
/// Gets a <see cref="ControlFlowGraph"/> for the executable code block containing the given <paramref name="operation"/>.
/// </summary>
/// <param name="operation">Operation within an executable code block.</param>
public
static
ControlFlowGraph
GetEnclosingControlFlowGraph
(
IOperation
operation
)
{
VerifyArgumentForGetControlFlowGraph
(
operation
,
nameof
(
operation
),
verifyRoot
:
false
);
var
rootOperation
=
operation
.
GetRootOperation
();
VerifyRootOperationKindForGetControlFlowGraph
(
rootOperation
,
nameof
(
operation
));
return
GetControlFlowGraphCore
(
rootOperation
);
}
private
static
void
VerifyArgumentForGetControlFlowGraph
(
IOperation
operation
,
string
argumentNameForException
,
bool
verifyRoot
=
true
)
{
if
(
operation
==
null
)
{
throw
new
ArgumentNullException
(
argumentNameForException
);
}
if
(
operation
.
Parent
!=
null
)
if
(
verifyRoot
&&
operation
.
Parent
!=
null
)
{
throw
new
ArgumentException
(
CodeAnalysisResources
.
NotARootOperation
,
argumentNameForException
);
}
...
...
@@ -158,7 +197,22 @@ private static ControlFlowGraph GetControlFlowGraphCore(IOperation operation, st
{
throw
new
ArgumentException
(
CodeAnalysisResources
.
OperationHasNullSemanticModel
,
argumentNameForException
);
}
}
private
static
void
VerifyRootOperationKindForGetControlFlowGraph
(
IOperation
rootOperation
,
string
argumentNameForException
)
{
Debug
.
Assert
(
rootOperation
.
Parent
==
null
);
if
(!
ControlFlowGraphBuilder
.
IsValidRootOperationKind
(
rootOperation
))
{
throw
new
ArgumentException
(
string
.
Format
(
CodeAnalysisResources
.
UnsupportedRootOperationKind
,
rootOperation
.
Kind
),
nameof
(
argumentNameForException
));
}
}
private
static
ControlFlowGraph
GetControlFlowGraphCore
(
IOperation
operation
)
{
if
(!
operation
.
Syntax
.
SyntaxTree
.
Options
.
Features
.
ContainsKey
(
"flow-analysis"
))
{
throw
new
InvalidOperationException
(
CodeAnalysisResources
.
FlowAnalysisFeatureDisabled
);
...
...
src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticAnalysisContext.cs
浏览文件 @
e5a43558
...
...
@@ -3,7 +3,9 @@
using
System
;
using
System.Collections.Immutable
;
using
System.Threading
;
using
Microsoft.CodeAnalysis.FlowAnalysis
;
using
Microsoft.CodeAnalysis.Operations
;
using
Microsoft.CodeAnalysis.PooledObjects
;
using
Microsoft.CodeAnalysis.Text
;
namespace
Microsoft.CodeAnalysis.Diagnostics
...
...
@@ -920,6 +922,14 @@ public void RegisterOperationAction(Action<OperationAnalysisContext> action, par
/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param>
/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param>
public
abstract
void
RegisterOperationAction
(
Action
<
OperationAnalysisContext
>
action
,
ImmutableArray
<
OperationKind
>
operationKinds
);
/// <summary>
/// Gets an array of <see cref="ControlFlowGraph"/> for <see cref="OperationBlocks"/>.
/// </summary>
public
ImmutableArray
<
ControlFlowGraph
>
GetControlFlowGraphs
()
{
return
DiagnosticAnalysisContextHelpers
.
GetControlFlowGraphs
(
OperationBlocks
);
}
}
/// <summary>
...
...
@@ -987,6 +997,14 @@ public void ReportDiagnostic(Diagnostic diagnostic)
_reportDiagnostic
(
diagnostic
);
}
}
/// <summary>
/// Gets an array of <see cref="ControlFlowGraph"/> for <see cref="OperationBlocks"/>.
/// </summary>
public
ImmutableArray
<
ControlFlowGraph
>
GetControlFlowGraphs
()
{
return
DiagnosticAnalysisContextHelpers
.
GetControlFlowGraphs
(
OperationBlocks
);
}
}
/// <summary>
...
...
@@ -1189,5 +1207,13 @@ public void ReportDiagnostic(Diagnostic diagnostic)
_reportDiagnostic
(
diagnostic
);
}
}
/// <summary>
/// Gets a <see cref="ControlFlowGraph"/> for the operation block containing the <see cref="Operation"/>.
/// </summary>
public
ControlFlowGraph
GetEnclosingControlFlowGraph
()
{
return
SemanticModel
.
GetEnclosingControlFlowGraph
(
Operation
);
}
}
}
src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticAnalysisContextHelpers.cs
浏览文件 @
e5a43558
...
...
@@ -4,6 +4,8 @@
using
System.Collections.Immutable
;
using
System.Reflection
;
using
System.Runtime.CompilerServices
;
using
Microsoft.CodeAnalysis.FlowAnalysis
;
using
Microsoft.CodeAnalysis.PooledObjects
;
using
Microsoft.CodeAnalysis.Text
;
using
Roslyn.Utilities
;
...
...
@@ -148,5 +150,21 @@ private static void VerifySyntaxKinds<TLanguageKindEnum>(ImmutableArray<TLanguag
throw
new
ArgumentNullException
(
nameof
(
valueProvider
));
}
}
internal
static
ImmutableArray
<
ControlFlowGraph
>
GetControlFlowGraphs
(
ImmutableArray
<
IOperation
>
operationBlocks
)
{
if
(
operationBlocks
.
IsEmpty
)
{
return
ImmutableArray
<
ControlFlowGraph
>.
Empty
;
}
var
builder
=
ArrayBuilder
<
ControlFlowGraph
>.
GetInstance
(
operationBlocks
.
Length
);
foreach
(
IOperation
operationBlock
in
operationBlocks
)
{
builder
.
Add
(
SemanticModel
.
GetEnclosingControlFlowGraph
(
operationBlock
));
}
return
builder
.
ToImmutableAndFree
();
}
}
}
src/Compilers/Core/Portable/Operations/ControlFlowGraphBuilder.cs
浏览文件 @
e5a43558
...
...
@@ -54,6 +54,23 @@ private bool IsImplicit(IOperation operation)
return
_forceImplicit
||
operation
.
IsImplicit
;
}
public
static
bool
IsValidRootOperationKind
(
IOperation
operation
)
{
switch
(
operation
.
Kind
)
{
case
OperationKind
.
Block
:
case
OperationKind
.
MethodBodyOperation
:
case
OperationKind
.
ConstructorBodyOperation
:
case
OperationKind
.
FieldInitializer
:
case
OperationKind
.
PropertyInitializer
:
case
OperationKind
.
ParameterInitializer
:
return
true
;
default
:
return
false
;
}
}
public
static
ControlFlowGraph
Create
(
IOperation
body
,
ControlFlowRegion
enclosing
=
null
,
CaptureIdDispenser
captureIdDispenser
=
null
,
in
Context
context
=
default
)
{
Debug
.
Assert
(
body
!=
null
);
...
...
@@ -63,13 +80,7 @@ public static ControlFlowGraph Create(IOperation body, ControlFlowRegion enclosi
if
(
enclosing
==
null
)
{
Debug
.
Assert
(
body
.
Parent
==
null
);
Debug
.
Assert
(
body
.
Kind
==
OperationKind
.
Block
||
body
.
Kind
==
OperationKind
.
MethodBodyOperation
||
body
.
Kind
==
OperationKind
.
ConstructorBodyOperation
||
body
.
Kind
==
OperationKind
.
FieldInitializer
||
body
.
Kind
==
OperationKind
.
PropertyInitializer
||
body
.
Kind
==
OperationKind
.
ParameterInitializer
,
$"Unexpected root operation kind:
{
body
.
Kind
}
"
);
Debug
.
Assert
(
IsValidRootOperationKind
(
body
),
$"Unexpected root operation kind:
{
body
.
Kind
}
"
);
}
else
{
...
...
src/Compilers/Core/Portable/Operations/OperationExtensions.cs
浏览文件 @
e5a43558
...
...
@@ -298,5 +298,33 @@ internal static string GetArgumentName(this HasDynamicArgumentsExpression dynami
return
argumentRefKinds
[
index
];
}
/// <summary>
/// Gets the root operation for the <see cref="IOperation"/> tree containing the given <paramref name="operation"/>.
/// </summary>
/// <param name="operation">Operation whose root is requested.</param>
public
static
IOperation
GetRootOperation
(
this
IOperation
operation
)
{
if
(
operation
==
null
)
{
throw
new
ArgumentNullException
(
nameof
(
operation
));
}
while
(
operation
.
Parent
!=
null
)
{
operation
=
operation
.
Parent
;
}
return
operation
;
}
/// <summary>
/// Gets a <see cref="FlowAnalysis.ControlFlowGraph"/> for the executable code block containing the given <paramref name="operation"/>.
/// </summary>
/// <param name="operation">Operation within an executable code block.</param>
public
static
FlowAnalysis
.
ControlFlowGraph
GetEnclosingControlFlowGraph
(
this
IOperation
operation
)
{
return
SemanticModel
.
GetEnclosingControlFlowGraph
(
operation
);
}
}
}
src/Compilers/Core/Portable/PublicAPI.Unshipped.txt
浏览文件 @
e5a43558
Microsoft.CodeAnalysis.Compilation.HasImplicitConversion(Microsoft.CodeAnalysis.ITypeSymbol fromType, Microsoft.CodeAnalysis.ITypeSymbol toType) -> bool
Microsoft.CodeAnalysis.Diagnostics.OperationAnalysisContext.GetEnclosingControlFlowGraph() -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
Microsoft.CodeAnalysis.Diagnostics.OperationBlockAnalysisContext.GetControlFlowGraphs() -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph>
Microsoft.CodeAnalysis.Diagnostics.OperationBlockStartAnalysisContext.GetControlFlowGraphs() -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph>
Microsoft.CodeAnalysis.Diagnostics.Telemetry.AnalyzerTelemetryInfo.Concurrent.get -> bool
Microsoft.CodeAnalysis.Diagnostics.Telemetry.AnalyzerTelemetryInfo.Concurrent.set -> void
Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph.GetAnonymousFunctionControlFlowGraph(Microsoft.CodeAnalysis.FlowAnalysis.IFlowAnonymousFunctionOperation anonymousFunction) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
...
...
@@ -107,12 +110,16 @@ Microsoft.CodeAnalysis.Operations.InstanceReferenceKind.ContainingTypeInstance =
Microsoft.CodeAnalysis.Operations.InstanceReferenceKind.ImplicitReceiver = 1 -> Microsoft.CodeAnalysis.Operations.InstanceReferenceKind
override Microsoft.CodeAnalysis.FlowAnalysis.CaptureId.Equals(object obj) -> bool
override Microsoft.CodeAnalysis.FlowAnalysis.CaptureId.GetHashCode() -> int
static Microsoft.CodeAnalysis.Operations.OperationExtensions.GetEnclosingControlFlowGraph(this Microsoft.CodeAnalysis.IOperation operation) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.Operations.OperationExtensions.GetRootOperation(this Microsoft.CodeAnalysis.IOperation operation) -> Microsoft.CodeAnalysis.IOperation
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.IOperation rootOperation) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.Operations.IBlockOperation body) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.Operations.IConstructorBodyOperation constructorBody) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.Operations.IFieldInitializerOperation initializer) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.Operations.IMethodBodyOperation methodBody) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.Operations.IParameterInitializerOperation initializer) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetControlFlowGraph(Microsoft.CodeAnalysis.Operations.IPropertyInitializerOperation initializer) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
static Microsoft.CodeAnalysis.SemanticModel.GetEnclosingControlFlowGraph(Microsoft.CodeAnalysis.IOperation operation) -> Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph
virtual Microsoft.CodeAnalysis.Operations.OperationVisitor.VisitCaughtException(Microsoft.CodeAnalysis.FlowAnalysis.ICaughtExceptionOperation operation) -> void
virtual Microsoft.CodeAnalysis.Operations.OperationVisitor.VisitFlowCapture(Microsoft.CodeAnalysis.FlowAnalysis.IFlowCaptureOperation operation) -> void
virtual Microsoft.CodeAnalysis.Operations.OperationVisitor.VisitFlowCaptureReference(Microsoft.CodeAnalysis.FlowAnalysis.IFlowCaptureReferenceOperation operation) -> void
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.cs.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() musí vracet instanci {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Hodnota je moc velká, než aby se dala vyjádřit jako 30bitové nepodepsané celé číslo.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.de.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() muss eine Instanz von {1} zurückgeben.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Der Wert ist zu groß, um als ganze 30-Bit-Zahl ohne Vorzeichen dargestellt zu werden.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.es.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() debe devolver una instancia de {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Valor demasiado largo para representarse como entero sin signo de 30 bits.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.fr.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() doit retourner une instance de {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
La valeur est trop grande pour être représentée en tant qu'entier 30 bits non signé.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.it.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() deve restituire un'istanza di {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Il valore è troppo grande per essere rappresentato come intero senza segno a 30 bit.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ja.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() は {1} のインスタンスを返す必要があります。
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
値が大きすぎるため、30 ビットの符号なし整数として表すことができません。
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ko.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata()는 {1}의 인스턴스를 반환해야 합니다.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
값이 너무 커서 30비트 정수로 표시할 수 없습니다.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.pl.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
Metoda {0}.GetMetadata() musi zwrócić wystąpienie {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Wartość jest zbyt duża, dlatego nie może być reprezentowana jako 30-bitowa liczba całkowita bez znaku.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.pt-BR.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() deve retornar uma instância de {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Valor muito grande para ser representado como um inteiro sem sinal de 30 bits.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.ru.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() должен возвращать экземпляр {1}.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Слишком большое значение для представления в виде 30-разрядного целого числа без знака.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.tr.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() bir {1} örneği döndürmelidir.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
Değer, 30 bit işaretsiz tamsayı olarak temsil edilemeyecek kadar büyük.
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.zh-Hans.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() 必须返回 {1} 的实例。
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
值太大,无法表示为 30 位无符号整数。
</target>
...
...
src/Compilers/Core/Portable/xlf/CodeAnalysisResources.zh-Hant.xlf
浏览文件 @
e5a43558
...
...
@@ -7,7 +7,7 @@
<target
state=
"new"
>
Given operation has a non-null parent.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"OperationHasN
o
SemanticModel"
>
<trans-unit
id=
"OperationHasN
ull
SemanticModel"
>
<source>
Given operation has a null semantic model.
</source>
<target
state=
"new"
>
Given operation has a null semantic model.
</target>
<note
/>
...
...
@@ -162,6 +162,11 @@
<target
state=
"translated"
>
{0}.GetMetadata() 必須傳回 {1} 的執行個體。
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"UnsupportedRootOperationKind"
>
<source>
Unsupported root operation kind '{0}'.
</source>
<target
state=
"new"
>
Unsupported root operation kind '{0}'.
</target>
<note
/>
</trans-unit>
<trans-unit
id=
"Value_too_large_to_be_represented_as_a_30_bit_unsigned_integer"
>
<source>
Value too large to be represented as a 30 bit unsigned integer.
</source>
<target
state=
"translated"
>
值太大,無法呈現為 30 位元不帶正負號的整數。
</target>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录