提交 f69ccbb1 编写于 作者: C CyrusNajmabadi 提交者: GitHub

Merge pull request #21176 from CyrusNajmabadi/patternMatchingDynamic

No pattern matching with dynamic.
......@@ -726,6 +726,23 @@ void M()
{
}
}
}");
}
[WorkItem(21172, "https://github.com/dotnet/roslyn/issues/21172")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineTypeCheck)]
public async Task TestMissingWithDynamic()
{
await TestMissingAsync(
@"class C
{
void M(object o)
{
[|var|] x = o as dynamic;
if (x != null)
{
}
}
}");
}
}
......
......@@ -538,5 +538,25 @@ public object Convert(object value)
}
}");
}
[WorkItem(21172, "https://github.com/dotnet/roslyn/issues/21172")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsInlineTypeCheck)]
public async Task TestMissingWithDynamic()
{
await TestMissingInRegularAndScriptAsync(
@"
class C
{
public object Convert(object value)
{
if (value is dynamic)
{
[|dynamic|] tmp = (dynamic)value;
}
return null;
}
}");
}
}
}
......@@ -103,6 +103,12 @@ private void SyntaxNodeAction(SyntaxNodeAnalysisContext syntaxContext)
return;
}
if (asType?.TypeKind == TypeKind.Dynamic)
{
// Not legal to use dynamic in a pattern.
return;
}
var localSymbol = (ILocalSymbol)semanticModel.GetDeclaredSymbol(declarator);
if (!localSymbol.Type.Equals(asType))
{
......
......@@ -112,6 +112,12 @@ private void SyntaxNodeAction(SyntaxNodeAnalysisContext syntaxContext)
return;
}
if (isType?.TypeKind == TypeKind.Dynamic)
{
// Not legal to use dynamic in a pattern.
return;
}
if (!localSymbol.Type.Equals(isType))
{
// we have something like:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册