Beispiel #1
0
        public static Expression Create(ExpressionNodeInfo info, MemberBindingExpressionSyntax node)
        {
            var expr = Create(info, FindConditionalQualifier(node), node.Name);

            expr.MakeConditional();
            return(expr);
        }
Beispiel #2
0
 private Doc PrintMemberBindingExpressionSyntax(
     MemberBindingExpressionSyntax node)
 {
     return(Concat(
                this.PrintSyntaxToken(node.OperatorToken),
                this.Print(node.Name)
                ));
 }
        public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax memberBinding)
        {
            CancellationToken.ThrowIfCancellationRequested();

            SymbolInfo symbolInfo = _semanticModel.GetSymbolInfo(memberBinding, CancellationToken);

            CheckNonTypeSymbol(symbolInfo, memberBinding);
            base.VisitMemberBindingExpression(memberBinding);
        }
Beispiel #4
0
        private static ExpressionSyntax ReplaceInvocation(InvocationExpressionSyntax invocation)
        {
            var newExpression = invocation.Expression switch
            {
                MemberAccessExpressionSyntax memberAccess => (ExpressionSyntax)MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, memberAccess.Expression, IdentifierName("ToList")),
                MemberBindingExpressionSyntax _ => MemberBindingExpression(IdentifierName("ToList")),
                _ => throw new NotSupportedException($"Can't handle {invocation.Expression.GetType()}"),
            };

            return(InvocationExpression(newExpression));
        }
Beispiel #5
0
        public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
        {
            if (!PreVisit(node))
            {
                return;
            }

            node.Name?.Accept(this);

            base.VisitMemberBindingExpression(node);

            PostVisit(node);
        }
        public override LuaSyntaxNode VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
        {
            ISymbol symbol = semanticModel_.GetSymbolInfo(node).Symbol;

            if (node.Name.Identifier.ValueText == "Invoke")
            {
                if (symbol.ContainingType.IsDelegateType())
                {
                    return(conditionalTemps_.Peek());
                }
            }

            var nameExpression = (LuaExpressionSyntax)node.Name.Accept(this);

            return(new LuaMemberAccessExpressionSyntax(conditionalTemps_.Peek(), nameExpression, symbol.Kind == SymbolKind.Method));
        }
Beispiel #7
0
        public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
        {
            var symInfo = m_Model.GetSymbolInfo(node.Name);
            var sym     = symInfo.Symbol;
            var msym    = sym as IMethodSymbol;

            if (null != msym)
            {
                string manglingName = NameMangling(msym);
                if (sym.IsStatic)
                {
                    CodeBuilder.AppendFormat(".{0}", manglingName);
                }
                else
                {
                    CodeBuilder.AppendFormat(":{0}", manglingName);
                }
            }
            else
            {
                CodeBuilder.AppendFormat("{0}{1}", node.OperatorToken.Text, node.Name.Identifier.Text);
            }
        }
Beispiel #8
0
        private ImmutableArray <ISymbol> GetSymbolsOffOfContainer()
        {
            // Ensure that we have the correct token in A.B| case
            var node = _context.TargetToken.GetRequiredParent();

            return(node switch
            {
                MemberAccessExpressionSyntax {
                    RawKind : (int)SyntaxKind.SimpleMemberAccessExpression
                } memberAccess
                => GetSymbolsOffOfExpression(memberAccess.Expression),
                MemberAccessExpressionSyntax {
                    RawKind : (int)SyntaxKind.PointerMemberAccessExpression
                } memberAccess
                => GetSymbolsOffOfDereferencedExpression(memberAccess.Expression),

                // This code should be executing only if the cursor is between two dots in a dotdot token.
                RangeExpressionSyntax rangeExpression => GetSymbolsOffOfExpression(rangeExpression.LeftOperand),
                QualifiedNameSyntax qualifiedName => GetSymbolsOffOfName(qualifiedName.Left),
                AliasQualifiedNameSyntax aliasName => GetSymbolsOffOffAlias(aliasName.Alias),
                MemberBindingExpressionSyntax _ => GetSymbolsOffOfConditionalReceiver(node.GetParentConditionalAccessExpression() !.Expression),
                _ => ImmutableArray <ISymbol> .Empty,
            });
Beispiel #9
0
            public override SyntaxList <StatementSyntax> VisitWithBlock(VBSyntax.WithBlockSyntax node)
            {
                var name = SyntaxFactory.ParseName(node.WithStatement.Expression.ToString());

                var statements = new List <StatementSyntax>();

                foreach (var stmVB in node.Statements)
                {
                    var stmCS = stmVB.Accept(this);
                    foreach (ExpressionStatementSyntax item in stmCS)
                    {
                        InvocationExpressionSyntax    ioc = (InvocationExpressionSyntax)item.Expression;
                        MemberBindingExpressionSyntax mb  = (MemberBindingExpressionSyntax)ioc.Expression;

                        var mas = SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, name, mb.Name);

                        var r = SyntaxFactory.InvocationExpression(mas, ioc.ArgumentList);
                        statements.Add(SyntaxFactory.ExpressionStatement(r));
                    }
                }

                return(SyntaxFactory.List <StatementSyntax>(statements));
            }
Beispiel #10
0
        public override Evaluation VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
        {
            node.Name?.Accept <Evaluation>(this);

            return(base.VisitMemberBindingExpression(node));
        }
        private Location GetLocation(ConditionalAccessExpressionSyntax conditionalAccessExpression, MemberBindingExpressionSyntax firstMemberBindingExpression)
        {
            var sourceSpanEnd   = firstMemberBindingExpression.GetLocation().SourceSpan.End;
            var sourceSpanStart = conditionalAccessExpression.GetLocation().SourceSpan.Start;
            var location        = Location.Create(conditionalAccessExpression.SyntaxTree, TextSpan.FromBounds(sourceSpanStart, sourceSpanEnd));

            return(location);
        }
Beispiel #12
0
 public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     throw new NotImplementedException();
 }
Beispiel #13
0
        public override Ust VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
        {
            var result = ConvertId(node.Name.Identifier);

            return(result);
        }
 private string GetDiagnosedUsage(ConditionalAccessExpressionSyntax conditionalAccess, MemberBindingExpressionSyntax firstMemberBinding)
 => $"{conditionalAccess.Expression}{conditionalAccess.OperatorToken}{firstMemberBinding.OperatorToken}{firstMemberBinding.Name}";
        public MemberBindingExpressionTranslation(MemberBindingExpressionSyntax syntax, SyntaxTranslation parent) : base(syntax, parent)
        {
            Name = syntax.Name.Get<SimpleNameTranslation>(this);

        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="node"></param>
 public override sealed void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     this.OnNodeVisited(node, this.type.IsInstanceOfType(node));
     base.VisitMemberBindingExpression(node);
 }
 public TameMemberBindingExpressionSyntax(MemberBindingExpressionSyntax node)
 {
     Node = node;
     AddChildren();
 }
 //
 // Summary:
 //     Called when the visitor visits a MemberBindingExpressionSyntax node.
 public virtual void VisitMemberBindingExpression(MemberBindingExpressionSyntax node);
 public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     base.VisitMemberBindingExpression(node);
 }
Beispiel #20
0
 public override SyntaxNode VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     node = (MemberBindingExpressionSyntax)base.VisitMemberBindingExpression(node);
     Classes.Add(node);
     return(node);
 }
Beispiel #21
0
        public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
        {
            node.Name?.Accept(this);

            base.VisitMemberBindingExpression(node);
        }
Beispiel #22
0
 public MemberBindingExpressionTranslation(MemberBindingExpressionSyntax syntax, SyntaxTranslation parent) : base(syntax, parent)
 {
     Name = syntax.Name.Get <SimpleNameTranslation>(this);
 }
 public static Doc Print(MemberBindingExpressionSyntax node)
 {
     return(Doc.Concat(Token.Print(node.OperatorToken), Node.Print(node.Name)));
 }
Beispiel #24
0
 public static void Write(this MemberBindingExpressionSyntax syntax, IIndentedTextWriterWrapper textWriter, IContext context)
 {
     textWriter.Write(".");
     syntax.Name.Write(textWriter, context);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="node"></param>
 public override sealed void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     this.OnNodeVisited(node);
     if (!this.traverseRootOnly) base.VisitMemberBindingExpression(node);
 }
Beispiel #26
0
 internal static string GetName(this MemberBindingExpressionSyntax value) => value?.Name.GetName();
Beispiel #27
0
 public override void VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     this.VisitExpression(node);
 }
 public override Expr VisitMemberBindingExpression(MemberBindingExpressionSyntax node)
 {
     return(base.VisitMemberBindingExpression(node));
 }
 public MemberBindingStatementInterpreter(StatementInterpreterHandler statementInterpreterHandler, MemberBindingExpressionSyntax memberBindingExpression)
 {
     this.statementInterpreterHandler = statementInterpreterHandler;
     this.memberBindingExpression     = memberBindingExpression;
 }