Closed panesofglass closed 4 years ago
There is a small chance that we have to manually set attributes like hidebysig
,newslot
, auto
, ansi
@panesofglass These are good tests, thanks. I think I can look after #212 from here and get these tests passing
Thank you, @dsyme!
@panesofglass I know I've promised you to get to this, but I won't be able to get to it until the perf problem in #220 is fixed, which may take me a while
Whats the current issue with generated interfaces?
@7sharp9 it seems the metadata is not currently generated correctly.
I just updated and tried again. This seems to be reporting better than what I recall:
[xUnit.net 00:00:04.4116552] FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests.Abstract classes are generated correctly [FAIL]
[xUnit.net 00:00:04.4329294] FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.Interfaces are generated correctly [FAIL]
Failed FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests.Abstract classes are generated correctly
Error Message:
System.Exception : The provided method is marked as an abstract method; therefore, it should not define an implementation.
Stack Trace:
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.Compile@14379-14.Invoke(ILTypeBuilder tb, FSharpOption`1 ptdT) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14481
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.typeMembers@14214(AssemblyCompiler this, FSharpFunc`2 f, ProvidedTypeDefinition ptd) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14216
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.typeMembers@14214(AssemblyCompiler this, FSharpFunc`2 f, ProvidedTypeDefinition ptd) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14218
at ProviderImplementation.ProvidedTypes.AssemblyCompiler.iterateTypes[a](FSharpFunc`2 f, IEnumerable`1 providedTypeDefinitions) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14228
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.Compile@14379-13.Invoke(IEnumerable`1 providedTypeDefinitions) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14379
at ProviderImplementation.ProvidedTypes.AssemblyCompiler.Compile(Boolean isHostedExecution) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14263
at ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.Microsoft-FSharp-Core-CompilerServices-ITypeProvider-GetGeneratedAssemblyContents(Assembly assembly) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14794
at FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests.testProvidedAssembly(FSharpFunc`2 test) in C:\Code\FSharp.TypeProviders.SDK\tests\GenerativeAbstractClassesTests.fs:line 81
Failed FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.Interfaces are generated correctly
Error Message:
System.Exception : The provided type definition is an interface; therefore, it should not define an implementation for its members.
Stack Trace:
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.Compile@14379-14.Invoke(ILTypeBuilder tb, FSharpOption`1 ptdT) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14479
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.typeMembers@14214(AssemblyCompiler this, FSharpFunc`2 f, ProvidedTypeDefinition ptd) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14216
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.typeMembers@14214(AssemblyCompiler this, FSharpFunc`2 f, ProvidedTypeDefinition ptd) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14218
at ProviderImplementation.ProvidedTypes.AssemblyCompiler.iterateTypes[a](FSharpFunc`2 f, IEnumerable`1 providedTypeDefinitions) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14228
at <StartupCode$FSharp-TypeProviders-SDK-Tests>.$ProvidedTypes.Compile@14379-13.Invoke(IEnumerable`1 providedTypeDefinitions) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14379
at ProviderImplementation.ProvidedTypes.AssemblyCompiler.Compile(Boolean isHostedExecution) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14263
at ProviderImplementation.ProvidedTypes.TypeProviderForNamespaces.Microsoft-FSharp-Core-CompilerServices-ITypeProvider-GetGeneratedAssemblyContents(Assembly assembly) in C:\Code\FSharp.TypeProviders.SDK\src\ProvidedTypes.fs:line 14794
at FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.testProvidedAssembly(FSharpFunc`2 test) in C:\Code\FSharp.TypeProviders.SDK\tests\GenerativeInterfacesTests.fs:line 71
Total tests: 39. Passed: 37. Failed: 2. Skipped: 0.
Test Run Failed.
Test execution time: 9.4491 Seconds
Running build failed.
Error:
System.Exception: Test failed on "test" "tests/FSharp.TypeProviders.SDK.Tests.fsproj" --configuration Release --framework net461
at Fake.DotNetCli.Test@298-3.Invoke(String message) in D:\code\fake\src\app\FakeLib\DotNetCLIHelper.fs:line 298
at Fake.DotNetCli.Test(FSharpFunc`2 setTestParams) in D:\code\fake\src\app\FakeLib\DotNetCLIHelper.fs:line 298
at FSI_0005.Build.clo@116-19.Invoke(Unit _arg4) in C:\Code\FSharp.TypeProviders.SDK\build.fsx:line 135
at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in D:\code\fake\src\app\FakeLib\TargetHelper.fs:line 626
After updating to leverage optional invokeCode
and fixing a minor issue with correctly inferring requirement for virtual members, the failing tests produce:
[xUnit.net 00:00:12.8257338] FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.Interfaces are generated correctly [FAIL]
[xUnit.net 00:00:12.8981477] FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests.Abstract classes are generated correctly [FAIL]
Failed FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.Interfaces are generated correctly
Error Message:
System.TypeLoadException : Failure has occurred while loading a type.
Stack Trace:
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
at System.Reflection.RuntimeAssembly.GetExportedTypes()
at System.Reflection.Assembly.get_ExportedTypes()
at FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.testProvidedAssembly(FSharpFunc`2 test) in C:\Code\FSharp.TypeProviders.SDK\tests\GenerativeInterfacesTests.fs:line 73
Failed FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests.Abstract classes are generated correctly
Error Message:
System.TypeLoadException : Abstract method with non-zero RVA.
Stack Trace:
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
at System.Reflection.RuntimeAssembly.GetExportedTypes()
at System.Reflection.Assembly.get_ExportedTypes()
at FSharp.TypeProviders.SDK.Tests.GenerativeAbstractClassesTests.testProvidedAssembly(FSharpFunc`2 test) in C:\Code\FSharp.TypeProviders.SDK\tests\GenerativeAbstractClassesTests.fs:line 84
Does this mean I do need to provide an implementation?
We were managed to drive code to the state when all test fails with single error
Error Message:
System.TypeLoadException : Abstract method with non-zero RVA.
Stack Trace:
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
at System.Reflection.RuntimeAssembly.GetExportedTypes()
at System.Reflection.Assembly.get_ExportedTypes()
at at FSharp.TypeProviders.SDK.Tests.GenerativeInterfacesTests.testProvidedAssembly(FSharpFunc`2 test) in /home/travis/build/fsprojects/FSharp.TypeProviders.SDK/tests/GenerativeInterfacesTests.fs:line 70
and we not sure what's exactly going wrong here. It look like code emitted incorrectly...
also there are some parts of SDK wrapped in #if EMIT_FIELD_DATA
block that does not run now...
@dsyme we appreciate your guidance here, thx
Merged in #331 and fixed there
Add test cases for #211: