--- /dev/null
+using System;
+using System.Reflection;
+
+struct S
+{
+}
+
+struct SS
+{
+ static int i = 9;
+}
+
+struct SSS
+{
+ static SSS Empty;
+
+ static SSS ()
+ {
+ Empty = new SSS ();
+ }
+}
+
+class C
+{
+}
+
+class CC
+{
+ static int i = 9;
+}
+
+class CCC
+{
+ static CCC Empty;
+
+ static CCC ()
+ {
+ Empty = new CCC ();
+ }
+}
+
+class X
+{
+ static int Main ()
+ {
+ Type t = typeof (S);
+ if ((t.Attributes & TypeAttributes.BeforeFieldInit) == 0)
+ return 1;
+
+ t = typeof (SS);
+ if ((t.Attributes & TypeAttributes.BeforeFieldInit) == 0)
+ return 2;
+
+ t = typeof (SSS);
+ if ((t.Attributes & TypeAttributes.BeforeFieldInit) != 0)
+ return 3;
+
+ t = typeof (C);
+ if ((t.Attributes & TypeAttributes.BeforeFieldInit) == 0)
+ return 4;
+
+ t = typeof (CC);
+ if ((t.Attributes & TypeAttributes.BeforeFieldInit) == 0)
+ return 5;
+
+ t = typeof (CCC);
+ if ((t.Attributes & TypeAttributes.BeforeFieldInit) != 0)
+ return 6;
+
+ Console.WriteLine ("OK");
+ return 0;
+ }
+}