@@ -691,209 +691,6 @@ public void CreateVirtualInstance(object o)
691691}" ) ;
692692 }
693693
694- [ Fact ]
695- public async Task TestNarrowingWideningConversionOperatorAsync ( )
696- {
697- await TestConversionVisualBasicToCSharpAsync ( @"Public Class MyInt
698- Public Shared Narrowing Operator CType(i As Integer) As MyInt
699- Return New MyInt()
700- End Operator
701- Public Shared Widening Operator CType(myInt As MyInt) As Integer
702- Return 1
703- End Operator
704- End Class"
705- , @"
706- public partial class MyInt
707- {
708- public static explicit operator MyInt(int i)
709- {
710- return new MyInt();
711- }
712-
713- public static implicit operator int(MyInt myInt)
714- {
715- return 1;
716- }
717- }" ) ;
718- }
719-
720- [ Fact ]
721- public async Task OperatorOverloadsAsync ( )
722- {
723- // Note a couple map to the same thing in C# so occasionally the result won't compile. The user can manually decide what to do in such scenarios.
724- await TestConversionVisualBasicToCSharpAsync ( @"Public Class AcmeClass
725- Public Shared Operator +(i As Integer, ac As AcmeClass) As AcmeClass
726- Return ac
727- End Operator
728- Public Shared Operator &(s As String, ac As AcmeClass) As AcmeClass
729- Return ac
730- End Operator
731- Public Shared Operator -(i As Integer, ac As AcmeClass) As AcmeClass
732- Return ac
733- End Operator
734- Public Shared Operator Not(ac As AcmeClass) As AcmeClass
735- Return ac
736- End Operator
737- Public Shared Operator *(i As Integer, ac As AcmeClass) As AcmeClass
738- Return ac
739- End Operator
740- Public Shared Operator /(i As Integer, ac As AcmeClass) As AcmeClass
741- Return ac
742- End Operator
743- Public Shared Operator \(i As Integer, ac As AcmeClass) As AcmeClass
744- Return ac
745- End Operator
746- Public Shared Operator Mod(s As String, ac As AcmeClass) As AcmeClass
747- Return ac
748- End Operator
749- Public Shared Operator <<(ac As AcmeClass, i As Integer) As AcmeClass
750- Return ac
751- End Operator
752- Public Shared Operator >>(ac As AcmeClass, i As Integer) As AcmeClass
753- Return ac
754- End Operator
755- Public Shared Operator =(s As String, ac As AcmeClass) As AcmeClass
756- Return ac
757- End Operator
758- Public Shared Operator <>(s As String, ac As AcmeClass) As AcmeClass
759- Return ac
760- End Operator
761- Public Shared Operator <(s As String, ac As AcmeClass) As AcmeClass
762- Return ac
763- End Operator
764- Public Shared Operator >(s As String, ac As AcmeClass) As AcmeClass
765- Return ac
766- End Operator
767- Public Shared Operator <=(s As String, ac As AcmeClass) As AcmeClass
768- Return ac
769- End Operator
770- Public Shared Operator >=(s As String, ac As AcmeClass) As AcmeClass
771- Return ac
772- End Operator
773- Public Shared Operator And(s As String, ac As AcmeClass) As AcmeClass
774- Return ac
775- End Operator
776- Public Shared Operator Or(s As String, ac As AcmeClass) As AcmeClass
777- Return ac
778- End Operator
779- End Class" , @"
780- public partial class AcmeClass
781- {
782- public static AcmeClass operator +(int i, AcmeClass ac)
783- {
784- return ac;
785- }
786-
787- public static AcmeClass operator +(string s, AcmeClass ac)
788- {
789- return ac;
790- }
791-
792- public static AcmeClass operator -(int i, AcmeClass ac)
793- {
794- return ac;
795- }
796-
797- public static AcmeClass operator !(AcmeClass ac)
798- {
799- return ac;
800- }
801-
802- public static AcmeClass operator *(int i, AcmeClass ac)
803- {
804- return ac;
805- }
806-
807- public static AcmeClass operator /(int i, AcmeClass ac)
808- {
809- return ac;
810- }
811-
812- public static AcmeClass operator /(int i, AcmeClass ac)
813- {
814- return ac;
815- }
816-
817- public static AcmeClass operator %(string s, AcmeClass ac)
818- {
819- return ac;
820- }
821-
822- public static AcmeClass operator <<(AcmeClass ac, int i)
823- {
824- return ac;
825- }
826-
827- public static AcmeClass operator >>(AcmeClass ac, int i)
828- {
829- return ac;
830- }
831-
832- public static AcmeClass operator ==(string s, AcmeClass ac)
833- {
834- return ac;
835- }
836-
837- public static AcmeClass operator !=(string s, AcmeClass ac)
838- {
839- return ac;
840- }
841-
842- public static AcmeClass operator <(string s, AcmeClass ac)
843- {
844- return ac;
845- }
846-
847- public static AcmeClass operator >(string s, AcmeClass ac)
848- {
849- return ac;
850- }
851-
852- public static AcmeClass operator <=(string s, AcmeClass ac)
853- {
854- return ac;
855- }
856-
857- public static AcmeClass operator >=(string s, AcmeClass ac)
858- {
859- return ac;
860- }
861-
862- public static AcmeClass operator &(string s, AcmeClass ac)
863- {
864- return ac;
865- }
866-
867- public static AcmeClass operator |(string s, AcmeClass ac)
868- {
869- return ac;
870- }
871- }
872- 1 target compilation errors:
873- CS0111: Type 'AcmeClass' already defines a member called 'op_Division' with the same parameter types" ) ;
874- }
875-
876- [ Fact ] // The stack trace displayed will change from time to time. Feel free to update this characterization test appropriately.
877- public async Task OperatorOverloadsWithNoCSharpEquivalentShowErrorInlineCharacterizationAsync ( )
878- {
879- // No valid conversion to C# - to implement this you'd need to create a new method, and convert all callers to use it.
880- var convertedCode = await ConvertAsync < VBToCSConversion > ( @"Public Class AcmeClass
881- Public Shared Operator ^(i As Integer, ac As AcmeClass) As AcmeClass
882- Return ac
883- End Operator
884- Public Shared Operator Like(s As String, ac As AcmeClass) As AcmeClass
885- Return ac
886- End Operator
887- End Class" ) ;
888-
889- Assert . Contains ( "Cannot convert" , convertedCode ) ;
890- Assert . Contains ( "#error" , convertedCode ) ;
891- Assert . Contains ( "_failedMemberConversionMarker1" , convertedCode ) ;
892- Assert . Contains ( "Public Shared Operator ^(i As Integer," , convertedCode ) ;
893- Assert . Contains ( "_failedMemberConversionMarker2" , convertedCode ) ;
894- Assert . Contains ( "Public Shared Operator Like(s As String," , convertedCode ) ;
895- }
896-
897694 [ Fact ]
898695 public async Task ClassWithGloballyQualifiedAttributeAsync ( )
899696 {
0 commit comments