Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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)
             )
     });
Ejemplo n.º 6
0
 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));
 }
Ejemplo n.º 7
0
 public virtual void VisitInterpolation(IInterpolationOperation operation)
 {
     DefaultVisit(operation);
 }
Ejemplo n.º 8
0
 public override void VisitInterpolation([NotNull] IInterpolationOperation operation)
 {
     base.VisitInterpolation(operation);
 }
Ejemplo n.º 9
0
 public override bool VisitInterpolation([NotNull] IInterpolationOperation operation1, [CanBeNull] IOperation argument)
 {
     return(argument is IInterpolationOperation operation2 && AreBaseOperationsEqual(operation1, operation2));
 }