EvilBeaver / oscript-library

Библиотека полезных скриптов для 1Script
http://oscript.io/docs/page/libraries
Apache License 2.0
118 stars 46 forks source link

Вопрос: Организация библиотек #139

Closed theshadowco closed 7 years ago

theshadowco commented 8 years ago

Столкнулся с проблемой, прошу помощи. Есть Библиотека, содержащая Модуль (src/core/Модули/Модуль.os) и Класс (src/core/Классы/Класс.os) + Скрипт (src/script.os). В скрипте используется команда "#Использовать "core"".

Все работает, пока я не захочу использовать методы Модуля в Классе. Класс модули конечно же не видит, следовательно необходимо прописать "Использовать "../core/Модули"" В этом случае происходит ошибка "Невозможно загрузить модуль Модуль. Такой символ уже определен."

Создание файла lib.config, package-loader.os не помогает.

Выход пока один, вынесение Модуля в отдельную библиотеку, но это мне кажется неверным.

theshadowco commented 8 years ago

По сути нехватает #IFDEF ... #ENDIF

EvilBeaver commented 8 years ago

Модули загружаются первее и видят друг-друга. Классы загружаются позже и видят модули. Использование модуля в классе должно работать. Можете прислать пример, воспроизводящий ошибку?

theshadowco commented 8 years ago

demo.zip Во вложении демо-либа

theshadowco commented 8 years ago

Возможно это ошибка именно VSC и вопрос к плагину

nixel2007 commented 8 years ago

Возможно это ошибка именно VSC и вопрос к плагину

Запуск производится штатной командой oscript -encoding=utf-8 path/to/os/file, при этом текущий рабочий каталог установлен корнем проекта.

theshadowco commented 8 years ago

Запуск производится штатной командой oscript -encoding=utf-8 path/to/os/file, при этом текущий рабочий каталог установлен корнем проекта.

@nixel2007 при сохранении модуля такое же поведение?

nixel2007 commented 8 years ago

@theshadowco

@nixel2007 при сохранении модуля такое же поведение?

при сохранении модуля не отрабатывает запуск скрипта, только oscript -encoding=utf-8 check path/to/os/file. CWD всегда корень проекта. Если задана настройка language-1c-bsl.linterEntryPoint, то дополнительно передается параметр -env

EvilBeaver commented 8 years ago

@theshadowco я так и не понял, речь идет о проверках внутри VSC, или скрипт реально не запускается на выполнение и выдает ошибку компиляции?

theshadowco commented 8 years ago

@EvilBeaver

  1. если выполнять проверку / компиляцию в VSC Класса без указания пути к модулям - не видит (понятно почему, спасибо за разъяснение @nixel2007), если компилить скрипт, то он видит и модули и класс
  2. если сделать чтобы класс компилился (прописать Использовать), то он проходит проверку / компиляцию в VSC, но перестает компилится скрипт (но в VSC он проверку все равно проходит нормально).
EvilBeaver commented 8 years ago

@theshadowco поясни, пожалуйста, еще раз. Я скачал архив demo.zip.

Куда я должен нажать и что запустить, чтобы увидеть ошибку?

theshadowco commented 8 years ago

@EvilBeaver Сорри за задержку в ответе, завал.

Итак, вариант как есть

вариант исправляем ошибку скрипта, для чего комментируем строку #Использовать "../Модули" в файле Классы/Класс1.os

artbear commented 7 years ago

@theshadowco Из твоих ответов увидел, что ошибка есть во всех случаях. Но задачу ты закрыл? Проблема есть или нет в итоге?

theshadowco commented 7 years ago

@artbear не люблю висяки.

В принципе есть следующая ишуза, https://github.com/EvilBeaver/oscript-library/issues/161, с предложением о приватных модулях в камменте. Если получится, то упомянутая здесь проблема тоже уйдет.