Files
loongoffice/basic/qa/basic_coverage/test_for_each.vb
Mike Kaganski e67ffd5a62 tdf#135470: Fix checks
The check should prevent error in case when the variable has
wrong type. IsObject returns false e.g. for arrays, which are
valid iterables. So proper check is using GetFullType, which
will give SbxOBJECT for any variable for which GetObject does
not set error.

"Next" should also generate an error for uninitialized loops.

Regression after 5760c94b8847164f9a7a181f031c7c86643944af

Change-Id: Ib58e1cc76ef63aa1ff8a86c9d5dc956e4780fb49
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100258
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-08-07 09:43:44 +02:00

44 lines
1.2 KiB
VB.net

'
' This file is part of the LibreOffice project.
'
' This Source Code Form is subject to the terms of the Mozilla Public
' License, v. 2.0. If a copy of the MPL was not distributed with this
' file, You can obtain one at http://mozilla.org/MPL/2.0/.
'
Function doUnitTest as Integer
Dim n As Integer, i
Dim a(3)
n = 0
For Each i In a
n = n + 1
Next i
If n <> 4 Then
doUnitTest = "For Each over array failed"
Exit Function
End If
If TestInvalidForEachWithErrorHandler <> "13 91 14 " Then
doUnitTest = "For Each doesn't generate proper errors on bad arguments"
Exit Function
End If
doUnitTest = 1
End Function
Function TestInvalidForEachWithErrorHandler
Dim s As String
On Error Goto ErrHandler
' This For Each is given a bad iterable; it must generate first error ("Data type mismatch") for b;
For Each a In b
' Then proceed here (Resume Next from ErrHandler), and generate "Object variable not set" for c;
c.d
' Then proceed here (Resume Next from ErrHandler), and generate "Invalid parameter" at Next.
Next
TestInvalidForEachWithErrorHandler = s
Exit Function
ErrHandler:
s = s & Err & " "
Resume Next
End Function