提交 fea1be1a 编写于 作者: C chandera

Improved IDE support for conditional access operators

 (changeset 1251701)
上级 feeccd32
......@@ -354,6 +354,11 @@ public override AdjustSpacesOperation GetAdjustSpacesOperation(SyntaxToken previ
return CreateAdjustSpacesOperation(0, AdjustSpacesOption.ForceSpacesIfOnSingleLine);
}
if (previousToken.CSharpKind() == SyntaxKind.IdentifierToken && currentToken.CSharpKind() == SyntaxKind.QuestionToken && currentToken.Parent.IsKind(SyntaxKind.ConditionalAccessExpression))
{
return CreateAdjustSpacesOperation(0, AdjustSpacesOption.ForceSpacesIfOnSingleLine);
}
return nextOperation.Invoke();
}
}
......
......@@ -121,6 +121,11 @@ internal class CSharpRecommendationService : AbstractRecommendationService
{
return GetSymbolsOffOffAlias(context, ((AliasQualifiedNameSyntax)node).Alias, cancellationToken);
}
else if (node.CSharpKind() == SyntaxKind.MemberBindingExpression)
{
var parentConditionalAccess = node.GetAncestor<ConditionalAccessExpressionSyntax>();
return GetSymbolsOffOfExpression(context, parentConditionalAccess.Expression, cancellationToken);
}
else
{
return SpecializedCollections.EmptyEnumerable<ISymbol>();
......
......@@ -5281,5 +5281,40 @@ public void Method()
AssertFormat(expected, code, changedOptionSet: options);
}
public void ConditionalMemberAccess()
{
var code = @"
class A
{
public A a;
}
class Program
{
static void Main()
{
A a = null;
A ?.a = null;
}
}";
var expected = @"
class A
{
public A a;
}
class Program
{
static void Main()
{
A a = null;
A?.a = null;
}
}";
AssertFormat(expected, code);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册