コード例 #1
0
 internal void Render(LuaPropertyAdapterExpressionSyntax node)
 {
     if (node.Expression != null)
     {
         node.Expression.Render(this);
         Write(node.OperatorToken);
     }
     node.Name.Render(this);
     node.ArgumentList.Render(this);
 }
コード例 #2
0
        public override LuaSyntaxNode VisitElementAccessExpression(ElementAccessExpressionSyntax node)
        {
            var expression = (LuaExpressionSyntax)node.Expression.Accept(this);
            var symbol     = (IPropertySymbol)semanticModel_.GetSymbolInfo(node).Symbol;
            LuaIdentifierNameSyntax baseName = symbol == null ? LuaIdentifierNameSyntax.Empty : GetMemberName(symbol);
            LuaPropertyOrEventIdentifierNameSyntax identifierName  = new LuaPropertyOrEventIdentifierNameSyntax(true, baseName);
            LuaPropertyAdapterExpressionSyntax     propertyAdapter = new LuaPropertyAdapterExpressionSyntax(expression, identifierName, true);

            if (symbol != null)
            {
                List <LuaExpressionSyntax> arguments = BuildArgumentList(symbol, symbol.Parameters, node.ArgumentList);
                propertyAdapter.ArgumentList.AddArguments(arguments);
            }
            else
            {
                var argumentList = (LuaArgumentListSyntax)node.ArgumentList.Accept(this);
                propertyAdapter.ArgumentList.Arguments.AddRange(argumentList.Arguments);
            }
            return(propertyAdapter);
        }