public static void UnwrapInterpolation <TInterpolationSyntax, TExpressionSyntax>( IVirtualCharService virtualCharService, IInterpolationOperation interpolation, out TExpressionSyntax?unwrapped, out TExpressionSyntax?alignment, out bool negate, out string?formatString, out ImmutableArray <Location> unnecessaryLocations) where TInterpolationSyntax : SyntaxNode where TExpressionSyntax : SyntaxNode { alignment = null; negate = false; formatString = null; var unnecessarySpans = new List <TextSpan>(); var expression = Unwrap(interpolation.Expression); if (interpolation.Alignment == null) { UnwrapAlignmentPadding(expression, out expression, out alignment, out negate, unnecessarySpans); } if (interpolation.FormatString == null) { UnwrapFormatString(virtualCharService, expression, out expression, out formatString, unnecessarySpans); } unwrapped = expression.Syntax as TExpressionSyntax; unnecessaryLocations = unnecessarySpans.OrderBy(t => t.Start) .SelectAsArray(interpolation.Syntax.SyntaxTree.GetLocation); }
public override TAbstractAnalysisValue VisitInterpolation(IInterpolationOperation operation, object argument) { var expressionValue = Visit(operation.Expression, argument); var formatValue = Visit(operation.FormatString, argument); var alignmentValue = Visit(operation.Alignment, argument); return(expressionValue); }
public override Scope VisitInterpolation(IInterpolationOperation operation, Scope currentScope) { var operations = new[] { operation.Expression, operation.Alignment, operation.FormatString }; return(operations .Where(item => item != null) .Aggregate(currentScope, (scope, item) => item.Accept(this, scope))); }
public override void VisitInterpolation(IInterpolationOperation operation) { Assert.Equal(OperationKind.Interpolation, operation.Kind); IEnumerable <IOperation> children = new[] { operation.Expression }; if (operation.Alignment != null) { children = children.Concat(new[] { operation.Alignment }); } if (operation.FormatString != null) { children = children.Concat(new[] { operation.FormatString }); } AssertEx.Equal(children, operation.Children); }
public override InterpolatedStringContentSyntax VisitInterpolation( IInterpolationOperation operation, Scope scope) { return((operation.FormatString, operation.Alignment) switch { (null, null) => Interpolation(Syntax(operation.Expression)), ({ } format, null) => Interpolation( Syntax(operation.Expression), formatClause: Format(format), alignmentClause: null ), (null, { } alignment) => Interpolation( Syntax(operation.Expression), formatClause: null, alignmentClause: Alignment(alignment) ), ({ } format, { } alignment) => Interpolation( Syntax(operation.Expression), formatClause: Format(format), alignmentClause: Alignment(alignment) ) });
public override IOperation VisitInterpolation(IInterpolationOperation operation, object argument) { return(new Interpolation(Visit(operation.Expression), Visit(operation.Alignment), Visit(operation.FormatString), ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit)); }
public virtual void VisitInterpolation(IInterpolationOperation operation) { DefaultVisit(operation); }
public override void VisitInterpolation([NotNull] IInterpolationOperation operation) { base.VisitInterpolation(operation); }
public override bool VisitInterpolation([NotNull] IInterpolationOperation operation1, [CanBeNull] IOperation argument) { return(argument is IInterpolationOperation operation2 && AreBaseOperationsEqual(operation1, operation2)); }