mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Adding the test file the Visual Basic compiler team uses to verify parsing and other features.
		
			
				
	
	
		
			1094 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			VB.net
		
	
	
	
	
	
			
		
		
	
	
			1094 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			VB.net
		
	
	
	
	
	
| ' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.
 | |
| 
 | |
| Option Infer On
 | |
| Option Explicit Off
 | |
| Option Strict Off
 | |
| 
 | |
| Imports System
 | |
| Imports System.Collections.Generic
 | |
| Imports System.Linq
 | |
| Imports System.Linq.Expressions
 | |
| Imports System.Text
 | |
| Imports M = System.Math
 | |
| Imports System.Collections
 | |
| Imports <xmlns:ns="foo">
 | |
| Imports <xmlns="foo">
 | |
| 
 | |
| #Const line = 6
 | |
| #Const foo = True
 | |
| #If foo Then
 | |
| #Else
 | |
| #End If
 | |
| ' There is no equivalent to #undef in VB.NET:
 | |
| '#undef foo
 | |
| '#warning foo
 | |
| '#error foo
 | |
| ' There is no equivalent to 'extern alias' in VB:
 | |
| 'extern alias Foo;
 | |
| 
 | |
| #If DEBUG OrElse TRACE Then
 | |
| Imports System.Diagnostics
 | |
| #ElseIf SILVERLIGHT Then
 | |
| Imports System.Diagnostics
 | |
| #Else
 | |
| Imports System.Diagnostics
 | |
| #End If
 | |
| 
 | |
| #Region "Region"
 | |
| #Region "more"
 | |
| Imports ConsoleApplication2.Test
 | |
| #End Region
 | |
| Imports X = int1
 | |
| Imports X = ABC.X(Of Integer)
 | |
| Imports A.B
 | |
| 
 | |
| #End Region
 | |
| <Assembly: System.Copyright("(C) 2009")> 
 | |
| <Module: System.Copyright(vbLf & vbTab & ChrW(&H123).ToString() & "(C) 2009" & ChrW(&H123).ToString())> 
 | |
| Friend Interface CoContra(Of Out T, In K)
 | |
| End Interface
 | |
| Public Delegate Sub CoContra2()
 | |
| 
 | |
| Namespace My
 | |
| 
 | |
|     Friend Interface CoContra(Of Out T, In K)
 | |
|     End Interface
 | |
|     Friend Delegate Sub CoContra2(Of Out T, In K)()
 | |
| 
 | |
| 
 | |
|     Partial Public Class A
 | |
|         Inherits CSType1
 | |
|         Implements I
 | |
|         <Obsolete()>
 | |
|         Public Sub New(<Obsolete()> ByVal foo As Integer)
 | |
|             MyBase.New(1)
 | |
| L:
 | |
|             Dim i As Integer = Len(New Integer)
 | |
|             i += 1
 | |
| 
 | |
| #If DEBUG Then
 | |
|             Console.WriteLine(export.iefSupplied.command)
 | |
| #End If
 | |
|             Const local? As Integer = Integer.MaxValue
 | |
|             Const local0? As Guid = New Guid(r.ToString())
 | |
| 
 | |
|             'Inserted Compiling code 
 | |
|             Dim r As Integer
 | |
|             Dim Varioblelocal? As Integer = Integer.MaxValue
 | |
|             Dim Varioblelocal0? As Guid = New Guid(r.ToString())
 | |
| 
 | |
|             Dim привет = local
 | |
|             Dim мир = local
 | |
|             Dim local3 = 0, local4 = 1
 | |
|             Dim local5 = If(TryCast(Nothing, Action), Nothing)
 | |
|             Dim local6 = TypeOf local5 Is Action
 | |
| 
 | |
|             Dim u = 1UI
 | |
| 
 | |
|             Dim U_Renamed = 1UI
 | |
| 
 | |
|             Dim hex As Long = &HBADC0DE, Hex_Renamed As Long = &HDEADBEEFL, l As Long = -1L, L_Renamed As Long = 1L
 | |
| 
 | |
|             Dim ul As ULong = 1UL, Ul_Renamed As ULong = 1UL, uL_Renamed2 As ULong = 1UL, UL_Renamed3 As ULong = 1UL, lu As ULong = 1UL, Lu_Renamed1 As ULong = 1UL, lU_Renamed2 As ULong = 1UL, LU_Renamed3 As ULong = 1UL
 | |
| 
 | |
|             Dim bool As Boolean
 | |
|             Dim [byte] As Byte
 | |
|             'ChrW(&H0130), hexchar2 = ChrW(&HBAD)
 | |
|             'ChrW(&H0066), hexchar = ChrW(&H0130), hexchar2
 | |
|             '"c"c, \u0066 = ChrW(&H0066), hexchar
 | |
|             Dim [char] As Char = "c"c ', \u0066
 | |
|             Dim [decimal] As Decimal = 1.44D
 | |
| 
 | |
|             Dim [dynamic] As Object
 | |
|             Dim [double] As Double = m.PI
 | |
|             Dim float As Single
 | |
|             Dim int As Integer = If(local, -1)
 | |
|             Dim [long] As Long
 | |
|             Dim [object] As Object
 | |
|             Dim [sbyte] As SByte
 | |
|             Dim [short] As Short
 | |
|             Dim [string] As String = """/*"
 | |
|             Dim uint As UInteger
 | |
|             Dim [ulong] As ULong
 | |
|             Dim [ushort] As UShort
 | |
| 
 | |
| 
 | |
|             Dim dynamic1 = local5
 | |
|             Dim add = 0
 | |
|             Dim ascending = 0
 | |
|             Dim descending = 0
 | |
|             Dim From = 0
 | |
|             Dim [get] = 0
 | |
|             Dim [global] = 0
 | |
|             Dim group = 0
 | |
|             Dim into = 0
 | |
|             Dim join = 0
 | |
|             Dim [let] = 0
 | |
|             Dim orderby = 0
 | |
|             Dim [partial] = 0
 | |
|             Dim remove = 0
 | |
|             Dim [select] = 0
 | |
|             Dim [set] = 0
 | |
|             Dim value = 0
 | |
|             Dim var = 0
 | |
|             Dim where = 0
 | |
|             Dim yield = 0
 | |
| 
 | |
|             If i > 0 Then
 | |
|                 Return
 | |
|             ElseIf i = 0 Then
 | |
|                 Throw New Exception()
 | |
|             End If
 | |
|             Dim o1 = New MyObject()
 | |
|             Dim o2 = New MyObject(var)
 | |
|             Dim o3 = New MyObject With {.A = i}
 | |
|             REM Dim o4 = New MyObject(dynamic) With {.A = 0, .B = 0, .C = 0}
 | |
|             Dim o5 = New With {Key .A = 0}
 | |
|             Dim a() As Integer = {0, 1, 2, 3, 4, 5}
 | |
|             Select Case i
 | |
|                 Case 1
 | |
|                     GoTo CaseLabel1
 | |
|                 Case 2
 | |
| CaseLabel1:
 | |
|                     GoTo CaseLabel2
 | |
|                     Exit Select
 | |
|                 Case Else
 | |
| CaseLabel2:
 | |
|                     Return
 | |
|             End Select
 | |
|             Do While i < 10
 | |
|                 i += 1
 | |
|             Loop
 | |
|             Do
 | |
|                 i += 1
 | |
|             Loop While i < 10
 | |
|             For j As Integer = 0 To 99
 | |
|                 Console.WriteLine(j)
 | |
|             Next j
 | |
| 
 | |
|             'Modified to include items
 | |
|             Dim items = {1, 2, 3, 4, 5, 6, 7, 8}
 | |
|             For Each i In items
 | |
|                 If i = 7 Then
 | |
|                     Return
 | |
|                 Else
 | |
|                     Continue For
 | |
|                 End If
 | |
|             Next i
 | |
| 
 | |
|             ' There is no equivalent to a 'checked' block in VB.NET
 | |
|             '			checked
 | |
|             i += 1
 | |
| 
 | |
|             'Modified use of synclock functions for VB
 | |
|             Dim sText As String
 | |
|             Dim objLock As Object = New Object()
 | |
|             SyncLock objLock
 | |
|                 sText = "Hello"
 | |
|             End SyncLock
 | |
| 
 | |
|             Using v = BeginScope()
 | |
|                 Using a As New A()
 | |
|                     Using BeginScope()
 | |
|                         Return
 | |
|                     End Using
 | |
|                 End Using
 | |
|             End Using
 | |
| 
 | |
|             ' VB does not support iterators and has no equivalent to the C# 'yield' keyword:
 | |
|             'yield Return Me.items(i)
 | |
|             ' VB does not support iterators and has no equivalent to the C# 'yield' keyword:
 | |
|             'yield(break)
 | |
|             ' There is no equivalent to a 'fixed' block in VB.NET
 | |
|             'Integer* p = Nothing
 | |
| 
 | |
|             Try
 | |
|                 Throw New Exception 'Nothing
 | |
|             Catch av As System.AccessViolationException
 | |
|                 Throw av
 | |
|             Catch e1 As Exception
 | |
|                 Throw
 | |
|             Finally
 | |
|             End Try
 | |
| 
 | |
|             Dim anonymous = New With {.a = 1, .B = 2, .c = 3}
 | |
| 
 | |
|             Dim qry = From i1 In {1, 2, 3, 4, 5, 6}
 | |
|                       Where i1 < 5
 | |
|                       Select New With {.id = i1}
 | |
| 
 | |
| 
 | |
|             Dim query = From c In customers _
 | |
|                             Let d = c _
 | |
|                             Where d IsNot Nothing _
 | |
|                             Join c1 In customers On c1.GetHashCode() Equals c.GetHashCode() _
 | |
|                             Group Join c1 In customers On c1.GetHashCode() Equals c.GetHashCode()
 | |
|                             Into e() _
 | |
|                             Order By g.Count() Ascending _
 | |
|                             Order By g.Key Descending _
 | |
|                             Select New With {.Region = g.Key, .CustCount = g.Count()}
 | |
| 
 | |
| 
 | |
|             'XML Literals
 | |
|             Dim x = <xmlliteral>
 | |
|                         <test name="test"/>
 | |
|                         <test name="test2"></test>
 | |
|                     </xmlliteral>
 | |
| 
 | |
|         End Sub
 | |
| 
 | |
|         Protected Sub Finalize()
 | |
|         End Sub
 | |
|         Private ReadOnly f1 As Integer
 | |
|         ' There is no VB.NET equivalent to 'volatile':
 | |
| 
 | |
|         <Obsolete(), NonExisting(), Foo.NonExisting(var, 5), Obsolete(), NonSerialized(), CLSCompliant(True OrElse False And True)>
 | |
|         Private f2 As Integer
 | |
| 
 | |
|         <Obsolete()>
 | |
|         Public Sub Handler(ByVal value As Object)
 | |
|         End Sub
 | |
| 
 | |
|         Public Function m(Of T As {Class, New})(ByVal t1 As T) As Integer
 | |
|             MyBase.m(t1)
 | |
|             Return 1
 | |
|         End Function
 | |
|         Public Property P() As String
 | |
|             Get
 | |
|                 Return "A"
 | |
|             End Get
 | |
|             Set(ByVal value As String)
 | |
|             End Set
 | |
|         End Property
 | |
| 
 | |
|         Public ReadOnly Property p2 As String
 | |
|             Get
 | |
|             End Get
 | |
|         End Property
 | |
| 
 | |
|         Public Property p3 As String
 | |
| 
 | |
|         Default Public Property item(ByVal index As Integer) As Integer
 | |
|             Protected Get
 | |
|             End Get
 | |
|             Set(ByVal value As Integer)
 | |
|             End Set
 | |
|         End Property
 | |
| 
 | |
|         <Obsolete(), Obsolete()>
 | |
|         Public Custom Event E1 As Action
 | |
|             ' This code will be run when AddHandler MyEvent, D1 is called
 | |
|             AddHandler(ByVal value As Action)
 | |
|             End AddHandler
 | |
| 
 | |
|             ' This code will be run when RemoveHandler MyEvent, D1 is called
 | |
|             RemoveHandler(ByVal value As Action)
 | |
|             End RemoveHandler
 | |
| 
 | |
|             <Obsolete()> RaiseEvent()
 | |
|             End RaiseEvent
 | |
|         End Event
 | |
| 
 | |
| 
 | |
|         Public Shared Operator +(ByVal first, ByVal second)
 | |
|             Dim handler As System.Delegate = New [Delegate](AddressOf Me.Handler)
 | |
|             Return first.Add(second)
 | |
|         End Operator
 | |
| 
 | |
|         <Obsolete()>
 | |
|         Public Shared Operator IsTrue(ByVal a As A) As Boolean
 | |
|             Return True
 | |
|         End Operator
 | |
|         Public Shared Operator IsFalse(ByVal a As A) As Boolean
 | |
|             Return False
 | |
|         End Operator
 | |
| 
 | |
|         Class c
 | |
|         End Class
 | |
| 
 | |
|         Public Sub A(ByVal value As Integer) Implements I.A
 | |
| 
 | |
|         End Sub
 | |
| 
 | |
|         Public Property Value As String Implements I.Value
 | |
|             Get
 | |
| 
 | |
|             End Get
 | |
|             Set(ByVal value As String)
 | |
| 
 | |
|             End Set
 | |
|         End Property
 | |
|     End Class
 | |
| 
 | |
|     Public Structure S
 | |
|         Implements I
 | |
| 
 | |
|         Private f1 As Integer
 | |
|         ' There is no VB.NET equivalent to 'volatile':
 | |
|         ' private volatile int f2;
 | |
| 
 | |
|         <Obsolete()> Private f2 As Integer
 | |
| 
 | |
|         Public Function m(Of T As {Structure, New})(ByVal s As T) As Integer
 | |
|             Return 1
 | |
|         End Function
 | |
| 
 | |
|         Public Property P1() As String
 | |
|             Get
 | |
|                 Dim value As Integer = 0
 | |
|                 Return "A"
 | |
|             End Get
 | |
|             Set(ByVal value As String)
 | |
|             End Set
 | |
|         End Property
 | |
| 
 | |
|         'vb.net can't support abstract member variable
 | |
|         Public ReadOnly Property P2() As String
 | |
|             Get
 | |
|             End Get
 | |
|         End Property
 | |
| 
 | |
|         Public Property p3 As String '//Auto Property
 | |
| 
 | |
|         Default Public Property item(ByVal index As Integer) As Integer
 | |
|             Get
 | |
|             End Get
 | |
|             Friend Set(ByVal value As Integer)
 | |
|             End Set
 | |
|         End Property
 | |
| 
 | |
| 
 | |
|         Public Event E()
 | |
| 
 | |
|         Public Shared Operator +(ByVal first, ByVal second)
 | |
|             Return first.Add(second)
 | |
|             'fixed Integer field(10)
 | |
|         End Operator
 | |
| 
 | |
|         Class c
 | |
|         End Class
 | |
| 
 | |
|         Public Sub A(ByVal value As Integer) Implements I.A
 | |
| 
 | |
|         End Sub
 | |
| 
 | |
|         Public Property Value As String Implements I.Value
 | |
|             Get
 | |
| 
 | |
|             End Get
 | |
|             Set(ByVal value As String)
 | |
| 
 | |
|             End Set
 | |
|         End Property
 | |
|     End Structure
 | |
|     Public Interface I
 | |
|         Sub A(ByVal value As Integer)
 | |
|         Property Value() As String
 | |
|     End Interface
 | |
|     <Flags()>
 | |
|     Public Enum E
 | |
|         A
 | |
|         B = A
 | |
|         C = 2 + A
 | |
| 
 | |
| #If DEBUG Then
 | |
|         D
 | |
| #End If
 | |
| 
 | |
|     End Enum
 | |
|     Public Delegate Sub [Delegate](ByVal P As Object)
 | |
| 
 | |
|     Namespace Test
 | |
|         Public Class Список
 | |
|             Public Shared Function Power(ByVal number As Integer, ByVal exponent As Integer) As IEnumerable
 | |
|                 Dim Список As New Список()
 | |
|                 Список.Main()
 | |
|                 Dim counter As Integer = 0
 | |
|                 Dim result As Integer = 0
 | |
| 
 | |
|                 'Do While ++counter++ < --exponent--
 | |
|                 '                         result = result * number + +number + ++++number
 | |
|                 '                ' VB does not support iterators and has no equivalent to the C# 'yield' keyword:
 | |
|                 '                'yield Return result
 | |
|                 '            Loop
 | |
|             End Function
 | |
|             Shared Sub Main()
 | |
|                 For Each i As Integer In Power(2, 8)
 | |
|                     Console.Write("{0} ", arg0:=i)
 | |
|                 Next i
 | |
|             End Sub
 | |
|         End Class
 | |
|     End Namespace
 | |
| End Namespace
 | |
| 
 | |
| Namespace ConsoleApplication1
 | |
|     Namespace RecursiveGenericBaseType
 | |
|         MustInherit Class A(Of T)
 | |
|             Inherits B(Of A(Of T), A(Of T))
 | |
| 
 | |
|             Protected Overridable Function M() As A(Of T)
 | |
|             End Function
 | |
| 
 | |
|             Protected MustOverride Function N() As B(Of A(Of T), A(Of T))
 | |
| 
 | |
|             Shared Function O() As B(Of A(Of T), A(Of T))
 | |
|             End Function
 | |
|         End Class
 | |
| 
 | |
|         Class B(Of T1, T2)
 | |
|             Inherits A(Of B(Of T1, T2))
 | |
| 
 | |
|             Protected Overrides Function M() As A(Of T)
 | |
|             End Function
 | |
|             Protected NotOverridable Overrides Function N() As B(Of A(Of T), A(Of T))
 | |
|             End Function
 | |
|             Shared Shadows Function O() As A(Of T)
 | |
|             End Function
 | |
|         End Class
 | |
|     End Namespace
 | |
| End Namespace
 | |
| 
 | |
| Namespace Boo
 | |
|     Public Class Bar(Of T As IComparable)
 | |
|         Public f As T
 | |
| 
 | |
|         Public Class Foo(Of U)
 | |
|             Implements IEnumerator(Of T)
 | |
| 
 | |
|             Public Sub Method(Of K As {IList(Of V), IList(Of T), IList(Of U)}, V As IList(Of K))(ByVal k1 As K, ByVal t1 As T, ByVal u1 As U)
 | |
|                 Dim a As A(Of Integer)
 | |
|             End Sub
 | |
| 
 | |
|             Public ReadOnly Property Current As T Implements System.Collections.Generic.IEnumerator(Of T).Current
 | |
|                 Get
 | |
| 
 | |
|                 End Get
 | |
|             End Property
 | |
| 
 | |
|             Public ReadOnly Property Current1 As Object Implements System.Collections.IEnumerator.Current
 | |
|                 Get
 | |
| 
 | |
|                 End Get
 | |
|             End Property
 | |
| 
 | |
|             Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
 | |
| 
 | |
|             End Function
 | |
| 
 | |
|             Public Sub Reset() Implements System.Collections.IEnumerator.Reset
 | |
| 
 | |
|             End Sub
 | |
| 
 | |
| #Region "IDisposable Support"
 | |
|             Private disposedValue As Boolean ' To detect redundant calls
 | |
| 
 | |
|             ' IDisposable
 | |
|             Protected Overridable Sub Dispose(ByVal disposing As Boolean)
 | |
|                 If Not Me.disposedValue Then
 | |
|                     If disposing Then
 | |
| 
 | |
|                     End If
 | |
| 
 | |
| 
 | |
|                 End If
 | |
|                 Me.disposedValue = True
 | |
|             End Sub
 | |
| 
 | |
|             Public Sub Dispose() Implements IDisposable.Dispose
 | |
|                 Dispose(True)
 | |
|                 GC.SuppressFinalize(Me)
 | |
|             End Sub
 | |
| #End Region
 | |
| 
 | |
|         End Class
 | |
|     End Class
 | |
| End Namespace
 | |
| 
 | |
| Friend Class Test2
 | |
|     Private Sub Bar3()
 | |
|         Dim x = New Boo.Bar(Of Integer).Foo(Of Object)()
 | |
|         x.Method(Of String, String)(" ", 5, New Object())
 | |
| 
 | |
|         Dim q = From i In New Integer() {1, 2, 3, 4}
 | |
|                 Where i > 5
 | |
|                 Select i
 | |
|     End Sub
 | |
| 
 | |
|     Public Shared Widening Operator CType(ByVal s As String) As Test2
 | |
|         Return New Test2()
 | |
|     End Operator
 | |
| 
 | |
|     Public Shared Narrowing Operator CType(ByVal s As Integer) As Test2
 | |
|         Return New Test2()
 | |
|     End Operator
 | |
| 
 | |
|     Public foo As Integer = 5
 | |
|     Private Sub Bar2()
 | |
|         foo = 6
 | |
|         Me.foo = 5.GetType()
 | |
|         Dim t As Test2 = "sss"
 | |
|     End Sub
 | |
|     Private Sub Blah()
 | |
|         Dim i As Integer = 5
 | |
|         Dim j? As Integer = 6
 | |
| 
 | |
|         Dim e As Expression(Of Func(Of Integer)) = Function() i
 | |
|     End Sub
 | |
| 
 | |
|     Public Property FFoo() As Type
 | |
|         Get
 | |
|             Return GetType(System.Int32)
 | |
|         End Get
 | |
|         Set(ByVal value As Type)
 | |
|             Dim t = GetType(System.Int32)
 | |
|             t.ToString()
 | |
|             t = value
 | |
|         End Set
 | |
|     End Property
 | |
|     Public Sub Constants()
 | |
|         Dim i As Integer = 1 + 2 + 3 + 5
 | |
|         Dim s As Global.System.String = "a" & CStr("a") & "a" & "a" & "a" & "A"
 | |
|     End Sub
 | |
| 
 | |
|     Public Sub ConstructedType()
 | |
|         Dim i As List(Of Integer) = Nothing
 | |
|         Dim c As Integer = i.Count
 | |
|     End Sub
 | |
| End Class
 | |
| Namespace Comments.XmlComments.UndocumentedKeywords
 | |
|     ''' <summary>
 | |
|     ''' Whatever 
 | |
|     ''' </summary>
 | |
|     ''' <!-- c -->
 | |
|     ''' <![CDATA[c]]> //
 | |
|     ''' <c></c> /* */
 | |
|     ''' <code></code>
 | |
|     ''' <example></example>
 | |
|     ''' <exception cref="bla"></exception>
 | |
|     ''' <include file='' path='[@name=""]'/>
 | |
|     ''' <permission cref=" "></permission>
 | |
|     ''' <remarks></remarks>
 | |
|     ''' <see cref=""/>
 | |
|     ''' <seealso cref=" "/>
 | |
|     ''' <value></value>
 | |
|     ''' <typeparam name="T"></typeparam>
 | |
|     Class c(Of T)
 | |
|         Sub M(Of U)(ByVal T1 As T, ByVal U1 As U)
 | |
|             Dim intValue As Integer = 0
 | |
|             intValue = intValue + 1
 | |
|             Dim strValue As String = "hello" 's
 | |
|             Dim c As New [MyClass]()
 | |
|             Dim verbatimStr As String = "@ \\\\" 's
 | |
|         End Sub
 | |
|     End Class
 | |
| 
 | |
| End Namespace
 | |
| Friend Class TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 'Scen8
 | |
| End Class
 | |
| 
 | |
| Friend Class TestClass1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX22 'Scen9
 | |
| End Class
 | |
| 
 | |
| Friend Class yield
 | |
|     ''INSTANT VB TODO TASK: There is no equivalent to the undocumented C# '__arglist' keyword in VB:
 | |
|     'Private Sub Foo(Of U)(ByVal __arglist)
 | |
|     '    Dim c1 As C(Of U) = Nothing
 | |
|     '    c1.M(Of Integer)(5, Nothing)
 | |
|     '    Dim tr As TypedReference = __makeref(c1)
 | |
|     '    Dim t As Type = __reftype(tr)
 | |
| 
 | |
|     '    	Dim j As Integer = __refvalue(tr, Integer)
 | |
| 
 | |
|     '    Params(a:=t, b:=t)
 | |
|     'End Sub
 | |
|     Private Sub Params(ByRef a As Object, <System.Runtime.InteropServices.Out()> ByRef b As Object, ByVal ParamArray c() As Object)
 | |
|     End Sub
 | |
| 
 | |
|     'Private Sub Params(Optional <System.Runtime.InteropServices.Out()> ByRef a As dynamic = 2, Optional ByRef c As dynamic = Nothing, ParamArray ByVal c()() As dynamic)
 | |
|     'End Sub
 | |
|     Public Overrides Function ToString() As String
 | |
|         Return MyBase.ToString()
 | |
|     End Function
 | |
| 
 | |
|     Public Sub method()
 | |
|         Dim a?(4) As Integer '[] bug
 | |
|         ' YES []
 | |
|         Dim var() As Integer = {1, 2, 3, 4, 5} ',;
 | |
|         Dim i As Integer = a(i) '[]
 | |
|         Dim f As New Foo(Of T)() '<> ()
 | |
|         f.method()
 | |
|         i = i + i - i * i \ i Mod i And i Or i Xor i '+ - * / % & | ^
 | |
| 
 | |
|         Dim b As Boolean = True And False Or True Xor False '& | ^
 | |
|         b = Not b '!
 | |
|         i = Not i '~i
 | |
|         b = i < i AndAlso i > i '< && >
 | |
| 
 | |
|         Dim ii? As Integer = 5 '? bug
 | |
|         ' NO ?
 | |
|         Dim f1 As Integer = If(True, 1, 0) '? :
 | |
|         ' YES :
 | |
|         i += 1 '++
 | |
|         i -= 1 '--
 | |
|         b = True AndAlso False OrElse True '&& ||
 | |
|         i = i << 5 '<<
 | |
|         i = i >> 5 '>>
 | |
|         b = i = i AndAlso i <> i AndAlso i <= i AndAlso i >= i '= == && != <= >=
 | |
|         i += 5.0 '+=
 | |
|         i -= i '-=
 | |
|         i *= i '*=
 | |
|         i \= i '/
 | |
|         '=
 | |
|         i = i Mod i '%=
 | |
|         i = i And i '&=
 | |
|         i = i Or i '|=
 | |
|         i = i Xor i '^=
 | |
|         i <<= i '<<=
 | |
|         i >>= i '>>=
 | |
|         Dim s As Object = Function(x) x + 1 '=>
 | |
| 
 | |
| 
 | |
|         ' There is no equivalent to an 'unsafe' block in VB.NET
 | |
|         '			unsafe
 | |
|         '		Point* p = &point '* &
 | |
|         '			p->x = 10 '->
 | |
| 
 | |
|         Dim p As Point
 | |
|         p.X = 10
 | |
|         p.Y = 12
 | |
| 
 | |
|         Dim p2 As New Point With {.X = 10, .Y = 12}
 | |
| 
 | |
| 
 | |
|         Dim br As IO.BinaryReader = Nothing
 | |
|     End Sub
 | |
| 
 | |
|     Friend Structure Point
 | |
|         Public X As Integer
 | |
|         Public Y As Integer
 | |
|     End Structure
 | |
| End Class
 | |
| 
 | |
| 'Extension Method
 | |
| Module Module1
 | |
|     <Runtime.CompilerServices.Extension()> Function FooExtension(ByVal x As String) As String
 | |
|         Return x & "test"
 | |
|     End Function
 | |
| 
 | |
|     <Runtime.CompilerServices.Extension()> Function FooExtension(ByVal x As String,
 | |
|                                                                  ByVal y As Integer) As String
 | |
|         'With Implicit Line Continuation
 | |
|         Return x & "test2"
 | |
|     End Function
 | |
| 
 | |
|     Sub Foo()
 | |
|         'Collections
 | |
|         Dim i As New List(Of String) From {"test", "item"}
 | |
|         Dim i1 As New Dictionary(Of Integer, String) From {{1, "test"}, {2, "item"}}
 | |
| 
 | |
|         'Arrays
 | |
|         Dim ia1 = {1, 2, 3, 4, 5}
 | |
|         Dim la2 = {1,
 | |
|                    2L,
 | |
|                    3,
 | |
|                    4S,
 | |
|                    5}
 | |
|         Console.Write(GetXmlNamespace(ns))
 | |
|         Dim ia3 As Integer() = {1,
 | |
|                                 2,
 | |
|                                 3, 4, 5}
 | |
|         Dim ia4() As Integer = {1,
 | |
|                                 2, 3, 4,
 | |
|                                 5}
 | |
| 
 | |
|         Dim ia5 = New Integer() {1, 2, 3, 4, 5}
 | |
| 
 | |
| 
 | |
|         Dim ia6 = {{1, 2}, {3, 4}, {5, 6}} '2d array
 | |
|         Dim ia7 = {({1}), ({3, 4}), ({5, 6, 2})} 'jagged array
 | |
| 
 | |
|         'Standalone
 | |
|         If {1, 2, 3}.Count = 2 Then
 | |
|         ElseIf {1, 2, 3}.Count = 3 Then
 | |
|         Else
 | |
|         End If
 | |
| 
 | |
|     End Sub
 | |
| End Module
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #Region "Events"
 | |
| Public Delegate Sub MyDelegate(ByVal message As String)
 | |
| 
 | |
| Class MyClass1
 | |
| 
 | |
|     Custom Event MyEvent As MyDelegate
 | |
| 
 | |
|         ' This code will be run when AddHandler MyEvent, D1
 | |
|         ' is called
 | |
|         AddHandler(ByVal value As MyDelegate)
 | |
|             Console.WriteLine("Adding Handler for MyEvent")
 | |
|             MyEventHandler = value
 | |
|         End AddHandler
 | |
| 
 | |
|         ' This code will be run when RemoveHandler MyEvent, D1
 | |
|         ' is called
 | |
|         RemoveHandler(ByVal value As MyDelegate)
 | |
|             Console.WriteLine("Removing Handler for MyEvent")
 | |
|             MyEventHandler = Nothing
 | |
|         End RemoveHandler
 | |
| 
 | |
|         ' This code will be run when RaiseEvent MyEvent(string)
 | |
|         ' is called
 | |
|         RaiseEvent(ByVal message As String)
 | |
|             If Not MyEventHandler Is Nothing Then
 | |
|                 MyEventHandler.Invoke(message)
 | |
|             Else
 | |
|                 Console.WriteLine("No Handler for Raised MyEvent")
 | |
|             End If
 | |
|         End RaiseEvent
 | |
|     End Event
 | |
| 
 | |
|     Public MyEventHandler As MyDelegate
 | |
| 
 | |
|     Public Sub Raise_Event()
 | |
|         RaiseEvent MyEvent("MyEvent Was Raised")
 | |
|     End Sub
 | |
| End Class
 | |
| 
 | |
| Module DelegateModule
 | |
|     Dim Var1 As MyClass1
 | |
|     Dim D1 As MyDelegate
 | |
| 
 | |
|     Sub EventsMain()
 | |
|         Var1 = New MyClass1
 | |
|         D1 = New MyDelegate(AddressOf MyHandler)
 | |
|         AddHandler Var1.MyEvent, D1
 | |
|         Var1.Raise_Event()
 | |
|         RemoveHandler Var1.MyEvent, D1
 | |
|     End Sub
 | |
| 
 | |
|     Sub MyHandler(ByVal message As String)
 | |
|         Console.WriteLine("Event Handled: " & message)
 | |
|     End Sub
 | |
| End Module
 | |
| 
 | |
| #End Region
 | |
| 
 | |
| #Region "Linq"
 | |
| Module LINQQueries
 | |
|     Sub Join()
 | |
|         Dim categories() = {"Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood"}
 | |
| 
 | |
|         Dim productList = {New With {.category = "Condiments", .name = "Ketchup"}, New With {.category = "Seafood", .name = "Code"}}
 | |
| 
 | |
|         Dim query = From c In categories _
 | |
|                     Group Join p In productList On c Equals p.category Into Group _
 | |
|                     From p In Group _
 | |
|                     Select Category = c, p.name
 | |
| 
 | |
|         For Each v In query
 | |
|             Console.WriteLine(v.name + ": " + v.Category)
 | |
|         Next
 | |
|     End Sub
 | |
| End Module
 | |
| #End Region
 | |
| 
 | |
| 
 | |
| #Region "Lambda's"
 | |
| Module Lambdas
 | |
|     Dim l1 = Sub()
 | |
|                  Console.WriteLine("Sub Statement")
 | |
|              End Sub
 | |
| 
 | |
|     Dim L2 = Sub() Console.WriteLine("Sub Statement 2")
 | |
| 
 | |
|     Dim L3 = Function(x As Integer) x Mod 2
 | |
| 
 | |
|     Dim L4 = Function(y As Integer) As Boolean
 | |
|                  If y * 2 < 10 Then
 | |
|                      Return True
 | |
|                  Else
 | |
|                      Return False
 | |
|                  End If
 | |
|              End Function
 | |
| End Module
 | |
| #End Region
 | |
| 
 | |
| #Region "Co Contra Variance"
 | |
| Public Class Cheetah
 | |
| 
 | |
| End Class
 | |
| Public Class Animals
 | |
| 
 | |
| End Class
 | |
| Public Interface IVariance(Of In T)
 | |
|     Sub Foo(ByVal a As T)
 | |
|     Property InterProperty() As IVariance(Of Cheetah)
 | |
|     Property InterProperty2() As IVariance(Of Animals)
 | |
| End Interface
 | |
| 
 | |
| Delegate Sub Func(Of In T)(ByVal a As T)
 | |
| 
 | |
| 
 | |
| Public Delegate Function Func2(Of Out T)() As T
 | |
| Public Interface IVariance2(Of Out T)
 | |
|     Function Foo() As T
 | |
| End Interface
 | |
| 
 | |
| Public Class Variance2(Of T As New) : Implements IVariance2(Of T)
 | |
| 
 | |
|     Dim type As IVariance2(Of Animals)
 | |
| 
 | |
|     Public Function Foo() As T Implements IVariance2(Of T).Foo
 | |
|         Return New T
 | |
|     End Function
 | |
| 
 | |
|     Function Foo(ByVal arg As IVariance2(Of T)) As String
 | |
|         Return arg.GetType.ToString
 | |
|     End Function
 | |
| 
 | |
|     Function Goo(ByVal arg As Func2(Of T)) As String
 | |
|         Return arg.Invoke().GetType.ToString
 | |
|     End Function
 | |
| End Class
 | |
| 
 | |
| #End Region
 | |
| 
 | |
| Module Mod1Orcas
 | |
|     Dim AT1 = New With {Key .prop1 = 1}
 | |
|     Dim AT2 = New With {.prop1 = 7}
 | |
|     Dim b_false As Boolean = False
 | |
|     Dim n_false = False
 | |
|     Dim i = If(b_false And n_false, 1, 2)
 | |
|     Dim s1 = <xml_literal><%= If(Nothing, Nothing) %></xml_literal>
 | |
| 
 | |
|     Delegate Sub delfoo()
 | |
|     Delegate Sub delfoo1(ByVal sender As Object, ByVal e As System.EventArgs)
 | |
| 
 | |
|     Sub Foo()
 | |
|     End Sub
 | |
| 
 | |
|     Sub Method1(ByVal sender As Object, ByVal e As System.EventArgs)
 | |
|     End Sub
 | |
|     Sub Method1a()
 | |
|     End Sub
 | |
| 
 | |
|     Sub AssignDelegate()
 | |
|         Dim d As delfoo = AddressOf Foo
 | |
|         d.Invoke()
 | |
| 
 | |
| 
 | |
|         Dim d1_1 As delfoo1 = AddressOf Method1
 | |
|         Dim d1_1a As delfoo1 = AddressOf Method1a 'Relaxed Delegate
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|         'Nullable
 | |
|         Dim Value1a As Integer? = 10
 | |
|         Dim Value1b As Integer = 1
 | |
|         Dim Value1c? As Integer = 1
 | |
|         Dim Value1c? As Integer? = 1
 | |
|         Dim TestReturnValue = Value1a * Value1b
 | |
|         If Value1a / Value1b > 0 Then
 | |
| 
 | |
|         End If
 | |
| 
 | |
|         Dim sNone = "None"
 | |
|         Dim SSystemOnly = "SystemOnly"
 | |
| 
 | |
|         Dim XMLLiteral = <?xml version="1.0" encoding="utf-8"?>
 | |
| 
 | |
|                          <Details>
 | |
|                              <FileImports>
 | |
|                                  <FileImport name=<%= sNone %>>
 | |
|                                  </FileImport>
 | |
|                                  <FileImport name=<%= SSystemOnly %>>
 | |
|         Imports System
 | |
|       </FileImport>
 | |
|                                  <FileImport name="Default">
 | |
|         Imports System
 | |
|         Imports System.Collections
 | |
|       </FileImport>
 | |
|                              </FileImports>
 | |
| 
 | |
|                              <CodeConstructs>
 | |
|                                  <!-- Type Constructs-->
 | |
|                                  <Construct name="Module" allowcodeblock="false" allowOuter="true" group="Type" allownesting="true" isnestable="false" allowsoverload="false">
 | |
|                                      <Start>public Module {Identifier}</Start>
 | |
|                                      <End>End Module </End>
 | |
|                                      <DefaultIdent>Module_</DefaultIdent>
 | |
|                                  </Construct>
 | |
|                                  <Construct name="Class" allowcodeblock="false" allowOuter="true" group="Type" allownesting="true" isnestable="true" allowsoverload="false">
 | |
|                                      <Start>public class {Identifier}</Start>
 | |
|                                      <End>End Class</End>
 | |
|                                      <DefaultIdent>Class_</DefaultIdent>
 | |
|                                  </Construct>
 | |
|                                  <Construct name="Structure" allowcodeblock="false" allowOuter="true" group="Type" allownesting="true" isnestable="true" allowsoverload="false">
 | |
|                                      <Start>public class {Identifier}</Start>
 | |
|                                      <End>End Class</End>
 | |
|                                      <DefaultIdent>Struct_</DefaultIdent>
 | |
|                                  </Construct>
 | |
|                              </CodeConstructs>
 | |
| 
 | |
|                              <CodeBlocks>
 | |
|                                  <Block name="CodeBlock0.txt" statements="1">
 | |
|                                      <![CDATA[ Dim <{x0}> = Microsoft.VisualBasic.FileSystem.Dir(".") ]]>
 | |
|                                  </Block>
 | |
|                                  <Block name="CodeBlock1.txt" statements="1">
 | |
|                                      <![CDATA[ Dim <{x0}> = 1 ]]>
 | |
|                                  </Block>
 | |
|                                  <Block name="CodeBlock2.txt" statements="1">
 | |
|                                      <![CDATA[ Dim <{x0}> as string = "2" ]]>
 | |
|                                  </Block>
 | |
|                              </CodeBlocks>
 | |
|                          </Details>
 | |
|         Dim x = <![CDATA[ Dim <{x0}> as string = "2" ]]>
 | |
|         Dim y = <!-- --> : Call <?a?>() : Dim x = <e/>
 | |
|     End Sub
 | |
| End Module
 | |
| 
 | |
| Class Customer
 | |
|     Public Property name As String = "Default"
 | |
|     Public AGe As Integer
 | |
|     Public Postion As String
 | |
|     Public Level As Integer = 0
 | |
|     Public Property age2 As Integer
 | |
| End Class
 | |
| 
 | |
| Class Foo
 | |
|     Structure Bar
 | |
|         Dim x As Integer
 | |
| 
 | |
|         Sub LoopingMethod()
 | |
|             For i = 1 To 20 Step 1
 | |
|             Next i
 | |
| 
 | |
|             For Each a In {1, 2, 3, 4}
 | |
|             Next
 | |
| 
 | |
|             Dim icount As Integer
 | |
|             Do While icount <= 10
 | |
|                 icount += 1
 | |
|             Loop
 | |
| 
 | |
|             icount = 0
 | |
|             While icount <= 100
 | |
|                 icount += 1
 | |
|             End While
 | |
| 
 | |
|             icount = 0
 | |
|             Do Until icount >= 10
 | |
|                 icount += 2
 | |
|             Loop
 | |
|         End Sub
 | |
|     End Structure
 | |
| End Class
 | |
| 
 | |
| Class FooGen(Of t)
 | |
|     Structure BarGen(Of u)
 | |
|         Dim x As t
 | |
|         Dim z As u
 | |
|         Sub SelectionMethods()
 | |
| 
 | |
|             Dim icount As Integer = 1L
 | |
| 
 | |
|             If icount = 1 Then
 | |
|             ElseIf icount > 1 Then
 | |
|             Else
 | |
|             End If
 | |
| 
 | |
|             Select Case icount
 | |
|                 Case 1
 | |
|                 Case 2, 3
 | |
|                 Case Is > 3
 | |
|                 Case Else
 | |
|             End Select
 | |
|         End Sub
 | |
| 
 | |
|         Sub Operators()
 | |
|             Dim a As Boolean = True
 | |
|             Dim b As Boolean = False
 | |
| 
 | |
|             If a And
 | |
|                 b Then
 | |
|             End If
 | |
| 
 | |
|             If a Or
 | |
|                 b Then
 | |
|             End If
 | |
| 
 | |
|             If Not a And
 | |
|                    b Then
 | |
|             End If
 | |
| 
 | |
|             If a = b AndAlso
 | |
|                    b = True Then
 | |
|             End If
 | |
| 
 | |
|             If a =
 | |
|                 b OrElse
 | |
|                 b =
 | |
|                 False Then
 | |
|             End If
 | |
| 
 | |
|             If (a Or
 | |
|                 b) OrElse b =
 | |
|             True Then
 | |
|             End If
 | |
| 
 | |
|         End Sub
 | |
| 
 | |
|         Sub Method1()
 | |
| 
 | |
|             Dim x As New Customer With {.name = "Test",
 | |
|                                         .AGe = 30,
 | |
|                                         .Level = 1, .Postion = "SDET"}
 | |
| 
 | |
| 
 | |
|             Dim x2 As New Customer With {.name = "Test",
 | |
|                                         .AGe = 30,
 | |
|                                         .Level = 1, .Postion = "SDET",
 | |
|                                          .age2 = .AGe}
 | |
| 
 | |
|         End Sub
 | |
| 
 | |
| 
 | |
|     End Structure
 | |
| End Class
 | |
| 
 | |
| 
 | |
| Public Class Bar
 | |
| 
 | |
| End Class
 | |
| 
 | |
| Public Class ClsPPMTest003
 | |
|     Partial Private Sub Foo3()
 | |
|     End Sub
 | |
| End Class
 | |
| 
 | |
| Partial Public Class ClsPPMTest003
 | |
|     Private Sub Foo3()
 | |
|     End Sub
 | |
| 
 | |
|     Public Sub CallFooFromClass()
 | |
|         Me.Foo3()
 | |
|         Dim x1 As New Foo
 | |
|         Dim y1 As New Bar
 | |
| 
 | |
|         If x1 Is y1 Then
 | |
|         Else
 | |
|             Console.WriteLine("Expected Result Occurred")
 | |
|         End If
 | |
| 
 | |
|         If x1 IsNot y1 Then
 | |
|         Else
 | |
|             Console.WriteLine("Expected Result Occurred")
 | |
|         End If
 | |
| 
 | |
|     End Sub
 | |
| End Class
 |