-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial work to support virtual static interface methods (dotnet/link…
…er#2072) * Initial work to support static interface methods * commit to allow Tlakaelel help me with the il test * support for the runtime il test * Incorporating feedback * reverting a file that was checked in by mistake * test updates * generics tests restructuring * tests * fixed tests * added a comment to clarify * FB Commit migrated from dotnet/linker@3fc88d4
- Loading branch information
Showing
16 changed files
with
53,003 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
912 changes: 912 additions & 0 deletions
912
...ases/Inheritance.Interfaces/StaticInterfaceMethods/Dependencies/GenericsBasic_Delegate.il
Large diffs are not rendered by default.
Oops, something went wrong.
896 changes: 896 additions & 0 deletions
896
....Cases/Inheritance.Interfaces/StaticInterfaceMethods/Dependencies/GenericsBasic_Direct.il
Large diffs are not rendered by default.
Oops, something went wrong.
933 changes: 933 additions & 0 deletions
933
...s.Cases/Inheritance.Interfaces/StaticInterfaceMethods/Dependencies/GenericsBasic_Ldftn.il
Large diffs are not rendered by default.
Oops, something went wrong.
40,341 changes: 40,341 additions & 0 deletions
40,341
...er.Tests.Cases/Inheritance.Interfaces/StaticInterfaceMethods/Dependencies/GenericsFull.il
Large diffs are not rendered by default.
Oops, something went wrong.
128 changes: 128 additions & 0 deletions
128
...ts.Cases/Inheritance.Interfaces/StaticInterfaceMethods/Dependencies/TypeHierarchyBasic.il
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
// 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. | ||
|
||
.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 | ||
|
||
|
Oops, something went wrong.