// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
//

using System;
using Xunit;

struct Pad
{
#pragma warning disable 0414
    public double d1;
    public double d2;
    public double d3;
    public double d4;
    public double d5;
    public double d6;
    public double d7;
    public double d8;
    public double d9;
    public double d10;
    public double d11;
    public double d12;
    public double d13;
    public double d14;
    public double d15;
    public double d16;
    public double d17;
    public double d18;
    public double d19;
    public double d20;
    public double d21;
    public double d22;
    public double d23;
    public double d24;
    public double d25;
    public double d26;
    public double d27;
    public double d28;
    public double d29;
    public double d30;
#pragma warning restore 0414
}

struct S
{
    public String str;
    public Pad pad;
#pragma warning disable 0414
    public String str2;
#pragma warning restore 0414

    public S(String s)
    {
        str = s;
        str2 = s + str;
        pad.d1 =
        pad.d2 =
        pad.d3 =
        pad.d4 =
        pad.d5 =
        pad.d6 =
        pad.d7 =
        pad.d8 =
        pad.d9 =
        pad.d10 =
        pad.d11 =
        pad.d12 =
        pad.d13 =
        pad.d14 =
        pad.d15 =
        pad.d16 =
        pad.d17 =
        pad.d18 =
        pad.d19 =
        pad.d20 =
        pad.d21 =
        pad.d22 =
        pad.d23 =
        pad.d24 =
        pad.d25 =
        pad.d26 =
        pad.d27 =
        pad.d28 =
        pad.d29 =
        pad.d30 = 3.3;
    }
}

public class Test_struct9_2
{
    private static void c(ref S s1, ref int i)
    {
        if (i < 10)
        {
            S sM = new S("test");
            int i2;

            sM = s1;
            i2 = i + 1;
            c(ref sM, ref i2);
        }
        Console.WriteLine(s1.str);
    }

    [Fact]
    public static void TestEntryPoint()
    {
        S sM = new S("test");
        int i = 0;

        sM.str = "test";
        c(ref sM, ref i);
    }
}
