view runtime/indent/testdir/vb.in @ 32816:939396a5711c v9.0.1722

patch 9.0.1722: wrong error messages when passing wrong types to count() Commit: https://github.com/vim/vim/commit/4f389e7c0fe7dfeccfa512a72fa36f9028d57159 Author: zeertzjq <zeertzjq@outlook.com> Date: Thu Aug 17 22:10:40 2023 +0200 patch 9.0.1722: wrong error messages when passing wrong types to count() Problem: wrong error messages when passing wrong types to count() Solution: fix it This fixes two problems: 1. When passing wrong type to {ic} argument of count(), two error messages are given, the second of which is misleading. 2. When passing wrong type to {comp} argument of count(), the error message doesn't mention that {comp} may be a String. closes: #12825 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
author Christian Brabandt <cb@256bit.org>
date Thu, 17 Aug 2023 22:15:03 +0200
parents 7d68a90cbf5c
children f8e7e00787b5
line wrap: on
line source

' vim: filetype=vb shiftwidth=4 expandtab
'
' START_INDENT
Public Type GEmployeeRecord     ' Create user-defined type. 
ID As Integer               ' Define elements of data type. 
Name As String * 20 
Address As String * 30 
Phone As Long 
HireDate As Date 
End Type 

Public Enum InterfaceColors 
icMistyRose = &HE1E4FF& 
icSlateGray = &H908070& 
icDodgerBlue = &HFF901E& 
icDeepSkyBlue = &HFFBF00& 
icSpringGreen = &H7FFF00& 
icForestGreen = &H228B22& 
icGoldenrod = &H20A5DA& 
icFirebrick = &H2222B2& 
End Enum

Enum SecurityLevel 
IllegalEntry = -1 
SecurityLevel1 = 0 
SecurityLevel2 = 1 
End Enum 

Public Function TestConditional (number As Integer, ext As String) As Boolean
Dim inRange As Boolean

Select Case number
Case <= 0
inRange = False
Case > 10
inRange = False
Case Else
inRange = True
End Select

' This is a special case identified in the indent script.
Select Case number
End Select

If ext = ".xlm" Then
If inRange Then
TestConditional = True
Else
TestConditional = False
End If
ElseIf ext = ".xlsx" Then
If inRange Then
TestConditional = False
Else
TestConditional = True
End If
Else
TestConditional = False
End If
End Function

Private Sub TestIterators (lLimit As Integer, uLimit As Integer)
Dim a() As Variant
Dim elmt As Variant
Dim found As Boolean
Dim indx As Integer
Const specialValue As Integer = 5

If uLimit < lLimit Then
Exit Sub
End If

ReDim a(lLimit To uLimit)
For indx=lLimit To Ulimit
a(indx) = 2 * indx
Next indx

found = False
For Each elmt in a
If elmt = specialValue Then
found = True
End If
Next elmt

If found then
indx = uLimit
Do While indx >= lLimit
indx = indx - 1
Loop
End If

End Sub

Public Sub TestMultiline (cellAddr As String, rowNbr As Long)
Dim rng As Range

Set rng = Range(cellAddr)
With rng
.Cells(1,1).Value = _
"Line 1 of multiline string; " & _
"Line 2 of multiline string; " & _
"Line 3 of multiline string"
End With

' The following lines have whitespace after the underscore character
' and therefore do not form a valid multiline statement.  The indent
' script correctly treats them as four single line statements contrary
' to the author's obvious indent.
rng..Cells(1,1).Value = _ 
"Line 1 of multiline string; " & _ 
"Line 2 of multiline string; " & _ 
"Line 3 of multiline string"

End Sub

Private Sub TestStmtLabel()
GoTo stmtLabel

' Statement labels are never indented
stmtLabel:

End Sub

Sub TestTypeKeyword()
Type EmployeeRecord         ' Create user-defined type. 
ID As Integer           ' Define elements of data type. 
Name As String * 20 
Address As String * 30 
Phone As Long 
HireDate As Date 
End Type 
Dim varType As EmployeeRecord
End Sub
' END_INDENT