-
Notifications
You must be signed in to change notification settings - Fork 72
Open
Description
Currently, when compiling the following code using master branch:
using System;
using System.Collections.Generic;
using System.Text;
using Sys = Cosmos.System;
using System.Runtime.Versioning;
namespace net8test
{
public class Kernel: Sys.Kernel
{
[RequiresPreviewFeatures]
protected override void BeforeRun()
{
var test = new Test();
Test.InvokeBreakIl2cpu();
}
protected override void Run()
{
Console.Write("Input: ");
var input = Console.ReadLine();
Console.Write("Text typed: ");
Console.WriteLine(input);
}
}
public interface ITest<T>
{
[RequiresPreviewFeatures]
public static abstract bool DoThings<TOther>(TOther value);
}
public class Test : ITest<object>
{
[RequiresPreviewFeatures]
static bool ITest<object>.DoThings<TOther>(TOther t)
{
return true;
}
[RequiresPreviewFeatures]
public static void BreakIl2cpu<TImplementation, TOther>() where TImplementation : ITest<object>
{
TImplementation.DoThings<Test>(new Test());
}
[RequiresPreviewFeatures]
public static void InvokeBreakIl2cpu()
{
BreakIl2cpu<Test, object>();
}
}
}Will result in the DoThings method not being emitted:
bin/cosmos/Debug/net6.0/net8test.asm:119142: error: undefined symbol `A0SystemBooleanA9A9net8testITest1A0SystemObjectDoThingsA9net8testTestA9net8testTest' (first use)
bin/cosmos/Debug/net6.0/net8test.asm:119142: error: (Each undefined symbol is reported only once.)
Add the following to your csproj to reproduce the issue:
<EnablePreviewFeatures>true</EnablePreviewFeatures>
<LangVersion>11</LangVersion>This issue blocks .NET 8 support as types such as UInt32 rely on this feature.
Metadata
Metadata
Assignees
Labels
No labels