- Notifications
You must be signed in to change notification settings - Fork750
Commit10158f4
committed
Wrap returned objects in interface if method return type is interface
This allows callers to call all methods of an interface, regardless ofwhether the method was implemented implicitly or explicitly. Before thischange, you had to make an explicit cast to the interface to be able tocall the explicitly implemented method. Consider the following code:```C#namespace Python.Test { public interface ITestInterface { void Foo(); void Bar(); } public class TestImpl : ITestInterface { public void Foo() { }; public void ITestInterface.Bar() { }; public void Baz() { }; public static ITestInterface GetInterface() { return new TestImpl(); } }}```And the following Python code, demonstrating the behavior before thischange:```pythonfrom Python.Test import TestImpl, ITestInterfacetest = TestImpl.GetInterface()test.Foo() # workstest.Bar() # AttributeError: 'TestImpl' object has no attribute 'Bar'test.Baz() # works! - baz```After this change, the behavior is as follows:```test = TestImpl.GetInterface()test.Foo() # workstest.Bar() # workstest.Baz() # AttributeError: 'ITestInterface' object has no attribute 'Baz'```This is a breaking change due to that `Baz` is no longer visible inPython.1 parent451fae6 commit10158f4
File tree
7 files changed
+92
-14
lines changed- src
- runtime
- testing
- tests
7 files changed
+92
-14
lines changedLines changed: 20 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
735 | 735 |
| |
736 | 736 |
| |
737 | 737 |
| |
738 |
| - | |
| 738 | + | |
739 | 739 |
| |
740 | 740 |
| |
741 | 741 |
| |
| |||
744 | 744 |
| |
745 | 745 |
| |
746 | 746 |
| |
747 |
| - | |
| 747 | + | |
748 | 748 |
| |
749 | 749 |
| |
750 | 750 |
| |
| |||
761 | 761 |
| |
762 | 762 |
| |
763 | 763 |
| |
764 |
| - | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
765 | 782 |
| |
766 | 783 |
| |
767 | 784 |
| |
|
Lines changed: 16 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
14 |
| - | |
15 | 14 |
| |
16 | 15 |
| |
17 | 16 |
| |
| |||
43 | 42 |
| |
44 | 43 |
| |
45 | 44 |
| |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
46 | 61 |
| |
47 | 62 |
| |
48 | 63 |
| |
|
Lines changed: 14 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
89 | 89 |
| |
90 | 90 |
| |
91 | 91 |
| |
92 |
| - | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
93 | 98 |
| |
94 | 99 |
| |
95 | 100 |
| |
96 | 101 |
| |
97 |
| - | |
98 |
| - | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
99 | 110 |
| |
100 | 111 |
| |
101 | 112 |
| |
|
Lines changed: 0 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
319 | 319 |
| |
320 | 320 |
| |
321 | 321 |
| |
322 |
| - | |
323 | 322 |
| |
324 | 323 |
| |
325 | 324 |
| |
|
Lines changed: 32 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
67 | 67 |
| |
68 | 68 |
| |
69 | 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 | + |
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
564 | 564 |
| |
565 | 565 |
| |
566 | 566 |
| |
| 567 | + | |
567 | 568 |
| |
568 |
| - | |
| 569 | + | |
| 570 | + | |
569 | 571 |
| |
570 | 572 |
| |
571 | 573 |
| |
|
Lines changed: 7 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
104 | 104 |
| |
105 | 105 |
| |
106 | 106 |
| |
107 |
| - | |
108 |
| - | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
109 | 111 |
| |
110 | 112 |
| |
111 | 113 |
| |
| |||
173 | 175 |
| |
174 | 176 |
| |
175 | 177 |
| |
176 |
| - | |
| 178 | + | |
177 | 179 |
| |
178 | 180 |
| |
179 | 181 |
| |
180 | 182 |
| |
181 | 183 |
| |
182 |
| - | |
183 |
| - | |
| 184 | + | |
| 185 | + | |
184 | 186 |
| |
185 | 187 |
| |
186 | 188 |
| |
|
0 commit comments
Comments
(0)