diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index ea0b66d77..1451ca11a 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -11,7 +11,7 @@ jobs: if: (github.repository == 'EvilBeaver/OneScript' ) && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.event.repository.full_name) steps: - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 17 distribution: temurin diff --git a/Build_Core.csproj b/Build.csproj similarity index 99% rename from Build_Core.csproj rename to Build.csproj index 94e4a1c82..93eb134ab 100644 --- a/Build_Core.csproj +++ b/Build.csproj @@ -295,6 +295,7 @@ + + diff --git a/Jenkinsfile b/Jenkinsfile index 94be3b1f1..b964c0e6b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ pipeline { bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" src/1Script.sln /t:restore && mkdir doctool" bat "chcp $outputEnc > nul\r\n dotnet publish src/OneScriptDocumenter/OneScriptDocumenter.csproj -c Release -o doctool" - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:CleanAll;PrepareDistributionFiles;CreateNuget" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:CleanAll;PrepareDistributionFiles;CreateNuget" stash includes: 'tests, built/**', name: 'buildResults' } @@ -126,7 +126,7 @@ pipeline { deleteDir() } unstash 'buildResults' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:Test" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:Test" junit 'tests/*.xml' } @@ -136,7 +136,7 @@ pipeline { stage('Linux testing') { agent{ docker { - image 'mcr.microsoft.com/dotnet/sdk:5.0' + image 'mcr.microsoft.com/dotnet/sdk:6.0' label 'linux' } } @@ -187,16 +187,20 @@ pipeline { unstash 'buildResults' unstash 'nativeApiSo' - bat 'xcopy output\\na-proxy\\*64.so built\\linux-64\\bin\\' + bat ''' + chcp 65001 > nul + dir output\\na-proxy + xcopy output\\na-proxy\\*64.so built\\linux-x64\\bin\\ /F + '''.stripIndent() script { if (env.BRANCH_NAME == "preview") { echo 'Building preview' - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:PackDistributions /p:Suffix=-pre%BUILD_NUMBER%" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:PackDistributions /p:Suffix=-pre%BUILD_NUMBER%" } else{ - bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:PackDistributions" + bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:PackDistributions" } } archiveArtifacts artifacts: 'built/**', fingerprint: true @@ -213,7 +217,7 @@ pipeline { agent { label 'master' } steps { - + cleanWs() unstash 'dist' unstash 'vsix' diff --git a/README.md b/README.md index 7737b5d62..25bf3d5c1 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,57 @@ OneScript позволяет создавать и выполнять текст - выполнить команду `mono ovm.exe use stable` - перезапустить терминал -Донастройка Self-Contained варианта поставки (не требующего инсталляции dotnet) +#### Донастройка Self-Contained варианта поставки (не требующего инсталляции dotnet) ``` chmod +x ./oscript xattr -d com.apple.quarantine *.dylib oscript codesign -s - ./oscript ``` + + +# Ручная локальная сборка + +## Подготовка + +Ниже приведены ссылки на дистрибутивы, однако, учтите, что ссылки могут меняться со временем и их актуальность не гарантируется. Нужен dotnet SDK и компилятор C++, скачать можно из любого места, которое нагуглится. + +* Установить [MS BuildTools](https://visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=buildtools&rel=16), при установке включить таргетинг на .net6, .net4.8, установить компилятор C++. + +## Сборка + +Запустить Developer Command Prompt (появится в меню Пуск после установки MSBuildTools или Visual Studio). Перейти в каталог репозитория OneScript. Далее приведены команды в консоли Developer Command Prompt +Сборка выполняется с помощью msbuild. Таргеты: + +* CleanAll - очистка результатов предыдущих сборок +* BuildAll - подготовить файлы для поставки +* MakeCPP;MakeFDD;MakeSCD;BuildDebugger - отдельные таргеты сборки для подготовки разных типов поставки +* PrepareDistributionFiles - сборка полных пакетов поставки (включая библиотеки) +* PackDistributions - подготовка ZIP архивов поставки +* CreateNuget - создать пакеты для публикации в NuGet + +**Параметры сборки** + +* VersionPrefix - префикс номера релиза, его основная часть, например, 2.0.0 +* VersionSuffix - суффикс номера, который обычно выступает в качестве произвольного суффикса версионирования по semver, например, beta-786 (необязателен) +* NoCppCompiler - если True - не установлен компилятор C++, в сборку не будут добавлены компоненты C++ (поддержка NativeApi) + +Все поставляемые файлы будут размещены в каталоге `built` в корне репозитория 1Script + +### Сборка содержимого дистрибутивов в отдельном каталоге + +```bat +msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles +``` + +### Сборка с ручным указанием версии + +```bat +msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:VersionPrefix=2.0.0 +``` + +### Сборка ZIP-дистрибутивов + +```bat +msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles;PackDistributions /p:VersionPrefix=2.0.0 /p:VersionSuffix=preview223 +``` \ No newline at end of file diff --git a/install/opm.ospx b/install/opm.ospx index 661b6ff2b..5fd862e52 100644 Binary files a/install/opm.ospx and b/install/opm.ospx differ diff --git a/install/package-loader.os b/install/package-loader.os index ae2b4a3ec..915c41a15 100644 --- a/install/package-loader.os +++ b/install/package-loader.os @@ -106,6 +106,9 @@ КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Модули")); КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Modules")); + КаталогиВК = Новый Массив; + КаталогиВК.Добавить(ОбъединитьПути(Путь, "Components")); + КаталогиВК.Добавить(ОбъединитьПути(Путь, "Компоненты")); Для Каждого мКаталог Из КаталогиКлассов Цикл @@ -118,6 +121,12 @@ ОбработатьКаталогМодулей(мКаталог, СтандартнаяОбработка, Отказ); КонецЦикла; + + Для Каждого мКаталог Из КаталогиВК Цикл + + ОбработатьКаталогВК(мКаталог, СтандартнаяОбработка, Отказ); + + КонецЦикла; КонецПроцедуры @@ -161,6 +170,75 @@ КонецПроцедуры +// По соглашению ВК должны лежать в подпапках, названных, как значения перечисления ТипПлатформы. +// Имя файла, являющегося внешней компонентой должно иметь префикс 1script_ +// Components +// net4 (фреймворк .net48 +// 1script_barcode.dll +// dotnet (.net современных версий, он же netcore) +// 1script_barcode.dll +// NativeApi +// Windows_x86 +// 1script_barcode.dll +// Windows_x86_64 +// 1script_barcode.dll +// Linux_x86_64 +// 1script_barcode.so +// остальные не поддерживаются (ЖВПР) +// +Процедура ОбработатьКаталогВК(Знач Путь, СтандартнаяОбработка, Отказ) + + СИ = Новый СистемнаяИнформация(); + МажорнаяВерсия = Лев(СИ.Версия,1); + + Если МажорнаяВерсия = "1" Тогда + ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "net4")); + ИначеЕсли МажорнаяВерсия = "2" Тогда + ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "dotnet")); + Иначе + Вывести("Неизвестная мажорная версия системы: " + МажорнаяВерсия); + КонецЕсли; + + ОбработатьКомпонентыNativeApi(Путь); + +КонецПроцедуры + +Процедура ОбработатьБиблиотекиCLR(Путь) + КандидатыВКомпоненты = НайтиФайлы(Путь, "1script_*.dll"); + Для Каждого Кандидат Из КандидатыВКомпоненты Цикл + Если Не Кандидат.ЭтоФайл() Тогда + Продолжить; + КонецЕсли; + + Вывести("Загружаю файл " + Кандидат.Имя); + ЗагрузитьБиблиотеку(Кандидат.ПолноеИмя); + + КонецЦикла; +КонецПроцедуры + +Процедура ОбработатьКомпонентыNativeApi(Путь) + СИ = Новый СистемнаяИнформация; + ИмяПодкаталога = ОбъединитьПути(Путь, Строка(СИ.ТипПлатформы)); + Вывести("Ищу внешние компоненты в каталоге " + Путь); + + #Если Windows Тогда + Расширение = ".dll"; + #Иначе + Расширение = ".so"; + #КонецЕсли + + КандидатыВКомпоненты = НайтиФайлы(ИмяПодкаталога, "1script_*"+Расширение); + Для Каждого Кандидат Из КандидатыВКомпоненты Цикл + Если Не Кандидат.ЭтоФайл() Тогда + Продолжить; + КонецЕсли; + + Вывести("Загружаю файл " + Кандидат.Имя); + ПодключитьВнешнююКомпоненту(Кандидат.ПолноеИмя, Кандидат.Имя, ТипВнешнейКомпоненты.Native); + + КонецЦикла; +КонецПроцедуры + Процедура ДобавитьКлассЕслиРанееНеДобавляли(ПутьФайла, ИмяКласса) Вывести("Добавляю класс, если ранее не добавляли " + ИмяКласса); Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда diff --git a/src/1Script.sln b/src/1Script.sln index 058492ea8..3f8c681ea 100644 --- a/src/1Script.sln +++ b/src/1Script.sln @@ -18,7 +18,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D14BF321-348C-46B8-B96A-43A22BA7AC10}" ProjectSection(SolutionItems) = preProject oscommon.targets = oscommon.targets - ..\Build_Core.csproj = ..\Build_Core.csproj + ..\Build.csproj = ..\Build.csproj ..\Jenkinsfile = ..\Jenkinsfile EndProjectSection EndProject diff --git a/src/1Script_Mono.sln b/src/1Script_Mono.sln deleted file mode 100644 index f138cfbd8..000000000 --- a/src/1Script_Mono.sln +++ /dev/null @@ -1,165 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2020 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ScriptEngine", "ScriptEngine\ScriptEngine.csproj", "{F062D1D9-D307-492A-A56B-FF3C55F8F6C0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ScriptEngine.HostedScript", "ScriptEngine.HostedScript\ScriptEngine.HostedScript.csproj", "{F09A46BD-5737-45E7-BA60-A47C9F7821A9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "oscript", "oscript\oscript.csproj", "{2590E2BB-CC1F-4775-80ED-451F45C9A4F1}" - ProjectSection(ProjectDependencies) = postProject - {795AA2F5-3074-4BC5-A30F-1B6354044D9B} = {795AA2F5-3074-4BC5-A30F-1B6354044D9B} - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StandaloneRunner", "StandaloneRunner\StandaloneRunner.csproj", "{795AA2F5-3074-4BC5-A30F-1B6354044D9B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D14BF321-348C-46B8-B96A-43A22BA7AC10}" - ProjectSection(SolutionItems) = preProject - oscommon.targets = oscommon.targets - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitTests", "NUnitTests\NUnitTests.csproj", "{93ACC849-E7E1-4695-B59D-54B3737E48A6}" - ProjectSection(ProjectDependencies) = postProject - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1} = {2590E2BB-CC1F-4775-80ED-451F45C9A4F1} - {F09A46BD-5737-45E7-BA60-A47C9F7821A9} = {F09A46BD-5737-45E7-BA60-A47C9F7821A9} - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0} = {F062D1D9-D307-492A-A56B-FF3C55F8F6C0} - {795AA2F5-3074-4BC5-A30F-1B6354044D9B} = {795AA2F5-3074-4BC5-A30F-1B6354044D9B} - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Component", "Component\Component.csproj", "{B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DebugServer", "DebugServer\DebugServer.csproj", "{C979F151-AA29-47E4-B020-3039BA0986D9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OneScript.DebugProtocol", "OneScript.DebugProtocol\OneScript.DebugProtocol.csproj", "{727A498F-BF50-42F8-8523-40C0B5B1B233}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "oscriptTests", "oscriptTest\oscriptTests.csproj", "{69A7869C-203C-4F09-AC3F-04E9B52AD7AB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{91059C5B-526C-4B81-B106-99DEFF542D1F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HTTPServices", "ASPNETHandler\HTTPServices.csproj", "{B7CD7F52-E387-490E-8F77-E1FB060401B5}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x86 = Release|x86 - ReleaseNetStandard|Any CPU = ReleaseNetStandard|Any CPU - ReleaseNetStandard|x86 = ReleaseNetStandard|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|x86.ActiveCfg = Debug|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Debug|x86.Build.0 = Debug|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|Any CPU.Build.0 = Release|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|x86.ActiveCfg = Release|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.Release|x86.Build.0 = Release|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {F062D1D9-D307-492A-A56B-FF3C55F8F6C0}.ReleaseNetStandard|x86.Build.0 = Release|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|x86.ActiveCfg = Debug|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Debug|x86.Build.0 = Debug|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|Any CPU.Build.0 = Release|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|x86.ActiveCfg = Release|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.Release|x86.Build.0 = Release|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {F09A46BD-5737-45E7-BA60-A47C9F7821A9}.ReleaseNetStandard|x86.Build.0 = Release|Any CPU - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|Any CPU.ActiveCfg = Debug|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|x86.ActiveCfg = Debug|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Debug|x86.Build.0 = Debug|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|Any CPU.ActiveCfg = Release|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|x86.ActiveCfg = Release|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.Release|x86.Build.0 = Release|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|x86 - {2590E2BB-CC1F-4775-80ED-451F45C9A4F1}.ReleaseNetStandard|x86.ActiveCfg = Release|x86 - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|x86.ActiveCfg = Debug|x86 - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Debug|x86.Build.0 = Debug|x86 - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|Any CPU.Build.0 = Release|Any CPU - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|x86.ActiveCfg = Release|x86 - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.Release|x86.Build.0 = Release|x86 - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {795AA2F5-3074-4BC5-A30F-1B6354044D9B}.ReleaseNetStandard|x86.ActiveCfg = Release|x86 - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Debug|x86.ActiveCfg = Debug|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|Any CPU.Build.0 = Release|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.Release|x86.ActiveCfg = Release|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {93ACC849-E7E1-4695-B59D-54B3737E48A6}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Debug|x86.ActiveCfg = Debug|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|Any CPU.Build.0 = Release|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.Release|x86.ActiveCfg = Release|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {B6C3C000-699B-4A2F-92D1-EEAEA9CFE2AB}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Debug|x86.ActiveCfg = Debug|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Release|Any CPU.Build.0 = Release|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Release|x86.ActiveCfg = Release|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.Release|x86.Build.0 = Release|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {C979F151-AA29-47E4-B020-3039BA0986D9}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Debug|Any CPU.Build.0 = Debug|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Debug|x86.ActiveCfg = Debug|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Debug|x86.Build.0 = Debug|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Release|Any CPU.ActiveCfg = Release|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Release|Any CPU.Build.0 = Release|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Release|x86.ActiveCfg = Release|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.Release|x86.Build.0 = Release|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {727A498F-BF50-42F8-8523-40C0B5B1B233}.ReleaseNetStandard|x86.Build.0 = Release|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.Debug|x86.ActiveCfg = Debug|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.Release|Any CPU.Build.0 = Release|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.Release|x86.ActiveCfg = Release|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.ReleaseNetStandard|Any CPU.ActiveCfg = ReleaseNetStandard|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.ReleaseNetStandard|Any CPU.Build.0 = ReleaseNetStandard|Any CPU - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Debug|x86.ActiveCfg = Debug|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Debug|x86.Build.0 = Debug|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Release|Any CPU.Build.0 = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Release|x86.ActiveCfg = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.Release|x86.Build.0 = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.ReleaseNetStandard|Any CPU.ActiveCfg = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.ReleaseNetStandard|Any CPU.Build.0 = Release|Any CPU - {B7CD7F52-E387-490E-8F77-E1FB060401B5}.ReleaseNetStandard|x86.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {69A7869C-203C-4F09-AC3F-04E9B52AD7AB} = {91059C5B-526C-4B81-B106-99DEFF542D1F} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {A4A871EF-C5A7-478F-907E-31C69A869973} - EndGlobalSection -EndGlobal diff --git a/src/OneScript.Core/Rcw/RcwMembersMetadataCollection.cs b/src/OneScript.Core/Rcw/RcwMembersMetadataCollection.cs index 826162b36..80386d5c5 100644 --- a/src/OneScript.Core/Rcw/RcwMembersMetadataCollection.cs +++ b/src/OneScript.Core/Rcw/RcwMembersMetadataCollection.cs @@ -14,12 +14,12 @@ namespace OneScript.Rcw public class RcwMembersMetadataCollection where T : RcwMemberMetadata { private readonly List _collection = new List(); - private readonly Dictionary _dispIds = new Dictionary(); - private readonly Dictionary _names = new Dictionary(StringComparer.InvariantCultureIgnoreCase); + private readonly Dictionary _indexByDispId = new Dictionary(); + private readonly Dictionary _indexByName = new Dictionary(StringComparer.InvariantCultureIgnoreCase); - public IReadOnlyDictionary DispatchIds => new ReadOnlyDictionary(_dispIds); + public IReadOnlyDictionary ByDispatchId => _indexByDispId; - public IReadOnlyDictionary Names => new ReadOnlyDictionary(_names); + public IReadOnlyDictionary ByName => _indexByName; public T this[int index] => _collection[index]; @@ -27,15 +27,28 @@ public class RcwMembersMetadataCollection where T : RcwMemberMetadata public void Add(T item) { - if (_dispIds.ContainsKey(item.DispatchId)) + if (_indexByDispId.TryGetValue(item.DispatchId, out var method)) { - _names.Add(item.Name, _dispIds[item.DispatchId]); + if (method.Name != item.Name) + { + // добавляют метод, который известен нам, с тем же dispId, но который имеет другое имя + _indexByName.Remove(method.Name); // известное нам старое имя этого dispId - инвалидируем + + // добавляемый метод поместим в индекс диспатчей и имен + _indexByDispId[item.DispatchId] = item; + _indexByName[item.Name] = item; + } + else + { + _indexByName[item.Name] = item; + } + return; } _collection.Add(item); - _dispIds.Add(item.DispatchId, item); - _names.Add(item.Name, item); + _indexByDispId.Add(item.DispatchId, item); + _indexByName.Add(item.Name, item); } public bool Contains(T item) => _collection.Contains(item); diff --git a/src/OneScript.Core/Rcw/RcwMetadata.cs b/src/OneScript.Core/Rcw/RcwMetadata.cs index e4281775d..be04a8e5b 100644 --- a/src/OneScript.Core/Rcw/RcwMetadata.cs +++ b/src/OneScript.Core/Rcw/RcwMetadata.cs @@ -128,7 +128,7 @@ private void LoadFuncs(ITypeInfo typeInfo, TYPEATTR typeAttr) private RcwPropertyMetadata GetOrAddProperty(string propName, int dispId) { - if (Properties.Names.TryGetValue(propName, out var md)) return md; + if (Properties.ByName.TryGetValue(propName, out var md)) return md; md = new RcwPropertyMetadata(propName, dispId); Properties.Add(md); diff --git a/src/OneScript.StandardLibrary/Binary/GlobalBinaryData.cs b/src/OneScript.StandardLibrary/Binary/GlobalBinaryData.cs index 458cdd030..04a29e00f 100644 --- a/src/OneScript.StandardLibrary/Binary/GlobalBinaryData.cs +++ b/src/OneScript.StandardLibrary/Binary/GlobalBinaryData.cs @@ -21,7 +21,7 @@ namespace OneScript.StandardLibrary.Binary [GlobalContext(Category = "Процедуры и функции работы с двоичными данными")] public sealed class GlobalBinaryData : GlobalContextBase { - private static byte[] HexStringToByteArray(String hex) + private static byte[] HexStringToByteArray(string hex) { var newHex = System.Text.RegularExpressions.Regex.Replace(hex, @"[^0-9A-Fa-f]", ""); int numberChars = newHex.Length; @@ -130,6 +130,17 @@ private static string GetStringFromByteBuffer(byte[] buf, Encoding enc) return enc.GetString(buf, startPos, buf.Length - startPos); } + private static void CheckAndThrowIfNull(AutoContext obj) where T : AutoContext + { + if (obj == null) + throw RuntimeException.InvalidArgumentType(); + } + + private static void CheckAndThrowIfNull(AutoContext obj, int argNumber, string argName) where T : AutoContext + { + if (obj == null) + throw RuntimeException.InvalidArgumentType(argNumber, argName); + } public static IAttachableContext CreateInstance() { @@ -150,19 +161,19 @@ public static IAttachableContext CreateInstance() [ContextMethod("СоединитьДвоичныеДанные")] public BinaryDataContext ConcatenateBinaryData(ArrayImpl array) { + CheckAndThrowIfNull(array); + // Сделано на int т.к. BinaryContext.Size имеет тип int; + using var stream = new System.IO.MemoryStream(); - using (var stream = new System.IO.MemoryStream()) + foreach (var cbd in array) { - - foreach (var cbd in array) - { - byte[] buffer = ((BinaryDataContext) cbd.AsObject()).Buffer; - stream.Write(buffer, 0, buffer.Length); - } - stream.Position = 0; - return new BinaryDataContext(stream); + byte[] buffer = ((BinaryDataContext)cbd.AsObject()).Buffer; + stream.Write(buffer, 0, buffer.Length); } + stream.Position = 0; + + return new BinaryDataContext(stream); } /// @@ -174,6 +185,8 @@ public BinaryDataContext ConcatenateBinaryData(ArrayImpl array) [ContextMethod("РазделитьДвоичныеДанные")] public ArrayImpl SplitBinaryData(BinaryDataContext data, long size) { + CheckAndThrowIfNull(data, 1, nameof(data)); + if (size <= 0 || size > Int32.MaxValue) throw RuntimeException.InvalidNthArgumentValue(2); @@ -257,9 +270,10 @@ public BinaryDataBuffer GetBinaryDataBufferFromString(string str, IValue encodin [ContextMethod("ПолучитьСтрокуИзДвоичныхДанных")] public string GetStringFromBinaryData(BinaryDataContext data, IValue encoding = null) { + CheckAndThrowIfNull(data, 1, nameof(data)); + // Получаем кодировку // Из синтаксис помощника если кодировка не задана используем UTF8 - var enc = (encoding != null) ? TextEncodingEnum.GetEncoding(encoding) : Encoding.UTF8; return GetStringFromByteBuffer(data.Buffer, enc); @@ -274,6 +288,8 @@ public string GetStringFromBinaryData(BinaryDataContext data, IValue encoding = [ContextMethod("ПолучитьСтрокуИзБуфераДвоичныхДанных")] public string GetStringFromBinaryDataBuffer(BinaryDataBuffer buffer, IValue encoding = null) { + CheckAndThrowIfNull(buffer, 1, nameof(buffer)); + var enc = (encoding != null) ? TextEncodingEnum.GetEncoding(encoding) : Encoding.UTF8; return GetStringFromByteBuffer(buffer.Bytes, enc); @@ -325,6 +341,8 @@ public BinaryDataBuffer GetBinaryDataBufferFromBase64String(string str) [ContextMethod("ПолучитьBase64СтрокуИзДвоичныхДанных")] public string GetBase64StringFromBinaryData(BinaryDataContext data) { + CheckAndThrowIfNull(data, 1, nameof(data)); + return Convert.ToBase64String(data.Buffer, Base64FormattingOptions.InsertLineBreaks); } @@ -338,6 +356,8 @@ public string GetBase64StringFromBinaryData(BinaryDataContext data) [ContextMethod("ПолучитьBase64СтрокуИзБуфераДвоичныхДанных")] public string GetBase64StringFromBinaryDataBuffer(BinaryDataBuffer buffer) { + CheckAndThrowIfNull(buffer); + return Convert.ToBase64String(buffer.Bytes, Base64FormattingOptions.InsertLineBreaks); } @@ -349,6 +369,8 @@ public string GetBase64StringFromBinaryDataBuffer(BinaryDataBuffer buffer) [ContextMethod("ПолучитьДвоичныеДанныеИзBase64ДвоичныхДанных")] public BinaryDataContext GetBinaryDataFromBase64BinaryData(BinaryDataContext data) { + CheckAndThrowIfNull(data); + try { var enc = new UTF8Encoding(false,true); @@ -369,6 +391,8 @@ public BinaryDataContext GetBinaryDataFromBase64BinaryData(BinaryDataContext dat [ContextMethod("ПолучитьБуферДвоичныхДанныхИзBase64БуфераДвоичныхДанных")] public BinaryDataBuffer GetBinaryDataBufferFromBase64BinaryDataBuffer(BinaryDataBuffer buffer) { + CheckAndThrowIfNull(buffer); + try { var enc = new UTF8Encoding(false, true); @@ -391,6 +415,8 @@ public BinaryDataBuffer GetBinaryDataBufferFromBase64BinaryDataBuffer(BinaryData [ContextMethod("ПолучитьBase64ДвоичныеДанныеИзДвоичныхДанных")] public BinaryDataContext GetBase64BinaryDataFromBinaryData(BinaryDataContext data) { + CheckAndThrowIfNull(data); + var base64str = Convert.ToBase64String(data.Buffer, Base64FormattingOptions.InsertLineBreaks); return new BinaryDataContext(Encoding.ASCII.GetBytes(base64str)); } @@ -405,6 +431,8 @@ public BinaryDataContext GetBase64BinaryDataFromBinaryData(BinaryDataContext dat [ContextMethod("ПолучитьBase64БуферДвоичныхДанныхИзБуфераДвоичныхДанных")] public BinaryDataBuffer GetBase64BinaryDataBufferFromBinaryDataBuffer(BinaryDataBuffer buffer) { + CheckAndThrowIfNull(buffer); + var base64str = Convert.ToBase64String(buffer.Bytes, Base64FormattingOptions.InsertLineBreaks); return new BinaryDataBuffer(Encoding.ASCII.GetBytes(base64str)); } @@ -439,6 +467,8 @@ public BinaryDataBuffer GetBinaryDataBufferFromHexString(string hex) [ContextMethod("ПолучитьHexСтрокуИзДвоичныхДанных")] public string GetHexStringFromBinaryData(BinaryDataContext data) { + CheckAndThrowIfNull(data); + return BitConverter.ToString(data.Buffer).Replace("-",""); } @@ -450,6 +480,8 @@ public string GetHexStringFromBinaryData(BinaryDataContext data) [ContextMethod("ПолучитьHexСтрокуИзБуфераДвоичныхДанных")] public string GetHexStringFromBinaryDataBuffer(BinaryDataBuffer buffer) { + CheckAndThrowIfNull(buffer); + return BitConverter.ToString(buffer.Bytes).Replace("-",""); } @@ -461,6 +493,8 @@ public string GetHexStringFromBinaryDataBuffer(BinaryDataBuffer buffer) [ContextMethod("ПолучитьДвоичныеДанныеИзHexДвоичныхДанных")] public BinaryDataContext GetBinaryDataFromHexBinaryData(BinaryDataContext data) { + CheckAndThrowIfNull(data); + return new BinaryDataContext(HexArrayToByteArray(data.Buffer)); } @@ -472,6 +506,8 @@ public BinaryDataContext GetBinaryDataFromHexBinaryData(BinaryDataContext data) [ContextMethod("ПолучитьБуферДвоичныхДанныхИзHexБуфераДвоичныхДанных")] public BinaryDataBuffer GetBinaryDataBufferFromHexBinaryDataBuffer(BinaryDataBuffer buffer) { + CheckAndThrowIfNull(buffer); + return new BinaryDataBuffer(HexArrayToByteArray(buffer.Bytes)); } @@ -507,6 +543,8 @@ public BinaryDataBuffer GetHexBinaryDataBufferFromBinaryDataBuffer(BinaryDataBuf [ContextMethod("ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных")] public BinaryDataBuffer GetBinaryDataBufferFromBinaryData(BinaryDataContext data) { + CheckAndThrowIfNull(data); + return new BinaryDataBuffer(data.Buffer); } @@ -518,6 +556,8 @@ public BinaryDataBuffer GetBinaryDataBufferFromBinaryData(BinaryDataContext data [ContextMethod("ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных")] public BinaryDataContext GetBinaryDataFromBinaryDataBuffer(BinaryDataBuffer buffer) { + CheckAndThrowIfNull(buffer); + return new BinaryDataContext(buffer.Bytes); } diff --git a/src/OneScript.StandardLibrary/NativeApi/NativeApiKernel.cs b/src/OneScript.StandardLibrary/NativeApi/NativeApiKernel.cs index 1508a5372..ad9020707 100644 --- a/src/OneScript.StandardLibrary/NativeApi/NativeApiKernel.cs +++ b/src/OneScript.StandardLibrary/NativeApi/NativeApiKernel.cs @@ -22,7 +22,7 @@ public static bool IsLinux } private const String KernelWin = "kernel32.dll"; - private const String KernelLin = "libdl.so"; + private const String KernelLin = "libdl.so.2"; public static IntPtr LoadLibrary(string filename) { diff --git a/src/OneScript.StandardLibrary/Processes/ArgumentsParser.cs b/src/OneScript.StandardLibrary/Processes/ArgumentsParser.cs index 88e22b283..6000d85ab 100644 --- a/src/OneScript.StandardLibrary/Processes/ArgumentsParser.cs +++ b/src/OneScript.StandardLibrary/Processes/ArgumentsParser.cs @@ -1,4 +1,4 @@ -/*---------------------------------------------------------- +/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one diff --git a/src/OneScript.StandardLibrary/Processes/ProcessContext.cs b/src/OneScript.StandardLibrary/Processes/ProcessContext.cs index a0ae09708..abc49605a 100644 --- a/src/OneScript.StandardLibrary/Processes/ProcessContext.cs +++ b/src/OneScript.StandardLibrary/Processes/ProcessContext.cs @@ -8,6 +8,7 @@ This Source Code Form is subject to the terms of the using System; using System.Diagnostics; using System.Linq; +using System.Runtime.InteropServices; using OneScript.Contexts; using OneScript.Exceptions; using OneScript.StandardLibrary.Collections; @@ -274,14 +275,24 @@ public static ProcessStartInfo PrepareProcessStartupInfo(string cmdLine, string sInfo.FileName = ExtractExecutableName(cmdLine, out argsPosition); if (currentDir != null) sInfo.WorkingDirectory = currentDir; - - var arguments = argsPosition >= cmdLine.Length - ? Array.Empty() - : new ArgumentsParser(cmdLine[argsPosition..]).GetArguments(); - foreach (var argument in arguments) + // Поведение под MacOS и остальные системы различается + // Страдает обратная совместимость и неясны до конца синтаксисы. + // См. https://github.com/EvilBeaver/OneScript/issues/1299 + if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + sInfo.Arguments = argsPosition >= cmdLine.Length ? "" : cmdLine.Substring(argsPosition); + } + else { - sInfo.ArgumentList.Add(argument); + var arguments = argsPosition >= cmdLine.Length + ? Array.Empty() + : new ArgumentsParser(cmdLine[argsPosition..]).GetArguments(); + + foreach (var argument in arguments) + { + sInfo.ArgumentList.Add(argument); + } } return sInfo; diff --git a/src/OneScriptDocumenter/OneScriptDocumenter.csproj b/src/OneScriptDocumenter/OneScriptDocumenter.csproj index 225f8a3bd..b97bdd1cb 100644 --- a/src/OneScriptDocumenter/OneScriptDocumenter.csproj +++ b/src/OneScriptDocumenter/OneScriptDocumenter.csproj @@ -3,7 +3,7 @@ - netcoreapp3.1 + net6.0 Exe OneScript Libraries Documenter diff --git a/src/ScriptEngine/Compiler/StackMachineCodeGenerator.cs b/src/ScriptEngine/Compiler/StackMachineCodeGenerator.cs index baa80d944..e361f4e9f 100644 --- a/src/ScriptEngine/Compiler/StackMachineCodeGenerator.cs +++ b/src/ScriptEngine/Compiler/StackMachineCodeGenerator.cs @@ -287,16 +287,15 @@ protected override void VisitMethod(MethodNode methodNode) methodInfo.SetRuntimeParameters(entryPoint, GetVariableNames(methodCtx)); SymbolBinding binding; - if (!_ctx.TryFindMethodBinding(signature.MethodName, out _)) + try { binding = _ctx.DefineMethod(methodInfo.ToSymbol()); } - else + catch (CompilerException) { AddError(LocalizedErrors.DuplicateMethodDefinition(signature.MethodName), signature.Location); binding = default; } - _module.MethodRefs.Add(binding); _module.Methods.Add(methodInfo); } diff --git a/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs b/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs index 1d1705cd8..523896b67 100644 --- a/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs +++ b/src/ScriptEngine/Machine/Contexts/COMWrapperContext.cs @@ -316,7 +316,6 @@ protected virtual void Dispose(bool manualDispose) { GC.SuppressFinalize(this); } - } public void Dispose() diff --git a/src/ScriptEngine/Machine/Contexts/UnmanagedCOMWrapperContext.cs b/src/ScriptEngine/Machine/Contexts/UnmanagedCOMWrapperContext.cs index 844eae95b..08d4d77dc 100644 --- a/src/ScriptEngine/Machine/Contexts/UnmanagedCOMWrapperContext.cs +++ b/src/ScriptEngine/Machine/Contexts/UnmanagedCOMWrapperContext.cs @@ -263,28 +263,28 @@ private void RemapOutputParams(IValue[] arguments, object[] values, ParameterMod private bool TryFindMethod(string name, out RcwMethodMetadata md) { - if (_methods.Names.TryGetValue(name, out md)) + if (_methods.ByName.TryGetValue(name, out md)) return true; if (!DispatchUtility.TryGetDispId(Instance, name, out var dispatchId)) return false; _methods.Add(new RcwMethodMetadata(name, dispatchId, null)); - md = _methods.DispatchIds[dispatchId]; + md = _methods.ByDispatchId[dispatchId]; return true; } private bool TryFindProperty(string name, out RcwPropertyMetadata md) { - if (_props.Names.TryGetValue(name, out md)) + if (_props.ByName.TryGetValue(name, out md)) return true; if (!DispatchUtility.TryGetDispId(Instance, name, out var dispatchId)) return false; _props.Add(new RcwPropertyMetadata(name, dispatchId)); - md = _props.DispatchIds[dispatchId]; + md = _props.ByDispatchId[dispatchId]; return true; } diff --git a/src/Tests/OneScript.Core.Tests/ArgumentParserTests.cs b/src/Tests/OneScript.Core.Tests/ArgumentParserTests.cs index cbca74f67..247713773 100644 --- a/src/Tests/OneScript.Core.Tests/ArgumentParserTests.cs +++ b/src/Tests/OneScript.Core.Tests/ArgumentParserTests.cs @@ -1,4 +1,4 @@ -/*---------------------------------------------------------- +/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one diff --git a/src/VSCode.DebugAdapter/VSCode.DebugAdapter.csproj b/src/VSCode.DebugAdapter/VSCode.DebugAdapter.csproj index cc5e71fe0..e06cd92e7 100644 --- a/src/VSCode.DebugAdapter/VSCode.DebugAdapter.csproj +++ b/src/VSCode.DebugAdapter/VSCode.DebugAdapter.csproj @@ -3,7 +3,7 @@ - net461 + net48 Exe VSCode.DebugAdapter.Program Debug;Release;LinuxDebug diff --git a/tests/engine-behaviors.os b/tests/engine-behaviors.os index f661c603c..01867ddf2 100644 --- a/tests/engine-behaviors.os +++ b/tests/engine-behaviors.os @@ -52,7 +52,6 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьИнформацияОбОшибкеВнеИсключения"); ВсеТесты.Добавить("ТестДолжен_ПроверитьПередачуПараметровПоСсылке"); ВсеТесты.Добавить("ТестДолжен_ПроверитьСравнениеНаБольшеМеньше"); - ВсеТесты.Добавить("ТестДолжен_ПроверитьНевозможностьПереопределенияГлобальногоКонтекста"); Возврат ВсеТесты; @@ -687,25 +686,8 @@ юТест.ПроверитьКодСОшибкой( "Массив = Новый Массив(1); - |Массив2 = Новый Массив(1); + |Массив2 = Новый Массив(1);; |Рез = (Массив <= Массив2);", Ошибка, "Для одинаковых объектов" ); КонецПроцедуры - -Процедура ТестДолжен_ПроверитьНевозможностьПереопределенияГлобальногоКонтекста() Экспорт - - Код = "Функция СтрНайти(знач Стр1, знач Стр2) - | Возврат -1; - |КонецФункции - | - |Рез = СтрНайти(""Ай!"", ""!""); - |Если Рез < 0 Тогда - | Сообщить(""Ой!""); - |КонецЕсли"; - - юТест.ПроверитьКодСОшибкой(Код, "СтрНайти"); - - юТест.ПроверитьКодСОшибкой("#native" + Символы.ПС + Код, "СтрНайти"); - -КонецПроцедуры diff --git a/tests/native-api.os b/tests/native-api.os index 1f538d95c..bfebd457f 100644 --- a/tests/native-api.os +++ b/tests/native-api.os @@ -21,8 +21,6 @@ ЭтоWindows = Истина; #ИначеЕсли Linux Тогда ЭтоWindows = Ложь; - Каталог = ТекущийСценарий().Каталог + "/native-api/"; - ЗапуститьПриложение(Каталог + "build.sh", Каталог, Истина); #Иначе Возврат Новый Массив; // под макос не тестируем #КонецЕсли