Документирующие комментарии в генерируемом коде
От: artelk  
Дата: 20.05.15 12:16
Оценка: :)
<[ decl:
    public class MyClass2
    {
        /// <summary>
        /// This is documentation
        /// </summary>
        public Prop : string
        {
            get { "hi" }
        }
    }
]>


Summary не добавляется в генерируемый Prop. Как быть?
Re: Документирующие комментарии в генерируемом коде
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.15 14:08
Оценка:
Здравствуйте, artelk, Вы писали:

A>Summary не добавляется в генерируемый Prop. Как быть?


К сожалению, никак. Док-коменты в цитатах не поддерживаются.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Документирующие комментарии в генерируемом коде
От: artelk  
Дата: 20.05.15 15:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, artelk, Вы писали:


A>>Summary не добавляется в генерируемый Prop. Как быть?


VD>К сожалению, никак. Док-коменты в цитатах не поддерживаются.


Ок, ясно. А как их задать?
Re[3]: Документирующие комментарии в генерируемом коде
От: _NN_ www.nemerleweb.com
Дата: 20.05.15 17:21
Оценка:
Здравствуйте, artelk, Вы писали:

A>Ок, ясно. А как их задать?


Например поправить компилятор
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Документирующие комментарии в генерируемом коде
От: artelk  
Дата: 20.05.15 17:27
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Здравствуйте, artelk, Вы писали:


A>>Ок, ясно. А как их задать?


_NN>Например поправить компилятор


Не, интим не предлагать...
Похоже проще рядом файл mylib.XML сгенерить, куда в нужном формате камменты вписать.
Re: Документирующие комментарии в генерируемом коде
От: fddima  
Дата: 20.05.15 17:37
Оценка: 135 (3)
Здравствуйте, artelk, Вы писали:

В целом, надо править компилятор.
Однако, там, года так 3 назад, можно было это дело сделать приблизительно так:
Суть в том, что мы устанавливаем декларациям Location, и добавляем этот Location в DocComments, и они генерируются.
Как я сказал, дело было очень давно — ничего не помню.
По крайней мере, если в этом направлении порыть — думаю можно что-нибудь придумать.
UPD: В общем, задача сводится к тому, что-бы XmlDump в компиляторе генерировал нужное.
UPD2: Оказывается я уже писал об этом Генерируем xmldoc из макросов
Автор: fddima
Дата: 18.07.12
.

// module CompileEnv (своё)

        mutable _documentLine : int;

        public SetDescription(typer : Typer, member : ClassMember.TypeDeclaration, summary : string) : void
        {
            when (EmitDescriptions)
            {
                def manager = typer.Manager;
                unless (string.IsNullOrEmpty(manager.Options.XmlDocOutputFileName))
                {
                    _documentLine++;
                    member.Location = Location("_SetDescription_g_", _documentLine, 1, _documentLine, 1);
                    member.td.Location = member.Location;
                    manager.DocComments = manager.DocComments.Add(member.Location, $<#<summary>$summary</summary>#>);
                }
            }
        }

        public SetDescription(typer : Typer, member : ClassMember, summary : string) : void
        {
            when (EmitDescriptions)
            {
                def manager = typer.Manager;
                unless (string.IsNullOrEmpty(manager.Options.XmlDocOutputFileName))
                {
                    unless (EmitDebugSources) {
                        _documentLine++;
                        member.Location = Location(member.Location, _documentLine, 1);
                    }
                    manager.DocComments = manager.DocComments.Add(member.Location, $<#<summary>$summary</summary>#>);
                }
            }
        }


Использовалось как-то так:
// для типа
                    def typeDecl = <[decl: 
                    [System.CodeDom.Compiler.GeneratedCode($(CompileEnv.CompilerName : string), $(CompileEnv.CompilerVersion : string))]
                    public partial class $(@class.CliDeclarationName : usesite)
                    {
                    }]>;
                    CompileEnv.SetDescription(typer, typeDecl, @class.Descrpition);

// для члена
                        def fieldDecl = <[decl: public $(field.Name : usesite) : $(fieldType)
                            {
                                get { this.$(backStoreName : usesite) }
                                set { this.$(backStoreName : usesite) = value; }
                            } ]>;
                        def description = if (string.IsNullOrEmpty(field.NameBySpecification)) field.Description else $<#($(field.NameBySpecification)) $(field.Description)#>;
                        CompileEnv.DefineMember(typeBuilder, fieldDecl);
                        CompileEnv.SetDescription(typer, fieldDecl, description);
Отредактировано 20.05.2015 17:49 Mystic Artifact . Предыдущая версия . Еще …
Отредактировано 20.05.2015 17:46 Mystic Artifact . Предыдущая версия .
Отредактировано 20.05.2015 17:46 Mystic Artifact . Предыдущая версия .
Re[3]: Документирующие комментарии в генерируемом коде
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.15 20:41
Оценка:
Здравствуйте, artelk, Вы писали:

A>Ок, ясно. А как их задать?


Ну, или сгенерировать текст и скомпилить его через API, или можно попробовать подсунуть комментарии через Manager.DocComments. Это Map[Location, string].
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.