Status: New Owner: ---- Labels: Version Type-Bug Priority-Medium OpSys-Any Dist-Any Arch-Any Desktop-Any GUI-Any
New issue 78 by emil.len...@gmail.com: Illegal optimization / May a method's return value type in a derived class be different from the base class? http://code.google.com/p/gambas/issues/detail?id=78 1) Describe the problem. The first time the interpreter runs an instruction, it checks what value types of the operand(s) are, and saves that. That can be a problem if the value types are not the same the next time the code runs. For example, every time the + operator in the code runs, it saves what value types the operands were at the first time, and assumes they are the same next time. That will produce false results if the value types are not the same the next time. 2) GIVE THE FOLLOWING INFORMATIONS (if they are appropriate): Version: TRUNK Revision: r4007 Operating system: Linux Distribution: Gentoo Architecture: x86_64 3) Provide a little project that reproduces the bug or the crash. Class1: Public Function F() As Integer Return 1 End Class2: (Derived from Class1) Inherits Class1 Public Function F() As String Return "2" End Code: Dim a As Class1 Dim i As Integer For i = 1 To 2 If i = 1 Then a = New Class1 Else If i = 2 Then a = New Class2 End If Print a.F() + i 'Will print the address in memory for "2" + i the second time Next 5) Explain clearly how to reproduce the bug or the crash. Compile (will currently not warn at all) and run the code example. As far as I know, there are three ways fixing this bug: 1. Remove the optimization. 2. Somehow convert the return value to a Variant if it recognises that it may be several return value types. 3. Do not allow an instruction to return different return types, like when overriding methods with a different return type. ------------------------------------------------------------------------------ Get a FREE DOWNLOAD! and learn more about uberSVN rich system, user administration capabilities and model configuration. Take the hassle out of deploying and managing Subversion and the tools developers use with it. http://p.sf.net/sfu/wandisco-dev2dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user