VB.NET compiler does not find type error at compiletime

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Here the facts as code sample:

Public Class Class1
Sub ABC(ByVal item As IUnit)
End Sub
End Class

Public Interface IUnit ' or any other Interface
ReadOnly Property Heureka() As Activator
ReadOnly Property Reference() As String
ReadOnly Property Name() As String
End Interface

This client is calling ABC the wrong way!
Public Class Class2
Sub test()
Dim C1 As New Class1
C1.ABC("aberhallo")
End Sub
End Class

the .NET 2.0 Compiler does not see this type error at compiletime but at
runtime!
We tried sharpening the compiler with all potential options, but no success.

(this kind of bug is produced many times by the VB6 to .NET migration tool -
which is a serious issue if you have about 700 classes to check ...)

Does someone know what went wrong here - or even better to get around this?
 
..NET 2003, fw 1.1 (sp1, option strict on) catches this error. I know it is a
step backwards, but maybe you could use .NET 2003 as a migration tool.
 
Here the facts as code sample:

Public Class Class1
Sub ABC(ByVal item As IUnit)
End Sub
End Class

Public Interface IUnit ' or any other Interface
ReadOnly Property Heureka() As Activator
ReadOnly Property Reference() As String
ReadOnly Property Name() As String
End Interface

This client is calling ABC the wrong way!
Public Class Class2
Sub test()
Dim C1 As New Class1
C1.ABC("aberhallo")
End Sub
End Class

the .NET 2.0 Compiler does not see this type error at compiletime but at
runtime!
We tried sharpening the compiler with all potential options, but no success.

(this kind of bug is produced many times by the VB6 to .NET migration tool -
which is a serious issue if you have about 700 classes to check ...)

Does someone know what went wrong here - or even better to get around this?

Do you have option strict turned on? My guess is no.
 
Hi Tom,

you are right - i did not set the Option Strict ON for this simple example
code.

BUT: the Project itselft was worked on with Option Strict ON set at project
level and there is no message! (i just rechecked)

The reason for not finding the bugs is a automatically (by the converter)
placed statement on each code file of:
Option Strict Off

which overrides the central settings of Option Strict ON.

So thanks - i could go and "hunting bugs"
 
This is just one more example of why you are actually better off using
copy/paste to convert VB 6 code. More VB 6 code will actually convert
better without the project converter.

Mike.


PitG said:
Hi Tom,

you are right - i did not set the Option Strict ON for this simple example
code.

BUT: the Project itselft was worked on with Option Strict ON set at
project
level and there is no message! (i just rechecked)

The reason for not finding the bugs is a automatically (by the converter)
placed statement on each code file of:
Option Strict Off

which overrides the central settings of Option Strict ON.

So thanks - i could go and "hunting bugs"
 
Back
Top