Пример #1
0
        protected override void GenerateInner(CodeGenerator generator)
        {
            bool needsTarget = true;

            if (TargetObject is CodeThisReferenceExpression)
            {
                needsTarget = generator.ContainsLocalByName(MethodName);
            }

            if (needsTarget)
            {
                if (TargetObject.Precedence > PrecedenceGroup.Primary)
                {
                    generator.Write(TokenType.Punctuation, '(');
                }
                TargetObject.Generate(generator);
                if (TargetObject.Precedence > PrecedenceGroup.Primary)
                {
                    generator.Write(TokenType.Punctuation, ')');
                }
                generator.Write(TokenType.Punctuation, '.');
            }

            generator.OutputIdentifier(TokenType.Identifier, MethodName);

            if (TypeArguments.Count > 0)
            {
                generator.Write(TokenType.Punctuation, '<');

                bool first = true;
                foreach (var typeArgument in TypeArguments)
                {
                    if (first)
                    {
                        first = false;
                    }
                    else
                    {
                        generator.Write(TokenType.Punctuation, ',');
                        generator.Write(TokenType.Space, ' ');
                    }
                    typeArgument.Generate(generator);
                }

                generator.Write(TokenType.Punctuation, '>');
            }
        }
        protected override void GenerateInner(CodeGenerator generator)
        {
            bool needsTarget = true;

            if (TargetObject is CodeThisReferenceExpression)
            {
                needsTarget = generator.ContainsLocalByName(FieldName);
            }

            if (needsTarget)
            {
                if (TargetObject.Precedence > PrecedenceGroup.Primary)
                {
                    generator.Write(TokenType.Punctuation, '(');
                }
                TargetObject.Generate(generator);
                if (TargetObject.Precedence > PrecedenceGroup.Primary)
                {
                    generator.Write(TokenType.Punctuation, ')');
                }
                generator.Write(TokenType.Punctuation, '.');
            }
            generator.OutputIdentifier(TokenType.Identifier, FieldName);
        }