Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
f39346c8
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,发现更多精彩内容 >>
提交
f39346c8
编写于
11月 12, 2016
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove usage of TypeSwitch.
上级
363979f7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
46 deletion
+48
-46
src/Workspaces/CSharp/Portable/LanguageServices/CSharpTypeInferenceService.TypeInferrer.cs
...nguageServices/CSharpTypeInferenceService.TypeInferrer.cs
+48
-46
未找到文件。
src/Workspaces/CSharp/Portable/LanguageServices/CSharpTypeInferenceService.TypeInferrer.cs
浏览文件 @
f39346c8
...
...
@@ -190,52 +190,54 @@ protected override IEnumerable<TypeInferenceInfo> InferTypesWorker_DoNotCallDire
var
parent
=
token
.
Parent
;
return
parent
.
TypeSwitch
(
(
AnonymousObjectMemberDeclaratorSyntax
memberDeclarator
)
=>
InferTypeInMemberDeclarator
(
memberDeclarator
,
token
),
(
ArgumentListSyntax
argument
)
=>
InferTypeInArgumentList
(
argument
,
token
),
(
ArgumentSyntax
argument
)
=>
InferTypeInArgument
(
argument
,
token
),
(
ArrayCreationExpressionSyntax
arrayCreationExpression
)
=>
InferTypeInArrayCreationExpression
(
arrayCreationExpression
,
token
),
(
ArrayRankSpecifierSyntax
arrayRankSpecifier
)
=>
InferTypeInArrayRankSpecifier
(
arrayRankSpecifier
,
token
),
(
ArrayTypeSyntax
arrayType
)
=>
InferTypeInArrayType
(
arrayType
,
token
),
(
ArrowExpressionClauseSyntax
arrowClause
)
=>
InferTypeInArrowExpressionClause
(
arrowClause
),
(
AssignmentExpressionSyntax
assignmentExpression
)
=>
InferTypeInBinaryOrAssignmentExpression
(
assignmentExpression
,
assignmentExpression
.
OperatorToken
,
assignmentExpression
.
Left
,
assignmentExpression
.
Right
,
previousToken
:
token
),
(
AttributeArgumentListSyntax
attributeArgumentList
)
=>
InferTypeInAttributeArgumentList
(
attributeArgumentList
,
token
),
(
AttributeArgumentSyntax
argument
)
=>
InferTypeInAttributeArgument
(
argument
,
token
),
(
AttributeListSyntax
attributeDeclaration
)
=>
InferTypeInAttributeDeclaration
(
attributeDeclaration
,
token
),
(
AttributeTargetSpecifierSyntax
attributeTargetSpecifier
)
=>
InferTypeInAttributeTargetSpecifier
(
attributeTargetSpecifier
,
token
),
(
AwaitExpressionSyntax
awaitExpression
)
=>
InferTypeInAwaitExpression
(
awaitExpression
,
token
),
(
BinaryExpressionSyntax
binaryExpression
)
=>
InferTypeInBinaryOrAssignmentExpression
(
binaryExpression
,
binaryExpression
.
OperatorToken
,
binaryExpression
.
Left
,
binaryExpression
.
Right
,
previousToken
:
token
),
(
BracketedArgumentListSyntax
bracketedArgumentList
)
=>
InferTypeInBracketedArgumentList
(
bracketedArgumentList
,
token
),
(
CastExpressionSyntax
castExpression
)
=>
InferTypeInCastExpression
(
castExpression
,
previousToken
:
token
),
(
CatchDeclarationSyntax
catchDeclaration
)
=>
InferTypeInCatchDeclaration
(
catchDeclaration
,
token
),
(
CatchFilterClauseSyntax
catchFilterClause
)
=>
InferTypeInCatchFilterClause
(
catchFilterClause
,
token
),
(
CheckedExpressionSyntax
checkedExpression
)
=>
InferTypes
(
checkedExpression
),
(
ConditionalExpressionSyntax
conditionalExpression
)
=>
InferTypeInConditionalExpression
(
conditionalExpression
,
previousToken
:
token
),
(
DefaultExpressionSyntax
defaultExpression
)
=>
InferTypeInDefaultExpression
(
defaultExpression
),
(
DoStatementSyntax
doStatement
)
=>
InferTypeInDoStatement
(
doStatement
,
token
),
(
EqualsValueClauseSyntax
equalsValue
)
=>
InferTypeInEqualsValueClause
(
equalsValue
,
token
),
(
ExpressionStatementSyntax
expressionStatement
)
=>
InferTypeInExpressionStatement
(
expressionStatement
,
token
),
(
ForEachStatementSyntax
forEachStatement
)
=>
InferTypeInForEachStatement
(
forEachStatement
,
previousToken
:
token
),
(
ForStatementSyntax
forStatement
)
=>
InferTypeInForStatement
(
forStatement
,
previousToken
:
token
),
(
IfStatementSyntax
ifStatement
)
=>
InferTypeInIfStatement
(
ifStatement
,
token
),
(
InitializerExpressionSyntax
initializerExpression
)
=>
InferTypeInInitializerExpression
(
initializerExpression
,
previousToken
:
token
),
(
LockStatementSyntax
lockStatement
)
=>
InferTypeInLockStatement
(
lockStatement
,
token
),
(
MemberAccessExpressionSyntax
memberAccessExpression
)
=>
InferTypeInMemberAccessExpression
(
memberAccessExpression
,
previousToken
:
token
),
(
NameColonSyntax
nameColon
)
=>
InferTypeInNameColon
(
nameColon
,
token
),
(
NameEqualsSyntax
nameEquals
)
=>
InferTypeInNameEquals
(
nameEquals
,
token
),
(
ObjectCreationExpressionSyntax
objectCreation
)
=>
InferTypeInObjectCreationExpression
(
objectCreation
,
token
),
(
ParenthesizedLambdaExpressionSyntax
parenthesizedLambdaExpression
)
=>
InferTypeInParenthesizedLambdaExpression
(
parenthesizedLambdaExpression
,
token
),
(
PostfixUnaryExpressionSyntax
postfixUnary
)
=>
InferTypeInPostfixUnaryExpression
(
postfixUnary
,
token
),
(
PrefixUnaryExpressionSyntax
prefixUnary
)
=>
InferTypeInPrefixUnaryExpression
(
prefixUnary
,
token
),
(
ReturnStatementSyntax
returnStatement
)
=>
InferTypeForReturnStatement
(
returnStatement
,
token
),
(
SimpleLambdaExpressionSyntax
simpleLambdaExpression
)
=>
InferTypeInSimpleLambdaExpression
(
simpleLambdaExpression
,
token
),
(
SwitchLabelSyntax
switchLabel
)
=>
InferTypeInSwitchLabel
(
switchLabel
,
token
),
(
SwitchStatementSyntax
switchStatement
)
=>
InferTypeInSwitchStatement
(
switchStatement
,
token
),
(
ThrowStatementSyntax
throwStatement
)
=>
InferTypeInThrowStatement
(
throwStatement
,
token
),
(
UsingStatementSyntax
usingStatement
)
=>
InferTypeInUsingStatement
(
usingStatement
,
token
),
(
WhileStatementSyntax
whileStatement
)
=>
InferTypeInWhileStatement
(
whileStatement
,
token
),
(
YieldStatementSyntax
yieldStatement
)
=>
InferTypeInYieldStatement
(
yieldStatement
,
token
),
_
=>
SpecializedCollections
.
EmptyEnumerable
<
TypeInferenceInfo
>());
switch
(
parent
)
{
case
AnonymousObjectMemberDeclaratorSyntax
memberDeclarator
:
return
InferTypeInMemberDeclarator
(
memberDeclarator
,
token
);
case
ArgumentListSyntax
argument
:
return
InferTypeInArgumentList
(
argument
,
token
);
case
ArgumentSyntax
argument
:
return
InferTypeInArgument
(
argument
,
token
);
case
ArrayCreationExpressionSyntax
arrayCreationExpression
:
return
InferTypeInArrayCreationExpression
(
arrayCreationExpression
,
token
);
case
ArrayRankSpecifierSyntax
arrayRankSpecifier
:
return
InferTypeInArrayRankSpecifier
(
arrayRankSpecifier
,
token
);
case
ArrayTypeSyntax
arrayType
:
return
InferTypeInArrayType
(
arrayType
,
token
);
case
ArrowExpressionClauseSyntax
arrowClause
:
return
InferTypeInArrowExpressionClause
(
arrowClause
);
case
AssignmentExpressionSyntax
assignmentExpression
:
return
InferTypeInBinaryOrAssignmentExpression
(
assignmentExpression
,
assignmentExpression
.
OperatorToken
,
assignmentExpression
.
Left
,
assignmentExpression
.
Right
,
previousToken
:
token
);
case
AttributeArgumentListSyntax
attributeArgumentList
:
return
InferTypeInAttributeArgumentList
(
attributeArgumentList
,
token
);
case
AttributeArgumentSyntax
argument
:
return
InferTypeInAttributeArgument
(
argument
,
token
);
case
AttributeListSyntax
attributeDeclaration
:
return
InferTypeInAttributeDeclaration
(
attributeDeclaration
,
token
);
case
AttributeTargetSpecifierSyntax
attributeTargetSpecifier
:
return
InferTypeInAttributeTargetSpecifier
(
attributeTargetSpecifier
,
token
);
case
AwaitExpressionSyntax
awaitExpression
:
return
InferTypeInAwaitExpression
(
awaitExpression
,
token
);
case
BinaryExpressionSyntax
binaryExpression
:
return
InferTypeInBinaryOrAssignmentExpression
(
binaryExpression
,
binaryExpression
.
OperatorToken
,
binaryExpression
.
Left
,
binaryExpression
.
Right
,
previousToken
:
token
);
case
BracketedArgumentListSyntax
bracketedArgumentList
:
return
InferTypeInBracketedArgumentList
(
bracketedArgumentList
,
token
);
case
CastExpressionSyntax
castExpression
:
return
InferTypeInCastExpression
(
castExpression
,
previousToken
:
token
);
case
CatchDeclarationSyntax
catchDeclaration
:
return
InferTypeInCatchDeclaration
(
catchDeclaration
,
token
);
case
CatchFilterClauseSyntax
catchFilterClause
:
return
InferTypeInCatchFilterClause
(
catchFilterClause
,
token
);
case
CheckedExpressionSyntax
checkedExpression
:
return
InferTypes
(
checkedExpression
);
case
ConditionalExpressionSyntax
conditionalExpression
:
return
InferTypeInConditionalExpression
(
conditionalExpression
,
previousToken
:
token
);
case
DefaultExpressionSyntax
defaultExpression
:
return
InferTypeInDefaultExpression
(
defaultExpression
);
case
DoStatementSyntax
doStatement
:
return
InferTypeInDoStatement
(
doStatement
,
token
);
case
EqualsValueClauseSyntax
equalsValue
:
return
InferTypeInEqualsValueClause
(
equalsValue
,
token
);
case
ExpressionStatementSyntax
expressionStatement
:
return
InferTypeInExpressionStatement
(
expressionStatement
,
token
);
case
ForEachStatementSyntax
forEachStatement
:
return
InferTypeInForEachStatement
(
forEachStatement
,
previousToken
:
token
);
case
ForStatementSyntax
forStatement
:
return
InferTypeInForStatement
(
forStatement
,
previousToken
:
token
);
case
IfStatementSyntax
ifStatement
:
return
InferTypeInIfStatement
(
ifStatement
,
token
);
case
InitializerExpressionSyntax
initializerExpression
:
return
InferTypeInInitializerExpression
(
initializerExpression
,
previousToken
:
token
);
case
LockStatementSyntax
lockStatement
:
return
InferTypeInLockStatement
(
lockStatement
,
token
);
case
MemberAccessExpressionSyntax
memberAccessExpression
:
return
InferTypeInMemberAccessExpression
(
memberAccessExpression
,
previousToken
:
token
);
case
NameColonSyntax
nameColon
:
return
InferTypeInNameColon
(
nameColon
,
token
);
case
NameEqualsSyntax
nameEquals
:
return
InferTypeInNameEquals
(
nameEquals
,
token
);
case
ObjectCreationExpressionSyntax
objectCreation
:
return
InferTypeInObjectCreationExpression
(
objectCreation
,
token
);
case
ParenthesizedLambdaExpressionSyntax
parenthesizedLambdaExpression
:
return
InferTypeInParenthesizedLambdaExpression
(
parenthesizedLambdaExpression
,
token
);
case
PostfixUnaryExpressionSyntax
postfixUnary
:
return
InferTypeInPostfixUnaryExpression
(
postfixUnary
,
token
);
case
PrefixUnaryExpressionSyntax
prefixUnary
:
return
InferTypeInPrefixUnaryExpression
(
prefixUnary
,
token
);
case
ReturnStatementSyntax
returnStatement
:
return
InferTypeForReturnStatement
(
returnStatement
,
token
);
case
SimpleLambdaExpressionSyntax
simpleLambdaExpression
:
return
InferTypeInSimpleLambdaExpression
(
simpleLambdaExpression
,
token
);
case
SwitchLabelSyntax
switchLabel
:
return
InferTypeInSwitchLabel
(
switchLabel
,
token
);
case
SwitchStatementSyntax
switchStatement
:
return
InferTypeInSwitchStatement
(
switchStatement
,
token
);
case
ThrowStatementSyntax
throwStatement
:
return
InferTypeInThrowStatement
(
throwStatement
,
token
);
case
UsingStatementSyntax
usingStatement
:
return
InferTypeInUsingStatement
(
usingStatement
,
token
);
case
WhileStatementSyntax
whileStatement
:
return
InferTypeInWhileStatement
(
whileStatement
,
token
);
case
YieldStatementSyntax
yieldStatement
:
return
InferTypeInYieldStatement
(
yieldStatement
,
token
);
default
:
return
SpecializedCollections
.
EmptyEnumerable
<
TypeInferenceInfo
>();
}
}
private
IEnumerable
<
TypeInferenceInfo
>
InferTypeInArgument
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录