Size: a a a

var chat = new Chat();

2020 February 14

ВE

Виталий EasyMod in var chat = new Chat();
буду знать, никогда бы не подумал
источник

НМ

Николай Мехматовец in var chat = new Chat();
Это описание. Доку видел. Мне именно код нужен, где это происходит.
источник

ВE

Виталий EasyMod in var chat = new Chat();
Николай Мехматовец
Это описание. Доку видел. Мне именно код нужен, где это происходит.
ну всмысле, какой код?
источник

ВE

Виталий EasyMod in var chat = new Chat();
Это не тот код?
источник

vl

vova lantsov in var chat = new Chat();
Николай Мехматовец
Это описание. Доку видел. Мне именно код нужен, где это происходит.
Зачем?)
источник

vl

vova lantsov in var chat = new Chat();
Это будет какой-то супер низкоуровневый участок кода
источник

НМ

Николай Мехматовец in var chat = new Chat();
Виталий EasyMod
ну всмысле, какой код?
Код парсера, который берет компилируемый код с using и преобразует все вхождения в try-finally блок)
источник

ВE

Виталий EasyMod in var chat = new Chat();
это нужно код компилятора искать смотреть
источник

A

Andrey in var chat = new Chat();
Какая жесть )))
источник

ВE

Виталий EasyMod in var chat = new Chat();
и не говори
источник

НМ

Николай Мехматовец in var chat = new Chat();
vova lantsov
Зачем?)
Из академических интересов. Хочу понять, где и как происходит это преобразование. Как работает парсер. Есть ли возможность его "надстройки"
источник

НМ

Николай Мехматовец in var chat = new Chat();
Про "надстройку" - это по типу JIT-оптимизаций можно ли что-то там менять
источник

НМ

Николай Мехматовец in var chat = new Chat();
Вообще интересна возможность подсунуть на этапе компиляции в using ещё и catch блок с определённым обработчиком исключений (чтобы все embedded_statement для using могли обрабатываться при возникновении исключений). Понимаю, что это извращение, и ничто не мешает нам оборачивать using в try-catch, однако, интересна сама такая возможность.
источник

vl

vova lantsov in var chat = new Chat();
Николай Мехматовец
Из академических интересов. Хочу понять, где и как происходит это преобразование. Как работает парсер. Есть ли возможность его "надстройки"
Напиши issue в репе roslyn, спроси где лежит обработка using
источник

vl

vova lantsov in var chat = new Chat();
Или попробуй сам найти, через поиск
источник

НМ

Николай Мехматовец in var chat = new Chat();
Уже ищу)
источник

vl

vova lantsov in var chat = new Chat();
Тут таких извращенцев как ты нет, так что не подскажем)
источник

ВE

Виталий EasyMod in var chat = new Chat();
vova lantsov
Тут таких извращенцев как ты нет, так что не подскажем)
Просто не все себя активно проявляют 😉
источник

НМ

Николай Мехматовец in var chat = new Chat();
Хмм, что-то похожее на правду:

protected override StatementSyntax CreateUsingStatement(LocalDeclarationStatementSyntax declarationStatement, SyntaxTriviaList sameLineTrivia, SyntaxList<StatementSyntax> statementsToSurround)
       {
           var usingStatement = SyntaxFactory.UsingStatement(
               declaration: declarationStatement.Declaration.WithoutTrivia(),
               expression: null, // Declaration already has equals token and expression
               statement: SyntaxFactory.Block(statementsToSurround));

           return usingStatement
               .WithCloseParenToken(usingStatement.CloseParenToken
                   .WithTrailingTrivia(sameLineTrivia));
       }
источник

vl

vova lantsov in var chat = new Chat();
Николай Мехматовец
Хмм, что-то похожее на правду:

protected override StatementSyntax CreateUsingStatement(LocalDeclarationStatementSyntax declarationStatement, SyntaxTriviaList sameLineTrivia, SyntaxList<StatementSyntax> statementsToSurround)
       {
           var usingStatement = SyntaxFactory.UsingStatement(
               declaration: declarationStatement.Declaration.WithoutTrivia(),
               expression: null, // Declaration already has equals token and expression
               statement: SyntaxFactory.Block(statementsToSurround));

           return usingStatement
               .WithCloseParenToken(usingStatement.CloseParenToken
                   .WithTrailingTrivia(sameLineTrivia));
       }
Ну там надо ниже копать)
источник