// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. // using System; public struct ValX0 { } public struct ValY0 { } public struct ValX1 { } public struct ValY1 { } public struct ValX2 { } public struct ValY2 { } public struct ValX3 { } public struct ValY3 { } public class RefX0 { } public class RefY0 { } public class RefX1 { } public class RefY1 { } public class RefX2 { } public class RefY2 { } public class RefX3 { } public class RefY3 { } public class GenException : Exception { } public class Gen { public static bool ExceptionTest(bool throwException) { try { if (throwException) { throw new GenException(); } else { return true; } } catch (GenException) { return true; } catch { Console.WriteLine("Caught Wrong Exception"); return false; } } } public class Test { public static int counter = 0; public static bool result = true; public static void Eval(bool exp) { counter++; if (!exp) { result = exp; Console.WriteLine("Test Failed at location: " + counter); } } public static int Main() { Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen.ExceptionTest(true)); Eval(Gen[]>.ExceptionTest(true)); Eval(Gen[,]>.ExceptionTest(true)); Eval(Gen[][][]>.ExceptionTest(true)); Eval(Gen[, , ,]>.ExceptionTest(true)); Eval(Gen[][, , ,][]>.ExceptionTest(true)); Eval(Gen[]>.ExceptionTest(true)); Eval(Gen[,]>.ExceptionTest(true)); Eval(Gen[][][]>.ExceptionTest(true)); Eval(Gen[, , ,]>.ExceptionTest(true)); Eval(Gen[][, , ,][]>.ExceptionTest(true)); Eval(Gen[]>.ExceptionTest(true)); Eval(Gen[,]>.ExceptionTest(true)); Eval(Gen[][][]>.ExceptionTest(true)); Eval(Gen[, , ,]>.ExceptionTest(true)); Eval(Gen[][, , ,][]>.ExceptionTest(true)); Eval(Gen[]>.ExceptionTest(true)); Eval(Gen[,]>.ExceptionTest(true)); Eval(Gen[][][]>.ExceptionTest(true)); Eval(Gen[, , ,]>.ExceptionTest(true)); Eval(Gen[][, , ,][]>.ExceptionTest(true)); Eval(Gen>.ExceptionTest(true)); Eval(Gen>>.ExceptionTest(true)); Eval(Gen>.ExceptionTest(true)); Eval(Gen>.ExceptionTest(true)); Eval(Gen>>.ExceptionTest(true)); Eval(Gen>>>.ExceptionTest(true)); Eval(Gen>>>>.ExceptionTest(true)); Eval(Gen>>.ExceptionTest(true)); Eval(Gen, RefX3>>>, RefX2, RefX3>>>>>.ExceptionTest(true)); Eval(Gen, RefX2, RefX3>>.ExceptionTest(true)); Eval(Gen>.ExceptionTest(true)); Eval(Gen>>.ExceptionTest(true)); Eval(Gen>.ExceptionTest(true)); Eval(Gen>.ExceptionTest(true)); Eval(Gen>>.ExceptionTest(true)); Eval(Gen>>>.ExceptionTest(true)); Eval(Gen>>>>.ExceptionTest(true)); Eval(Gen>>.ExceptionTest(true)); Eval(Gen, ValX3>>>, ValX2, ValX3>>>>>.ExceptionTest(true)); Eval(Gen, ValX2, ValX3>>.ExceptionTest(true)); if (result) { Console.WriteLine("Test Passed"); return 100; } else { Console.WriteLine("Test Failed"); return 1; } } }