Я тут последнее время усиленно занимаюсь сабжем и в резултате ряда смелых экспериментов советских учёных наконец-то удалось добиться определённых результатов.
Большая просьба потестировать на предмет неправильного поведения отладчика в различных условиях.
Также возможны ICE в режиме отладки. Boot компилируется, интеграция собирается, тесты проходят, но всё возможно. Дело в том, что новый вариант отладки построен на добавлении дополнительного элемента в typed tree и вполне возможно, что я не выявил все места где этот элемент не ожидается.
Именами переменных и методов пока не занимался, поэтому не обращайте пока на это внимание. Это надо делать совместно с интеграцией. Займусь этим позже.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Я тут последнее время усиленно занимаюсь сабжем и в резултате ряда смелых экспериментов советских учёных наконец-то удалось добиться определённых результатов.
IT>Большая просьба потестировать на предмет неправильного поведения отладчика в различных условиях.
Ага, в процессе твоей работы ты поломал локейшоны для заголовков методов: теперь заголовок метода имеет локейшон, распространющийся на всё тело метода.
Я решил подебажить компилятор, чтобы узнать, где имеено рассчитывается неправильное значение, но попытка провалилась. По наведении на мышку ни одно значение не показывается, по F10 управление вообще переходит в непредсказуемые места (как будто .pdb и исходники рассинхронизированы)
Вот.
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Ага, в процессе твоей работы ты поломал локейшоны для заголовков методов: теперь заголовок метода имеет локейшон, распространющийся на всё тело метода.
Дай примерчик.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Ага, в процессе твоей работы ты поломал локейшоны для заголовков методов: теперь заголовок метода имеет локейшон, распространющийся на всё тело метода.
IT>Дай примерчик.
using System;
using System.Collections.Generic;
using System.Text;
using Nemerle;
using Nemerle.Collections;
namespace SPlaneCutter2Lib
{
/// <summary>
/// Description of SimpleSolver.
/// </summary>class SimpleSolver
{
public event Progress : CutterProgressDelegate; // здесь, в локейшон не включается public. Это я сам попробую поправить.protected OnProgress(message : string) : void
{
when(Progress != null)
{
Progress(this, CutterProgressEventArgs(message, 0, 0, 0, 0));
}
}
public Process() : void// вот этот вот метод
{
}
}
}
Здравствуйте, Сергей Туленцев, Вы писали:
СТ> public event Progress : CutterProgressDelegate; // здесь, в локейшон не включается public. Это я сам попробую поправить.
Здесь лучше не public включить, а event убрать.
СТ> public Process() : void // вот этот вот метод
Это место отлично работает.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>> public event Progress : CutterProgressDelegate; // здесь, в локейшон не включается public. Это я сам попробую поправить.
IT>Здесь лучше не public включить, а event убрать.
Это тогда будет несогласнованным с остальными частями, потому что во всех остальных местах (которые помню) модификаторы доступа включаются. И это полезно для форматтера.
СТ>> public Process() : void // вот этот вот метод
IT>Это место отлично работает.
А нажми ка Ctrl+K, D (или Edit->Advanced->Format document) при включенном форматировании. Что будет? У меня эксепшон, потому что он пытается найти открывающую скобку после заголовка метода, а не может её найти (потому что локейшон заголовка заканчивается в конце метода, а дальне нет открывающих скобок)
Здравствуйте, Сергей Туленцев, Вы писали:
IT>>Здесь лучше не public включить, а event убрать.
СТ>Это тогда будет несогласнованным с остальными частями, потому что во всех остальных местах (которые помню) модификаторы доступа включаются. И это полезно для форматтера.
Модификаторы нужно исключать. Если что-то полезно для форматера, то для него нужно сделать это отдельно.
IT>>Это место отлично работает.
СТ>А нажми ка Ctrl+K, D (или Edit->Advanced->Format document) при включенном форматировании. Что будет? У меня эксепшон, потому что он пытается найти открывающую скобку после заголовка метода, а не может её найти (потому что локейшон заголовка заканчивается в конце метода, а дальне нет открывающих скобок)
Я бы сделал для форматера отдельный поиск лексем. К тому же для форматера не нужна типизация, т.е. этот поиск можно сделать быстрее.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
СТ>>Это тогда будет несогласнованным с остальными частями, потому что во всех остальных местах (которые помню) модификаторы доступа включаются. И это полезно для форматтера. IT>Модификаторы нужно исключать. Если что-то полезно для форматера, то для него нужно сделать это отдельно.
Отдельный парсер писать?
IT>>>Это место отлично работает.
СТ>>А нажми ка Ctrl+K, D (или Edit->Advanced->Format document) при включенном форматировании. Что будет? У меня эксепшон, потому что он пытается найти открывающую скобку после заголовка метода, а не может её найти (потому что локейшон заголовка заканчивается в конце метода, а дальне нет открывающих скобок)
IT>Я бы сделал для форматера отдельный поиск лексем. К тому же для форматера не нужна типизация, т.е. этот поиск можно сделать быстрее.
Отдельный лексер и отдельный поиск уже есть. Но писать еще и отдельный парсер считаю делом нецелсообразным. Да и по сути вопроса: ошибка воспроизводится?
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Отдельный парсер писать?
Зачем? Можно задействовать всё тот-же ExprWalker. Просто ExprFinder заточен на GoTo и подсказки. Если мы будем мешать всё в одну кучу, то скорее всего у нас получится плохо и то и другое.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Отдельный парсер писать?
IT>Зачем? Можно задействовать всё тот-же ExprWalker. Просто ExprFinder заточен на GoTo и подсказки. Если мы будем мешать всё в одну кучу, то скорее всего у нас получится плохо и то и другое.
Я не использую ExprFinder/ExprWalker. Но зато использую штатный парсер и результаты его работы.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Я не использую ExprFinder/ExprWalker. Но зато использую штатный парсер и результаты его работы.
IT>Тогда у тебя есть всё, что нужно.
IT, сколько раз говорить, что поломан парсер то... Причем поломан в процессе твоей работы над отладкой. Ты так и не ответил, вылетает ли эксепшон при попытке форматирования того куска кода.
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>IT, сколько раз говорить, что поломан парсер то...
Парсер не поломан. Как раз теперь он работает как надо, учитывая нужды большей части потребителей.
СТ>Причем поломан в процессе твоей работы над отладкой.
Отладка comes first. Всё остальное потом.
СТ>Ты так и не ответил, вылетает ли эксепшон при попытке форматирования того куска кода.
Вылетает диалог с каким-то сообщением.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>IT, сколько раз говорить, что поломан парсер то... IT>Парсер не поломан. Как раз теперь он работает как надо, учитывая нужды большей части потребителей. СТ>>Ты так и не ответил, вылетает ли эксепшон при попытке форматирования того куска кода. IT>Вылетает диалог с каким-то сообщением.
Странные какие-то нужды. Не зря же у метода есть Header, а есть Body. И физически она располагаются в разных местах.
Как я понял, тебе это чинить недосуг/лень/что-то-еще. Попробую сам поправить.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Сергей Туленцев, Вы писали:
IT>>>Только отлдку не сломай.
СТ>>У меня она и так не работает.
IT>Давай примеры, будем фиксить.
Поставь бряк на MainParser.n, line 854.
И попробуй пошагово оттуда идти. У меня не показывается ни одного значения по наведению на мышку, плюс, управление прыгает в совершенно непонятные места.
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Поставь бряк на MainParser.n, line 854. СТ>И попробуй пошагово оттуда идти. У меня не показывается ни одного значения по наведению на мышку, плюс, управление прыгает в совершенно непонятные места.
Ты бут пересобирал?
Если нам не помогут, то мы тоже никого не пощадим.