blob: 2d8e8f97ca60fa33bf1c4cb19f0b53cd85405469 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
.assembly extern System.Runtime
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A)
}
.assembly 'library' { }
.class interface public abstract auto ansi InterfaceScenario1
{
.method public newslot virtual abstract static int32 Method() cil managed noinlining
{
} // end of method Method
} // end of class InterfaceScenario1
.class public auto ansi BaseScenario1
extends [System.Runtime]System.Object
implements InterfaceScenario1
{
.method public static int32 Method() cil managed noinlining
{
.override method int32 InterfaceScenario1::Method()
.locals init (int32 V_O)
ldloca.s 0
initobj int32
ldloc.0
ret
} // end of method Method
} // end of class BaseScenario1
.class public auto ansi DerivedScenario1
extends BaseScenario1
{
} // end of class DerivedScenario1
.class interface public abstract auto ansi InterfaceScenario2
{
.method public newslot virtual abstract static int32 Method() cil managed noinlining
{
} // end of method Method
} // end of class InterfaceScenario2
.class public auto ansi BaseScenario2
extends [System.Runtime]System.Object
implements InterfaceScenario2
{
.method public static int32 Method() cil managed noinlining
{
.override method int32 InterfaceScenario2::Method()
.locals init (int32 V_O)
ldloca.s 0
initobj int32
ldloc.0
ret
} // end of method Method
} // end of class BaseScenario2
.class public auto ansi DerivedScenario2
extends BaseScenario2
implements InterfaceScenario2
{
} // end of class DerivedScenario2
.class interface public abstract auto ansi InterfaceScenario3
{
.method public newslot virtual abstract static int32 Method() cil managed noinlining
{
} // end of method Method
} // end of class InterfaceScenario3
.class public abstract auto ansi BaseScenario3
extends [System.Runtime]System.Object
implements InterfaceScenario3
{
} // end of class BaseScenario3
.class public auto ansi DerivedScenario3
extends BaseScenario3
implements InterfaceScenario3
{
.method public static int32 MethodImplOnDerived() cil managed noinlining
{
.override method int32 InterfaceScenario3::Method()
.locals init (int32 V_O)
ldloca.s 0
initobj int32
ldloc.0
ret
} // end of method MethodImplOnDerived
} // end of class DerivedScenario3
.class public auto ansi TestEntrypoint
extends [System.Runtime]System.Object
{
.method public static void Test_Scenario1() cil managed noinlining
{
constrained. DerivedScenario1
call int32 InterfaceScenario1::Method()
pop
ret
} // end of method Test_Scenario1
.method public static void Test_Scenario2() cil managed noinlining
{
constrained. DerivedScenario2
call int32 InterfaceScenario2::Method()
pop
ret
} // end of method Test_Scenario2
.method public static void Test_Scenario3() cil managed noinlining
{
constrained. DerivedScenario3
call int32 InterfaceScenario3::Method()
pop
ret
} // end of method Test_Scenario3
.method public static int32 Test() cil managed noinlining
{
.locals init (class [System.Runtime]System.Exception V_0)
.try {
call void TestEntrypoint::Test_Scenario1()
call void TestEntrypoint::Test_Scenario2()
call void TestEntrypoint::Test_Scenario3()
leave.s Scenario1Done
} catch [System.Runtime]System.Exception {
stloc.0
leave.s Scenario1Done
}
Scenario1Done: nop
ret
} // end of method Test
} // end of class TestEntrypoint
|