Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rebuild All не собирает модули #56

Closed
serssp opened this issue Mar 13, 2015 · 7 comments
Closed

Rebuild All не собирает модули #56

serssp opened this issue Mar 13, 2015 · 7 comments

Comments

@serssp
Copy link

serssp commented Mar 13, 2015

Возможно из-за возвращения пустого массива в DotNetCompiler.getInputFileTypes ?

@VISTALL
Copy link
Member

VISTALL commented Mar 13, 2015

Тоисть в .NET проекте - Rebuild All не собирает все модули?

@serssp
Copy link
Author

serssp commented Mar 13, 2015

Создал визардом .Net проект, один модуль.
"Make module" сборку собирает, dll я получаю. Если нажать "Rebuild All" в каталог попадают только зависимые dll собственно компиляция не выполняется.
Я немного потрейсил :)
Rebuild All вызывает CompileDriver#translate, далее по каждому модулю, перебераются трансляторы.
А в if где формируется список файлов для компиляции мы не заходим. Т.к. DotNet компилятор не первый, условие не выполняется.

if (snapshot == null || ContainerUtil.intersects(generatedTypes, compilerManager.getRegisteredInputTypes(compiler)))

compilerManager.getRegisteredInputTypes вызвращает пустой массив, т.к. компилятор не регистрирует расширения файлов.
Как то так...

@VISTALL
Copy link
Member

VISTALL commented Mar 13, 2015

Спасибо. Я помню этот код. Что бы вернуть там C#FileType, нужно что бы в текущем контексте(плагин .NET) было известно про C# плагин. А это не так.

Я точно не помню логику, но если Вы точно сказали, значит нужно будет править платформу (или убрать с .NET плагин компилятор для языков)

@VISTALL
Copy link
Member

VISTALL commented Mar 13, 2015

Обновил коммент, неверно написал

@VISTALL
Copy link
Member

VISTALL commented Mar 13, 2015

Но как оказалось это не так. Исправлено в consulo/consulo@be83cb7

Если интересно - могу обьяснить в чем была проблема

@VISTALL VISTALL closed this as completed Mar 13, 2015
@serssp
Copy link
Author

serssp commented Mar 13, 2015

Конечно интересно.
On Mar 13, 2015 4:51 PM, "Valeriy Semenchuk" notifications@github.com
wrote:

Но как оказалось это не так. Исправилено в consulo/consulo@be83cb7
consulo/consulo@be83cb7

Если интересно могу обьяснить в чем была проблема


Reply to this email directly or view it on GitHub
#56 (comment)
.

@VISTALL
Copy link
Member

VISTALL commented Mar 13, 2015

По сути банальная проблема. Я не досмотрел.

Есть интерфейс CompileModuleScopeFactory, который создает Scope для модуля во время компиляции.

По дефолту - создается ModuleCompileScope, и он ищет в Sources папках(как в java src/ и прочее).

Как известно вам в .NET - нету подобного, все ищется в корневой (имеется своя реализация CompileModuleScopeFactory)

Make Module - правильно создавал Scope для компиляции. А вот Rebuild создавал класс по имени ProjectScope. В нем и была проблема. По сути он - Composite Scope of All Modules, но он обходил CompileModuleScopeFactory. В итоге они искал в папках которые помечены как Sources, а таких небыло в проекте.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants