1 Imports System.Runtime.CompilerServices
2
3 Namespace Language.Default
4
5     Public Structure BooleanAssert
6
7         Dim bool As Boolean
8
9         <MethodImpl(MethodImplOptions.AggressiveInlining)>
10         Public Overrides Function ToString() As String
11             Return bool.ToString
12         End Function
13
14         <MethodImpl(MethodImplOptions.AggressiveInlining)>
15         Public Shared Widening Operator CType(b As BooleanAs BooleanAssert
16             Return New BooleanAssert With {.bool = b}
17         End Operator
18
19         <MethodImpl(MethodImplOptions.AggressiveInlining)>
20         Public Shared Narrowing Operator CType(b As BooleanAssert) As Boolean
21             Return b.bool
22         End Operator
23
24         <MethodImpl(MethodImplOptions.AggressiveInlining)>
25         Public Shared Operator IsTrue(b As BooleanAssert) As Boolean
26             Return b.bool
27         End Operator
28
29         <MethodImpl(MethodImplOptions.AggressiveInlining)>
30         Public Shared Operator IsFalse(b As BooleanAssert) As Boolean
31             Return b.bool = False
32         End Operator
33
34         <MethodImpl(MethodImplOptions.AggressiveInlining)>
35         Public Shared Operator =(b As BooleanAssert, bool As BooleanAs Boolean
36             Return b.bool = bool
37         End Operator
38
39         <MethodImpl(MethodImplOptions.AggressiveInlining)>
40         Public Shared Operator <>(b As BooleanAssert, bool As BooleanAs Boolean
41             Return Not b = bool
42         End Operator
43
44         <MethodImpl(MethodImplOptions.AggressiveInlining)>
45         Public Shared Operator =(bool As Boolean, b As BooleanAssert) As Boolean
46             Return b = bool
47         End Operator
48
49         <MethodImpl(MethodImplOptions.AggressiveInlining)>
50         Public Shared Operator <>(bool As Boolean, b As BooleanAssert) As Boolean
51             Return Not b = bool
52         End Operator
53
54         <MethodImpl(MethodImplOptions.AggressiveInlining)>
55         Public Shared Operator Or(assert As BooleanAssert, ifFailure As Object()) As Object
56             Return If(assert, ifFailure(0), ifFailure(1))
57         End Operator
58     End Structure
59 End Namespace