RelocationRequest - Location in deleted text!
От: hardcase Пират http://nemerle.org
Дата: 24.04.10 12:03
Оценка:
Пытаюсь боросться с напастью — при редактировании текста в #develop сообщаю компилятору об изменениях (приходится подгонять #develop-овскую модель документа к вижуалстудийной) и в некоторых случаях мне выскакивает Assertion Failure сообщение:

---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
Location in deleted text!
---- Assert Long Message ----


    at Completion._N_relocatePoint_44696(TextPoint point, RelocationInfo info)  
    at Completion.Relocate(Location loc, RelocationInfo info)  
    at Engine.TryRelocate(ISource source)  C:\!Proj\nemerle\VsIntegration\Nemerle.Compiler.Utils\Nemerle.Completion2\Engine\BackgroundWorks\Engine-UpdateCompileUnit.n(74)
    at Engine.UpdateCompileUnit(AsyncRequest request)  C:\!Proj\nemerle\VsIntegration\Nemerle.Compiler.Utils\Nemerle.Completion2\Engine\BackgroundWorks\Engine-UpdateCompileUnit.n(213)
    at AsyncRequest.DoWork()  C:\!Proj\nemerle\VsIntegration\Nemerle.Compiler.Utils\Async\AsyncRequest\AsyncRequest.n(65)
    at AsyncWorker.ThreadProc()  C:\!Proj\nemerle\VsIntegration\Nemerle.Compiler.Utils\Async\AsyncWorker.n(118)
    at ThreadHelper.ThreadStart_Context(Object state)  
    at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)  
    at ThreadHelper.ThreadStart()


При том, я заметил, что в Nemerle Studio это сообщение также появляется, но окошка с Assertion-ом не вываливается, просто текст в трэйс-логе. Я так понял, что координаты измененного блока в #develop я вычисляю корректно, раз проблема появляется не только в моем коде.


Тестовые примеры:
1)
using System;
using System.Console;
using SCG = System.Collections.Generic;

using Nemerle.Assertions;
using Nemerle.Text;
using Nemerle.Utility;

namespace test111 {

    module Program {

        Main() : void {|<<< выделить и удалить от сюда
до сюда >>>|def a = ["Hello", "world", "!"];
            WriteLine(NString.Concat(" ", a));
            WriteLine("Press any key to continue...");
            _ = ReadKey(true);
        }

    }

}

2) Добавить строку в начале файла и удалить ее:
|<<< выделить и удалить
>>>|using System;
using System.Console;
using SCG = System.Collections.Generic;


Ну и последнее, как можно сделать так, чтобы assertion-окно не вываливалось юзеру, например появлялось только в Debug билде.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.