peachpiecompiler / peachpie

PeachPie - the PHP compiler and runtime for .NET and .NET Core
https://www.peachpie.io
Apache License 2.0
2.33k stars 202 forks source link

STORE Application[] not implemented #1015

Closed xiangyi-wang closed 2 years ago

xiangyi-wang commented 2 years ago

I want to try compiling Flarum into a library (like Peachpie_wordpress), a forum framework similar to wordpress(https://github.com/flarum/flarum ,https://github.com/flarum/core ), but I got the following error:

STORE Application[] not implemented at D:\Flarum\src\Foundation\Application.php(190, 13)
...
Flarum  C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.6\build\Peachpie.NET.Core.Sdk.targets   245

It points to line 245 in the Targets file,Is there anything I need to set up? <BuildTask Condition=" Exists('$(PeachpieToolFullPath)') " This is flarum.msbuildproj

<Project Sdk="Peachpie.NET.Sdk/1.0.6">

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Description>.NET class library in PHP</Description>
    <AssemblyName>FlarumCore</AssemblyName>
    <ComposerJsonPath></ComposerJsonPath>
    <ComposerAutoload>true</ComposerAutoload>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="
                  **/*.php;
             "
             Exclude="vendor/symfony/polyfill-iconv/**;
                      vendor/illuminate/database/Eloquent/BroadcastableModelEventOccurred.php;
                      vendor/illuminate/queue/CallQueuedClosure.php;
                      vendor/illuminate/filesystem/Cache.php;
                      vendor/illuminate/support/Testing/Fakes/PendingChainFake.php;
                      vendor/symfony/translation/DependencyInjection/**;
                      vendor/symfony/console/DependencyInjection/**;
                      vendor/symfony/event-dispatcher/DependencyInjection/**;
                      vendor/symfony/translation/DataCollector/**;
                      vendor/symfony/translation/DataCollectorTranslator.php;
                      vendor/symfony/mime/DependencyInjection/**;
                      vendor/symfony/finder/**;
                      vendor/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php;
                      vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php;
                      vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php;
                      vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/TypedCacheItem.php;
                      vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php;
                      vendor/opis/closure/src/Analyzer.php;
                      vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php;
                      vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php;
                      vendor/intervention/image/src/Intervention/Image/ImageServiceProviderLeague.php;
                     **/Testing/**;
                     **/Tests/**;
                     **/Test/**;
                     "/>

  </ItemGroup>
</Project>
jakubmisek commented 2 years ago

Thank you for reporting the issue and for trying Flarum!

the problem is in the compiler itself, specifically, it does not handle the code on D:\Flarum\src\Foundation\Application.php(190, 13)

Do you have the complete stack trace of the exception?

xiangyi-wang commented 2 years ago
> 已启动生成…
1>------ 已启动生成: 项目: Flarum, 配置: Debug Any CPU ------
1>PeachPie PHP Compiler version 1.0.11+81e4cbe568dd7cc9d1df35e2e4a05fde654c1e48
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error : STORE Application[] not implemented at D:\Flarum\src\Foundation\Application.php(190, 13)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.BoundArrayItemEx.Pchp.CodeAnalysis.Semantics.IVariableReference.EmitStorePreamble(CodeGenerator cg, BoundAccess access)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.BoundAssignEx.Emit(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.BoundExpressionStatement.Emit(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.Generate(IGenerator element)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 System.Collections.Generic.List`1.ForEach(Action`1 action)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.Graph.BoundBlock.Emit(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.GenerateBlock(BoundBlock block)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.GenerateScope(BoundBlock block, ScopeType type, Int32 to)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.Graph.ForeachMoveNextEdge.Generate(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.Graph.BoundBlock.Emit(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.GenerateBlock(BoundBlock block)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.GenerateScope(BoundBlock block, ScopeType type, Int32 to)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.Graph.ForeachEnumereeEdge.EmitBody(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.Graph.ForeachEnumereeEdge.Generate(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Semantics.Graph.BoundBlock.Emit(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.GenerateBlock(BoundBlock block)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.CodeGenerator.GenerateScope(BoundBlock block, ScopeType type, Int32 to)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.Symbols.SourceRoutineSymbol.Generate(CodeGenerator cg)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.MethodGenerator.<>c__DisplayClass1_0.<GenerateMethodBody>b__0(ILBuilder builder)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.CodeGen.MethodGenerator.GenerateMethodBody(PEModuleBuilder moduleBuilder, MethodSymbol routine, Action`1 builder, VariableSlotAllocator variableSlotAllocatorOpt, DiagnosticBag diagnostics, Boolean emittingPdb)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 Pchp.CodeAnalysis.SourceCompiler.EmitMethodBody(SourceRoutineSymbol routine)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 System.Threading.Tasks.Parallel.<>c__DisplayClass42_0`2.<PartitionerForEachWorker>b__1()
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
1>C:\Users\admin\.nuget\packages\peachpie.net.sdk\1.0.11\build\Peachpie.NET.Core.Sdk.targets(245,5): error :    在 System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)
1>已完成生成项目“Flarum.msbuildproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
jakubmisek commented 2 years ago

thank you for the callstack. The issue is caused by this line https://github.com/flarum/core/blob/1217b118964e4bf06fa93b92aad7a236a903b099/src/Foundation/Application.php#L190

We'll try to fix the compiler to deal with it.