Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -857,6 +857,7 @@
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\InternalsVisibleToAttribute.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\IntrinsicAttribute.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\IsByRefLikeAttribute.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\InlineArray.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\InlineArrayAttribute.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\IsConst.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\CompilerServices\IsExternalInit.cs" />
Expand Down Expand Up @@ -2790,4 +2791,4 @@
<Compile Include="$(MSBuildThisFileDirectory)System\Threading\Wasi\WasiPollWorld.wit.imports.wasi.io.v0_2_0.IPoll.cs" />
<Compile Include="$(MSBuildThisFileDirectory)System\Threading\Wasi\WasiPollWorld.wit.imports.wasi.io.v0_2_0.PollInterop.cs" />
</ItemGroup>
</Project>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace System.Runtime.CompilerServices
{
[InlineArray(2)]
public struct InlineArray2<T>
{
private T t;
}
[InlineArray(3)]
public struct InlineArray3<T>
{
private T t;
}
[InlineArray(4)]
public struct InlineArray4<T>
{
private T t;
}
[InlineArray(5)]
public struct InlineArray5<T>
{
private T t;
}
[InlineArray(6)]
public struct InlineArray6<T>
{
private T t;
}
[InlineArray(7)]
public struct InlineArray7<T>
{
private T t;
}
[InlineArray(8)]
public struct InlineArray8<T>
{
private T t;
}
[InlineArray(9)]
public struct InlineArray9<T>
{
private T t;
}
[InlineArray(10)]
public struct InlineArray10<T>
{
private T t;
}
[InlineArray(11)]
public struct InlineArray11<T>
{
private T t;
}
[InlineArray(12)]
public struct InlineArray12<T>
{
private T t;
}
[InlineArray(13)]
public struct InlineArray13<T>
{
private T t;
}
[InlineArray(14)]
public struct InlineArray14<T>
{
private T t;
}
[InlineArray(15)]
public struct InlineArray15<T>
{
private T t;
}
}
70 changes: 70 additions & 0 deletions src/libraries/System.Runtime/ref/System.Runtime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13490,6 +13490,76 @@ public sealed partial class IndexerNameAttribute : System.Attribute
{
public IndexerNameAttribute(string indexerName) { }
}
[InlineArray(2)]
public struct InlineArray2<T>
{
private T t;
}
[InlineArray(3)]
public struct InlineArray3<T>
{
private T t;
}
[InlineArray(4)]
public struct InlineArray4<T>
{
private T t;
}
[InlineArray(5)]
public struct InlineArray5<T>
{
private T t;
}
[InlineArray(6)]
public struct InlineArray6<T>
{
private T t;
}
[InlineArray(7)]
public struct InlineArray7<T>
{
private T t;
}
[InlineArray(8)]
public struct InlineArray8<T>
{
private T t;
}
[InlineArray(9)]
public struct InlineArray9<T>
{
private T t;
}
[InlineArray(10)]
public struct InlineArray10<T>
{
private T t;
}
[InlineArray(11)]
public struct InlineArray11<T>
{
private T t;
}
[InlineArray(12)]
public struct InlineArray12<T>
{
private T t;
}
[InlineArray(13)]
public struct InlineArray13<T>
{
private T t;
}
[InlineArray(14)]
public struct InlineArray14<T>
{
private T t;
}
[InlineArray(15)]
public struct InlineArray15<T>
{
private T t;
}
[System.AttributeUsageAttribute(System.AttributeTargets.Struct, AllowMultiple=false)]
public sealed partial class InlineArrayAttribute : System.Attribute
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Reflection;
using Xunit;

namespace System.Runtime.CompilerServices.Tests
{
public static class InlineArrayTests
{
[Fact]
public void InlineArray2Test()
{
InlineArray2<int> inlineArray2 = new InlineArray2<int>();
inlineArray2[0] = 1;
inlineArray2[1] = 2;
Assert.Equal(1, inlineArray2[0]);
Assert.Equal(2, inlineArray2[1]);
}

[Fact]
public void InlineArray3Test()
{
InlineArray3<int> inlineArray3 = new InlineArray3<int>();
inlineArray3[0] = 1;
inlineArray3[1] = 2;
inlineArray3[2] = 3;
Assert.Equal(1, inlineArray3[0]);
Assert.Equal(2, inlineArray3[1]);
Assert.Equal(3, inlineArray3[2]);
}

[Fact]
public void InlineArray4Test()
{
InlineArray4<int> inlineArray4 = new InlineArray4<int>();
for (int i = 0; i < 4; i++)
{
inlineArray4[i] = i + 1;
}
for (int i = 0; i < 4; i++)
{
Assert.Equal(i + 1, inlineArray4[i]);
}
}

[Fact]
public void InlineArray5Test()
{
InlineArray5<int> inlineArray5 = new InlineArray5<int>();
for (int i = 0; i < 5; i++)
{
inlineArray5[i] = i + 1;
}
for (int i = 0; i < 5; i++)
{
Assert.Equal(i + 1, inlineArray5[i]);
}
}

[Fact]
public void InlineArray6Test()
{
InlineArray6<int> inlineArray6 = new InlineArray6<int>();
for (int i = 0; i < 6; i++)
{
inlineArray6[i] = i + 1;
}
for (int i = 0; i < 6; i++)
{
Assert.Equal(i + 1, inlineArray6[i]);
}
}

[Fact]
public void InlineArray7Test()
{
InlineArray7<int> inlineArray7 = new InlineArray7<int>();
for (int i = 0; i < 7; i++)
{
inlineArray7[i] = i + 1;
}
for (int i = 0; i < 7; i++)
{
Assert.Equal(i + 1, inlineArray7[i]);
}
}

[Fact]
public void InlineArray8Test()
{
InlineArray8<int> inlineArray8 = new InlineArray8<int>();
for (int i = 0; i < 8; i++)
{
inlineArray8[i] = i + 1;
}
for (int i = 0; i < 8; i++)
{
Assert.Equal(i + 1, inlineArray8[i]);
}
}

[Fact]
public void InlineArray9Test()
{
InlineArray9<int> inlineArray9 = new InlineArray9<int>();
for (int i = 0; i < 9; i++)
{
inlineArray9[i] = i + 1;
}
for (int i = 0; i < 9; i++)
{
Assert.Equal(i + 1, inlineArray9[i]);
}
}

[Fact]
public void InlineArray10Test()
{
InlineArray10<int> inlineArray10 = new InlineArray10<int>();
for (int i = 0; i < 10; i++)
{
inlineArray10[i] = i + 1;
}
for (int i = 0; i < 10; i++)
{
Assert.Equal(i + 1, inlineArray10[i]);
}
}

[Fact]
public void InlineArray11Test()
{
InlineArray11<int> inlineArray11 = new InlineArray11<int>();
for (int i = 0; i < 11; i++)
{
inlineArray11[i] = i + 1;
}
for (int i = 0; i < 11; i++)
{
Assert.Equal(i + 1, inlineArray11[i]);
}
}

[Fact]
public void InlineArray12Test()
{
InlineArray12<int> inlineArray12 = new InlineArray12<int>();
for (int i = 0; i < 12; i++)
{
inlineArray12[i] = i + 1;
}
for (int i = 0; i < 12; i++)
{
Assert.Equal(i + 1, inlineArray12[i]);
}
}

[Fact]
public void InlineArray13Test()
{
InlineArray13<int> inlineArray13 = new InlineArray13<int>();
for (int i = 0; i < 13; i++)
{
inlineArray13[i] = i + 1;
}
for (int i = 0; i < 13; i++)
{
Assert.Equal(i + 1, inlineArray13[i]);
}
}

[Fact]
public void InlineArray14Test()
{
InlineArray14<int> inlineArray14 = new InlineArray14<int>();
for (int i = 0; i < 14; i++)
{
inlineArray14[i] = i + 1;
}
for (int i = 0; i < 14; i++)
{
Assert.Equal(i + 1, inlineArray14[i]);
}
}

[Fact]
public void InlineArray15Test()
{
InlineArray15<int> inlineArray15 = new InlineArray15<int>();
for (int i = 0; i < 15; i++)
{
inlineArray15[i] = i + 1;
}
for (int i = 0; i < 15; i++)
{
Assert.Equal(i + 1, inlineArray15[i]);
}
}
}
}
Loading