Здравствуйте, _Claus_, Вы писали:
_C_>поэтому мне хотелось бы, если возможно, получить ответ, почему я не имею, того что хочу, с моим кодом/проектом, без правок и добавлений.
Залез в проекты чтобы посмотреть почему ссылки кривые на немерловые сбокри... И что же я там увидил?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _Claus_, Вы писали:
_C_>>никаких ошибок не видел, в списке ошибок и предупреждений нет и компилируется.
VD>Странно.
_C_>>на скрине видно же, что с типом не лажаю.
VD>Упорный ты товарищ! VD>Я вижу обратное. ty описывает "object". Ежу понятно что object не вэлью-тип и что у него нет полей.
вообще это странность меня тоже удивляет, какой object в поле с типом? Выше моего понимания.
я списывал на странности отображения.
мыло твое с ходу не нашел. вот выложил zip проектов. надеюсь, это поможет.
Re[17]: доступ к классам и структурам в Reference из макроса
на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL.
полученный обычным способом через typer.BindFixedType(t).TypeInfo приводится к ExternalTypeInfo, однако по
полям там пусто, а свойства-флаги неверны.
match(ty)
| estruct is LibraryReference.ExternalTypeInfo => estruct.GetFields(..) //пусто и неверно
способ есть?
Re: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL. _C_>полученный обычным способом через typer.BindFixedType(t).TypeInfo приводится к ExternalTypeInfo, однако по _C_>полям там пусто, а свойства-флаги неверны.
Это ты что-то накосячил. Информация о внешних типах доступна на самых ранних стадиях.
_C_>
_C_> match(ty)
_C_> | estruct is LibraryReference.ExternalTypeInfo => estruct.GetFields(..) //пусто и неверно
_C_>
Приводить тип к ExternalTypeInfo бессмысленно и не верно. Он в будущем вообще будет недоступн. Приводи к TypeInfo.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: доступ к классам и структурам в Reference из макроса
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, _Claus_, Вы писали:
_C_>>на этапе BeforeTypedMembers не удается получать информацию о классах или структурах в используемых DLL.
H>Зачем?
мне нужно в зависимости от их типа и содержимого генерить классы и методы поддержки. для датабазы.
Re[2]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
VD>> Он в будущем вообще будет недоступн. Приводи к TypeInfo.
_C_>с этого я начал. не работает. членов 0,
Значит ты где-то накосячил. Подобный код работает в сотни мест.
Скорее всего ты не верно флаги в GetMembers() задал. Это самая распространенная ошибка.
Так же, возможно, ты пытался вызвать GetMembers() у типа который с исходников собран.
_C_> из флагов для меня интересен IsValueType, всегда false. _C_>проверил в фазе WithTypedMembers — результат тот же.
Точно что-то напутал.
_C_>делаю так
_C_>def ty = typer.BindFixedType(fld_type) _C_>def members = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance )
А ты уверен, что в fld_type не находится тип собранный из исходников? В прочем на WithTypedMembers он должен был дать список членов.
Короче, воспроизведи это дело в отдельном маленьком макросе и пришли его код сюда или мне на мыло. Я погляжу что у тебя там не так.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: доступ к классам и структурам в Reference из макроса
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _Claus_, Вы писали:
_C_>>да при чем тут. заведи свой класс или struct с public полями из внешней либы, вот добавь в макромодуль это _C_>>
_C_>>struct OutType
_C_>> public x : int
_C_>> public y : string
_C_>>
_C_>>и увидишь проблему
VD>Завел... Попробовал. Проблем нет.
код точно тот, который я разместил?
в GetFields есть поля?
в IsValueVisible == true?
если все да, у нас либо разные компиляторы, либо причина в том, что другой код, который болтается в проекте и никак не связал
логически, влияет на вычисления. В качестве эксперимента я могу сделать чистый проект с одним макросом. Стоит делать?
Re[9]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>код точно тот, который я разместил?
Да.
_C_>в GetFields есть поля?
Да.
_C_>в IsValueVisible == true?
Мой телепатер подсказывает, что речь видимо идет о:
field.GetMemType().IsValueType
Проверил и его:
using Nemerle;
using Nemerle.Collections;
using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;
using Nemerle.Compiler.Typedtree;
using Nemerle.Text;
using Nemerle.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
namespace MacroLibrary
{
[MacroUsage(MacroPhase.BeforeTypedMembers, MacroTargets.Method)]
macro TEST(typeBuilder : TypeBuilder, method : ClassMember.Function, expr : PExpr)
syntax ("TEST", expr)
{
TESTImpl.DoTransform(Macros.ImplicitCTX(), typeBuilder, method, expr)
}
module TESTImpl
{
public DoTransform(typer : Typer, _typeBuilder : TypeBuilder, _method : ClassMember.Function, expr : PExpr) : void
{
Macros.DefineCTX(typer);
match (expr)
{
| <[ $(_ : name) : $type ]> =>
def ty = typer.BindFixedType(type).TypeInfo;
def fields = ty.GetFields(BindingFlags.Public %| BindingFlags.NonPublic %| BindingFlags.Instance);
foreach (field in fields)
Message.Hint(expr.Location, $"Field: $(field.Name) IsValueVisible = $(field.GetMemType().IsValueType)");
| e => Message.Error(e.Location, <#Expected: name : type #>)
}
}
}
}
Все, ОК. Выводит:
Main.n(14,8): warning : hint: Field: x IsValueVisible = True
Main.n(14,8): warning : hint: Field: y IsValueVisible = False
_C_>если все да, у нас либо разные компиляторы,
Это вряд ли.
_C_>либо причина в том, что другой код, который болтается в проекте и никак не связал логически, влияет на вычисления.
Причины могут быть разные. Одна из них чья-то невнимательность. Например, ты тип описал в том же проекте.
Я бы начал с проверки этого.
_C_>В качестве эксперимента я могу сделать чистый проект с одним макросом. Стоит делать?
Не думаю, что это что-то изменит. Но попробуй. По крайней мере будет ясно в чем проблема.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: доступ к классам и структурам в Reference из макроса
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _Claus_, Вы писали:
_C_>>код точно тот, который я разместил?
VD>Да.
_C_>>в GetFields есть поля?
VD>Да.
_C_>>в IsValueVisible == true?
VD>Мой телепатер подсказывает, что речь видимо идет о: VD>
VD>field.GetMemType().IsValueType
VD>
это откуда этот field вдруг взялся?
я имею ввиду:
def ty = typer.BindFixedType(type).TypeInfo
ty.IsValueType ??
Re[10]: доступ к классам и структурам в Reference из макроса
VD>Дело в криво написанном имени типа (при объявлении псевдо-поля) или не указанном (указанном криво, не открытом) пространстве имен.
VD>Предлагаю отгадать как я смог об этом догадаться, при условии, что код этот я даже не видел.
все перепроверено 10 раз, еще до конкурса "Ану-ка парни", с которым была надежда получить заодно это решение.
вот скрин, который убедит, что имена в порядке, иначе там бы не было останова. (структуру перенес рядом).
Здравствуйте, _Claus_, Вы писали:
_C_>все перепроверено 10 раз, еще до конкурса "Ану-ка парни", с которым была надежда получить заодно это решение. _C_>вот скрин, который убедит, что имена в порядке, иначе там бы не было останова. (структуру перенес рядом). _C_>http://imageshost.ru/photo/235824/id1148761.html
Это тот же самый скрин. Он убеждает только том, что в type у тебя некорректный тип.
Обрати внимание на значение переменной ty. Там не тот тип что ты хотел, а object. "object" после связывания появляется когда тип неудалось связать. При этом еще должно было появиться сообщение об ошибке. Ты его благополучно пропустил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: доступ к классам и структурам в Reference из макроса
никаких ошибок не видел, в списке ошибок и предупреждений нет и компилируется.
на скрине видно же, что с типом не лажаю. и сам тип OutType тоже показан, что не глюк. перед этим пробовал другие типы, которые
у меня рядом описаны — то же самое.
я вижу что там object и также вижу, что там он видит таки, что это ExternalType (см. тип), и мой косяк я тут не вижу. привожу тебе Main:
#pragma warning disable 10005
#pragma indent
using System
...
using DBLib //там OutType и макросыclass dum
f = ""
g = 2
TEST z : OutType
...
может ну их эти external struct? отдам стандартному сериализатору и дело с концом.
или кого из ребят попросить, чтобы сказали, у них как у меня или как у тебя. и тогда списать на мою черную полосу.
Re[15]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>никаких ошибок не видел, в списке ошибок и предупреждений нет и компилируется.
Странно.
_C_>на скрине видно же, что с типом не лажаю.
Упорный ты товарищ!
Я вижу обратное. ty описывает "object". Ежу понятно что object не вэлью-тип и что у него нет полей.
_C_> и сам тип OutType тоже показан,
Что тут показано? То что текст был "OutType"? Ну, что с того? Может быть 100500 причин почем этот текст не сбиндился на тип который ты подразумевал.
Короче, присылай мне свой проект на мыло. Завтра погляжу.
Но и так очевидно, что проблема в не в коде макроса.
_C_> что не глюк. перед этим пробовал другие типы, которые у меня рядом описаны — то же самое.
Я бы тебе посоветовал перестать изгаляться с отступным синтаксисом. Тогда бы был полноценный интеллисенс и часть ошибок просто нельзя было бы совершить.
_C_>я вижу что там object и также вижу, что там он видит таки, что это ExternalType (см. тип), и мой косяк я тут не вижу.
А чей?
_C_>привожу тебе Main:
В этом нет особого смысла. Скорее имеет смысл приводить описание OutType, дело может быть не в нем, а в том, что библиотека не подключена. Так что надо смотреть на весь проект.
_C_>может ну их эти external struct? отдам стандартному сериализатору и дело с концом.
_C_>или кого из ребят попросить, чтобы сказали, у них как у меня или как у тебя. и тогда списать на мою черную полосу.
Лучше голосование устроить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>я вижу что там object и также вижу, что там он видит таки, что это ExternalType (см. тип), и мой косяк я тут не вижу. привожу тебе Main:
TypeInfo для System.Object всегда будет представлена экземпляром ExternalTypeInfo, так как System.Object объявлен в mscorlib.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[15]: доступ к классам и структурам в Reference из макроса
_C_>#pragma warning disable 10005
_C_>#pragma indent
_C_>using System
_C_>...
_C_>using DBLib //там OutType и макросы
_C_>class dum
_C_> f = ""
_C_> g = 2
_C_> TEST z : OutType
_C_>...
_C_>
Если ты подключил макросы как macro reference то типов (в т.ч. и OutType) из макросборок тебе не видать как своих ушей.
Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[16]: доступ к классам и структурам в Reference из макроса
H>Если ты подключил макросы как macro reference то типов (в т.ч. и OutType) из макросборок тебе не видать как своих ушей. H>Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.
как Reference подключена изначально.
Re[17]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>вообще это странность меня тоже удивляет, какой object в поле с типом? Выше моего понимания. _C_>я списывал на странности отображения.
_C_>мыло твое с ходу не нашел. вот выложил zip проектов. надеюсь, это поможет.
Ну, и что я вижу в это проекте?
public struct OutType
s : int
f : string
Где здесь публичные поля то?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
H>>Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.
_C_>как Reference подключена изначально.
С Reference все нормально. Но скриншот не соответствует тому что в проекте. А в типе поля таки private.
Я тебе сразу сказал, что нужно смотреть на описание типа. Ты в очередной раз меня проигнорировал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: доступ к классам и структурам в Reference из макроса
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _Claus_, Вы писали:
H>>>Из этих сборок берутся только макросы. Так что складывай свою структуру в отдельную dll и подключай ее к компилируемому проекту.
_C_>>как Reference подключена изначально.
VD>С Reference все нормально. Но скриншот не соответствует тому что в проекте. А в типе поля таки private.
VD>Я тебе сразу сказал, что нужно смотреть на описание типа. Ты в очередной раз меня проигнорировал.
non-public флаг стоит это 1) с public работать не будет также!!
Re[18]: доступ к классам и структурам в Reference из макроса
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, _Claus_, Вы писали:
_C_>>мыло твое с ходу не нашел.
H>Конечно, на ник VladD2 кликнуть невероятно сложно
внутри здесь файлы не аттачаться. я искал гуглоадрес — он не показывается в профиле из конфы
Re[19]: доступ к классам и структурам в Reference из макроса
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, _Claus_, Вы писали:
_C_>>non-public флаг стоит это 1) с public работать не будет также!!
VD>А, ты поставь полям public. Что гадать то?
дорогой Vlad! прежде чем подымать я перепробовал и public и все остальное. ессно с public то же самое.
Re[22]: доступ к классам и структурам в Reference из макроса
в выложенном проекте выставлена точка основа после получения списка.
если ничего не добавлять, кроме public в поля OutType — список пустой?
у меня пустой.
а если добавлять , то что?
Re[22]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
VD>>Я добавил в твоем проекте public, добавил вывод информации о полях и все чудесным образом заработало.
_C_>вот скрин с public — это ничего не меняет. обрати внимание на содержимое s в Локальном окне. ty.IsValueType == false.
У тебя какая-то хрень в проекте.
В том проекте что ты дал по ссылке я поправил ссылки на немерловые сборки (которые, почему-то, были прибиты гвоздями), добавил public полям, и вставил цикл который выводит информацию о полях в виде хинтов.
Кстати, нескромный вопрос... Как ты макрос под отладку запускаешь?
ЗЫ
Зачем проверять IsValueType у System.Object?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
H>>Конечно, на ник VladD2 кликнуть невероятно сложно
_C_>внутри здесь файлы не аттачаться. я искал гуглоадрес — он не показывается в профиле из конфы
Слушай ты меня извини за грубость, но это уже какой-то пипец.
Как можно не найти мыло которое находится в самом верху профайла доступ к которому получается одним нажатием на ник в сообщении?
Какой на фиг гуглоадрес? Прочитай внимательно что тебе написали "ник VladD2 кликнуть".
Все твои проблемы вызваны вот этим. Ты просто не слушаешь что тебе говорят.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: доступ к классам и структурам в Reference из макроса
Здравствуйте, VladD2, Вы писали:
VD>Как можно не найти мыло которое находится в самом верху профайла доступ к которому получается одним нажатием на ник в сообщении?
А в Janus'e это не так — по клику на ник в сообщении открывается страничка "Основная информация о пользователе", на которой адреса электронной почты нет. Но на ней есть ссылка "Посмотреть карточку на сайте RSDN", по клику на которой открывается страничка с адресом электронной почты и другой инфой.
Mumitroller
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
Re[22]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>в выложенном проекте выставлена точка основа после получения списка.
Точка основа не может быть выложена с проектом. Она у тебя локально хранится.
_C_>если ничего не добавлять, кроме public в поля OutType — список пустой?
Если ничего не добавлять, то туда не попасть. Я даже не заходил отладчиком. Я добавил код (что тебе приводил выше) выводящий информацию о полях в виде хинов.
_C_>у меня пустой. _C_>а если добавлять , то что?
Еще раз спрашиваю — как ты подпадаешь в отладочный режим?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: доступ к классам и структурам в Reference из макроса
VD>Еще раз спрашиваю — как ты подпадаешь в отладочный режим?
в окне Обозреватель
1) сделать DBlib запускаемым
2) щелкнуть на DBLib правой клавишей, выбрать Отладка-> Запустить новый экземпляр
мне важно знать, что с моим кодом не так, потому что когда ты начинаешь править или вносить изменения
ты пользуешься знаниями, которые я пытаюсь получить.
поэтому мне хотелось бы, если возможно, получить ответ, почему я не имею, того что хочу, с моим кодом/проектом, без правок и добавлений.
второй вариант — хз его знает, устроит тоже, но в этом случае мне будет проблематично двигаться дальше.
спасибо за терпение!
Re[24]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>в окне Обозреватель _C_>1) сделать DBlib запускаемым _C_>2) щелкнуть на DBLib правой клавишей, выбрать Отладка-> Запустить новый экземпляр
Новый экзепляр чего? Какой ехе-ник. Что в параметрах командной строки?
Может у тебя просто при отладке что-то старое запускается.
Попробуй просто поставить assert2(false).
_C_> мне важно знать, что с моим кодом не так, потому что когда ты начинаешь править или вносить изменения _C_> ты пользуешься знаниями, которые я пытаюсь получить.
Я тебе уже раза три описал то что я сделал. Давай еще раз:
1. Я обновил ссылки на сборки немерла, которые у тебя, почему-то, были заданы жестко.
2. Добавил к полям структуры public.
3. Добавил в твой код цикл в котором информацию о полях выводил с помощью Message.Hint() (чтобы отладчик не запускать).
Другими словами — никаких существенных изменений.
_C_>поэтому мне хотелось бы, если возможно, получить ответ, почему я не имею, того что хочу, с моим кодом/проектом, без правок и добавлений.
Я бы тебе посоветовал сделать все с нуля без выкрутасов и оптимизаций:
1. Создай пустой проект и новый макрос. Причем делай это визардами, а не в рукопашную.
2. Не используй этот долбенный индент-синтакс, чтобы иметь возможность пользоваться интеллисенсом.
3. Вместо использования отладчика используй вывод информации с помощью Message.Hint(). Тем самым исключишь проблемы которые могут быть вызваны отладкой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: доступ к классам и структурам в Reference из макроса
VD>Тым нам тут раз 10 сказал, что сборку подключал как Reference, но что мы видим?
скопировал командную как было из учебного проекта, видел что в проекте MainTest у меня DBLib стоит в Reference, а не в Macro Reference,
и с чистой совестью утверждал, что все ок.
VD>Любому ежику понятно, что при этом подключении сборки типов из нее не увидишь.
теперь понятно и мне!
VD>Вообще, не ясно зачем было использовать типы из макро-сборки.
чтобы не создавать отдельный проект для столь незначительного момента.
Спасибо большое!!
Re[26]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>скопировал командную как было из учебного проекта, видел что в проекте MainTest у меня DBLib стоит в Reference, а не в Macro Reference, _C_>и с чистой совестью утверждал, что все ок.
Мы программисты. Мы должны верить только фактам. А все предположения нужно проверять. Иначе через некоторое время придется поверить в нечистую силу и тому подобное.
Если видно в отладчике System.Object — это неоспоримый факт. А раз так, то нужно искать причины этого факта. Я тебе сразу сказал, что причины эти кроются в типе (его описании или подключении). Ты мне не верил и упорно добивался каких-то потусторонних знаний.
VD>>Вообще, не ясно зачем было использовать типы из макро-сборки. _C_>чтобы не создавать отдельный проект для столь незначительного момента.
Говоря по русски — от лени. Я сам ленив до невозможности, но искать часами (а в твоем случае днями) ошибки — это же в сто раз более лениво. Не находишь?
По сему нужно строить работу так, чтобы подобного рода ошибки не мешали движению вперед.
В твоем случае первое в чем нужно было убедиться — видно ли тип в конечном проекте.
Кроме того в твоих проектах бардак. Там туча ворнингов которые скрывают реальные ошибки.
Двигаться надо короткими перебежками. Сделал изменение, проверь его корректность. И только потом двигайся дальше. Иначе быстро придешь к состоянию когда происходящее вокруг будет казаться мистикой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: доступ к классам и структурам в Reference из макроса
VD>Вообще, не ясно зачем было использовать типы из макро-сборки.
>>чтобы не создавать отдельный проект для столь незначительного момента.
не верно написал, мне нужны типы в коде из макросборки. В частности, сохраняемые
объекты у меня наследуют интерфейс IPersist, который описан в макросборке и для него там генерится код реализации.
также там я держу тип базы и всякое по мелочи.
попробовал убрать -m: и вообще перестало работать.
Re[27]: доступ к классам и структурам в Reference из макроса
VD>Кроме того в твоих проектах бардак. Там туча ворнингов которые скрывают реальные ошибки.
это набросок, а не релизный продукт. во вторых я начинающий в N.
VD>Двигаться надо короткими перебежками. Сделал изменение, проверь его корректность.
только так и делаю. вот нактнулся на это, и разбираюсь до победного(пока не пойму)
Re[26]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>не верно написал, мне нужны типы в коде из макросборки. В частности, сохраняемые _C_>объекты у меня наследуют интерфейс IPersist, который описан в макросборке и для него там генерится код реализации. _C_>также там я держу тип базы и всякое по мелочи.
Дык и вынеси нужные типы в отдельную сборку (библиотеку). Зачем в ратайме нужна сборка с проектами?
_C_>попробовал убрать -m: и вообще перестало работать.
Еще бы.
Попробуй m на r заменить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: доступ к классам и структурам в Reference из макроса
Здравствуйте, _Claus_, Вы писали:
_C_>это набросок, а не релизный продукт. во вторых я начинающий в N.
Так не бывает. Если ест грязь, то качества нет. А раз так, то ты вечно будешь ловить баги.
В набросках, ты можешь забить дизайн, архитектуру и другие красивые слова. Но качество кода страдать не должно.
Я тебе ведь говорил, что если ты получил object — это значит, что тип не был связан. А об этом выводится сообщение. Если бы у тебя не было тонны ворнингов, то ты бы увидел их в консоли, которая открывается у тебя при отладке. Но ты ничего не заметил, как это было дцатое сообщение в консоли.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.