Nitra ice
От: meadow_meal  
Дата: 15.01.17 00:39
Оценка:
При обновлении моего проекта до последней версии Нитры проект перестал компилироваться с ошибкой:

2>C:\Program Files (x86)\Nemerle\Net-4.0\Nemerle.MSBuild.targets(289,5): error : internal compiler error: got some unknown exception of type System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
2>       в DotNet.AstUtils.ResolveAll[TSymbol,TRef](ImmutableArray`1 refs, Builder& result)
2>       в DotNet.AstUtils.MakeConstructedType(ILocated ast, ImmutableArray`1 args, DependentPropertyEvalContext context)
2>       в DotNet.QualifiedReference.Generic.EvalProperties(DependentPropertyEvalContext context)
2>       в Nitra.Ast.AstMembers.AstDependentProperty.EvalProperties(DependentPropertyEvalContext context)
2>       в Nitra.Ast.AstMembers.AstMember.AstList.EvalProperties(DependentPropertyEvalContext context)
2>       в Nitra.Ast.TopAst.EvalProperties(DependentPropertyEvalContext context)
2>       в DotNet.NamespaceMember.AstList.EvalProperties(DependentPropertyEvalContext context)
2>       в DotNet.ExplicitNamespace.EvalProperties(DependentPropertyEvalContext context)
2>       в DotNet.NamespaceMember.AstList.EvalProperties(DependentPropertyEvalContext context)
2>       в DotNet.CompilationUnit.EvalProperties(DependentPropertyEvalContext context)
2>       в Nitra.Declarations.EvalPropertiesHost.EvalProperties(DependentPropertyEvalContext context, IDependentPropertyContainer obj, Single statistics)
2>       в Nitra.Declarations.ProjectEvalPropertiesHost.ExecutePass(DependentPropertyEvalContext context, String passName)
2>       в Nitra.Declarations.EvalPropertiesHost.EvalProperties(DependentPropertyEvalContext context, String passName, Int32 stage)
2>       в DotNet.CompilationUnit.RefreshProject(CancellationToken cancellationToken, ImmutableArray`1 files, Object data)
2>       в Nitra.ProjectSystem.Project.UpdateProperties(CancellationToken cancellationToken)
2>       в Nitra.Compiler.CompilingNitraProject.BeforeTypedMembers()
2>       в Nemerle.Compiler.MacroColorizator.InGlobalColor(FunctionVoid fn)
2>       в Nitra.InvokeNitraCompiler_assembly_preaddMacro.Run(Typer _N__1, list`1 parms)
2>       в Nemerle.Compiler.TypesManager.AttributeMacroExpansion.Expand()
2>       в Nemerle.Compiler.TypesManager.ExpandMacros()
2>       в Nemerle.Compiler.TypesManager.Run()
2>       в Nemerle.Compiler.ManagerClass.Run()
2>       в Nemerle.CommandlineCompiler.MainClass.main_with_catching()
2>Done building project "Igor.Grammar.nproj" -- FAILED.


Последняя ревизия Нитры с которой все работает — 09ead507c498e93e5e0e696391904e8b5746a90b 10.12.2016 4:30:04 Refactoring of UnionScope

Если я комментирую все декларации в нитра-файлах, кроме CompilationUnit, то проект естественно не компилируется, но ice нет. Но стоит раскомментировать что-то еще — и сразу ice.

Например:
    ast CompilationUnit
    {
        in ContainingTable : TableScope;

        Modules.ContainingTable = ContainingTable;
        Usings.Scope = ContainingTable;
        Usings.ImportScopeIn = ContainingTable;
        Modules.ImportScope = Usings.ImportScopeOut;

        Usings : Using*;
        Modules : Module*;
    }
    
    ast Using : BindableAst
    {
    stage 1:
        out Ref : Ref[ModuleSymbol] = ModuleRef.Ref.Resolve();
        out Module : ModuleSymbol = Ref.Symbol;
        inout ImportScope : Scope;

        ModuleRef.Scope = Scope;
        ImportScopeOut = Ref.Symbol.MemberTable.UnionWith(ImportScopeIn);

        ModuleRef : Reference;
    }


Раскомментирую ast Using — сразу Ice. Закомментирую — остаются только нормальные ошибки.

Буду признателен за любую помощь.
Re: Nitra ice
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.17 01:36
Оценка:
Здравствуйте, meadow_meal, Вы писали:

_>При обновлении моего проекта до последней версии Нитры проект перестал компилироваться с ошибкой:


Если можно пришли мне проект по почте vlad@rsdn.org.

Завтра попробую разобраться.

Ну, а пока надо откатиться до рабочей версии.

Еще надо проверить какая версия Немерла используется. Желательно использовать последнюю.

Да, комит следующий за 09ead507c498e93e5e0e696391904e8b5746a90b уже не работает? Другими словами именно следующий комит сломан?

Нужно установить коммит на котором начинает просходить этот вылет.

Еще хорошо бы понять что в действителности равно null.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 15.01.2017 2:13 VladD2 . Предыдущая версия . Еще …
Отредактировано 15.01.2017 2:10 VladD2 . Предыдущая версия .
Re[2]: Nitra ice
От: meadow_meal  
Дата: 15.01.17 10:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если можно пришли мне проект по почте vlad@rsdn.org.


Послал. Там, конечно, местами тот еще трэш.

VD>Завтра попробую разобраться.


Спасибо!

VD>Ну, а пока надо откатиться до рабочей версии.


Конечно. Но уж очень не терпится опробовать плагин к студии.

VD>Еще надо проверить какая версия Немерла используется. Желательно использовать последнюю.


Проблема воспроизводится со всеми последними версиями nemerle: 1.2.516, 1.2.518 и 1.2.522 (последняя на nemerle.org)

VD>Да, комит следующий за 09ead507c498e93e5e0e696391904e8b5746a90b уже не работает? Другими словами именно следующий комит сломан?


Сейчас проверил точнее.

09ead507c498e93e5e0e696391904e8b5746a90b 10.12.2016 4:30:04 Refactoring of UnionScope — ОК
9a5f43b9f3153a11b9cd64528dbbe6411f3660b8 10.12.2016 16:46:34 Refactoring — ОК
6984c9f079a4e2c429af5dcc142432a321a796ce 13.12.2016 0:48:58 Refactoring (use ImmutableArray) — Не компилируется сама Нитра
06702e09626b758f1f099bfe0445eab7d5d0b78b 13.12.2016 0:50:03 Add IProjectSupport.DeconstructType() method. — Нитра компилируется, в моем проекте ICE

VD>Еще хорошо бы понять что в действителности равно null.


Попробую подебажить.
Re[3]: Nitra ice
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.01.17 19:47
Оценка:
Здравствуйте, meadow_meal, Вы писали:

_>Послал. Там, конечно, местами тот еще трэш.


Что-то ни фига не пришло.
Попробуй, может, на Яндекс: vladdq@ya.ru

_>Сейчас проверил точнее.


_>09ead507c498e93e5e0e696391904e8b5746a90b 10.12.2016 4:30:04 Refactoring of UnionScope — ОК

_>9a5f43b9f3153a11b9cd64528dbbe6411f3660b8 10.12.2016 16:46:34 Refactoring — ОК
_>6984c9f079a4e2c429af5dcc142432a321a796ce 13.12.2016 0:48:58 Refactoring (use ImmutableArray) — Не компилируется сама Нитра
_>06702e09626b758f1f099bfe0445eab7d5d0b78b 13.12.2016 0:50:03 Add IProjectSupport.DeconstructType() method. — Нитра компилируется, в моем проекте ICE

Т.е. проблема в 06702e09626b758f1f099bfe0445eab7d5d0b78b?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Nitra ice
От: meadow_meal  
Дата: 15.01.17 20:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что-то ни фига не пришло.

VD>Попробуй, может, на Яндекс: vladdq@ya.ru

Да, не заметил что письмо вернулось. На всякий случай вместо аттачмента отправил ссылку на google drive.

_>>09ead507c498e93e5e0e696391904e8b5746a90b 10.12.2016 4:30:04 Refactoring of UnionScope — ОК

_>>9a5f43b9f3153a11b9cd64528dbbe6411f3660b8 10.12.2016 16:46:34 Refactoring — ОК
_>>6984c9f079a4e2c429af5dcc142432a321a796ce 13.12.2016 0:48:58 Refactoring (use ImmutableArray) — Не компилируется сама Нитра
_>>06702e09626b758f1f099bfe0445eab7d5d0b78b 13.12.2016 0:50:03 Add IProjectSupport.DeconstructType() method. — Нитра компилируется, в моем проекте ICE

VD>Т.е. проблема в 06702e09626b758f1f099bfe0445eab7d5d0b78b?


Да, либо в 06702e09626b758f1f099bfe0445eab7d5d0b78b либо в предыдущем (6984c9f079a4e2c429af5dcc142432a321a796ce) — его проверить не удалось, так как нитра не скомпилировалась.
Re[2]: Nitra ice
От: meadow_meal  
Дата: 18.01.17 23:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Еще хорошо бы понять что в действителности равно null.


Выяснить это мне так и не удалось. Но хорошая новость оказалась в том, что проблема воспроизводится только на релизной сборке Нитры. На дебажной все компилируется.

Попробовал собрать интеграцию для своего языка, все заработало, очень круто, спасибо.

Но есть проблема. Если я открываю файл вне проекта или файл, включенный в какой-либо проект не с build action Compile, то в логе интеграции появляется эксепшн Can't find file with id=xxx, и интеграция не работает.

Если я ставлю build action Compile, то интеграция работает, а вот проект не компилируется (мой файл пытается скомпилироваться как немерле или C# код, в зависимости от типа проекта).

В проекте Немерле я могу выставить build action Nitra, тогда все ок. Но есть ли способ получить работающую интеграцию пользовательского языка внутри C# проекта? У пользователя может не быть установлен Nemerle, да и в моем случае логично подключать файлы именно к C#-проекту, так как из него генерируется целевой C# код.

В идеале хотелось бы чтобы интеграция — как минимум подсветка синтаксиса — работала и для файлов вне проекта тоже.. Это возможно?
Re: Nitra ice
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.01.17 18:09
Оценка:
Здравствуйте, meadow_meal, Вы писали:

_>При обновлении моего проекта до последней версии Нитры проект перестал компилироваться с ошибкой:


Наконец то дошли руки до твоего проекта.

После некоторых правок (замены длл-ей на свежие, правки референсов на относительные и исправления явно не верно заданного свойства DocumentationFile в одном из проектов) все скомпилировалось без ошибок.

Единственное, что — не вызывается батник merge.cmd:
    <PostBuildEvent>$(OutputPath)\merge.cmd</PostBuildEvent>

так как батник расположен в c:\!\!igor\bin\merge.cmd, а свойство OutputPath указывает на локальную дирректорию.

Но, как я понимаю, это уже к делу не относится.

Возможно дело в несоответствии версий длл-ей.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Nitra ice
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.01.17 18:17
Оценка: 2 (1)
Здравствуйте, meadow_meal, Вы писали:

_>Выяснить это мне так и не удалось. Но хорошая новость оказалась в том, что проблема воспроизводится только на релизной сборке Нитры. На дебажной все компилируется.


Хм. У меня релизной и нет.

_>Попробовал собрать интеграцию для своего языка, все заработало, очень круто, спасибо.


Здорово!

_>Но есть проблема. Если я открываю файл вне проекта или файл, включенный в какой-либо проект не с build action Compile, то в логе интеграции появляется эксепшн Can't find file with id=xxx, и интеграция не работает.


Я знаю эту проблему. Как раз хотел заняться этим, но вот отвлекся на другие вещи. В ближайшее время поправлю.

_>Если я ставлю build action Compile, то интеграция работает, а вот проект не компилируется (мой файл пытается скомпилироваться как немерле или C# код, в зависимости от типа проекта).


_>В проекте Немерле я могу выставить build action Nitra, тогда все ок. Но есть ли способ получить работающую интеграцию пользовательского языка внутри C# проекта? У пользователя может не быть установлен Nemerle, да и в моем случае логично подключать файлы именно к C#-проекту, так как из него генерируется целевой C# код.


Тут вопрос о том какая реакция нужна. Если достаточно поддержки интеграции, то используй BuildAction Nitra.

BuildAction Nitra будет работать и внутри C#-проекта. Только надо вначале заменить один тег "<Compile ..." на "<Nitra ...". Далее шарповская интеграция позволит выбирать его прямо в gui.

Ну, и можно подхачить проектный файл и перехватить обработку требуемых файлов.

_>В идеале хотелось бы чтобы интеграция — как минимум подсветка синтаксиса — работала и для файлов вне проекта тоже.. Это возможно?


Можно. На недели сделаю.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.