Exemplo n.º 1
0
        public void VisitAccessorList(AccessorListSyntax node)
        {
            if (node == null)
                throw new ArgumentNullException("node");

            node.Validate();

            bool isSimple =
                _writer.Configuration.LineBreaksAndWrapping.Other.PlaceAbstractAutoPropertyIndexerEventDeclarationOnSingleLine &&
                node.Accessors.All(p =>
                    (!HasExtras(p) || _writer.Configuration.LineBreaksAndWrapping.Other.PlaceSingleLineAccessorAttributeOnSameLine) &&
                    p.Body == null
                );

            if (!isSimple)
            {
                isSimple =
                    _writer.Configuration.LineBreaksAndWrapping.Other.PlaceSimplePropertyIndexerEventDeclarationOnSingleLine &&
                    node.Accessors.All(p =>
                        (!HasExtras(p) || _writer.Configuration.LineBreaksAndWrapping.Other.PlaceSingleLineAccessorAttributeOnSameLine) &&
                        IsSimpleBody(p.Body)
                    );
            }

            if (isSimple)
            {
                _writer.WriteSpace();
                _writer.WriteSyntax(Syntax.OpenBrace);
                _writer.WriteSpace();
            }
            else
            {
                _writer.BeginBlock();
            }

            bool hadOne = false;

            foreach (var accessor in node.Accessors)
            {
                if (hadOne && isSimple)
                    _writer.WriteSpace();
                else
                    hadOne = true;

                accessor.Accept(this);
            }

            if (isSimple)
            {
                _writer.WriteSpace();
                _writer.WriteSyntax(Syntax.CloseBrace);
                _writer.WriteLine();
            }
            else
            {
                _writer.EndBlock();
            }
        }