>On Sun, Dec 05, 2010 at 17:32:17 +0100, Aleksander Wabik wrote:
>> I'm having class Foo, that is _NOT_ inheriting Object, but it's still
>> a typed class, and it's implementing interface IFoo. This is (or used to
>> be) legal.
>
>No, it is not and never was legal. Interfaces depend on runtime support
>provided by GObject and therefore only classes derived from GLib.Object may
>implement interfaces.
>

Hi,

I think I've found the difference that causes this bug to reproduce or
not. In my whole program where it's not reproductible, I have never
declared interface instance as a local object (IFoo sth in the
function body); I create objects of class Foo, and assign them to
references of type Foo.

The interface is used in functions: function take argument of
interface type IFoo. It works! But if I try to create a reference of
interface type IFoo, error occurs. The demonstration code:

//-------- test.vala --------
namespace Test
{
        public interface IFoo
        {
                public abstract bool run();
        }
        
        public class Foo : IFoo
        {
                public virtual bool run()
                {
                        return true;
                }
        }
        
        public static bool test(IFoo ifoo)
        {
                return ifoo.run();
        }
        
        public static void main()
        {
                //IFoo ifoo = new Foo();
                Foo ifoo = new Foo();
                test(ifoo);
                return;
        }
}
//------ end test.vala ------

This code will compile fine. But if I uncomment the commented line, and
comment the next one, it SHOULD compile fine too, but it fails with the
same error:

test.vala:23.3-23.6: error: missing class prerequisite for interface
`Test.IFoo', add GLib.Object to interface declaration if unsure 
        IFoo ifoo = new Foo(); 
        ^^^^

So... it is a bug, right?

best regards,
AW.


-- 
Mój klucz publiczny o identyfikatorze 1024D/E12C5A4C znajduje się na
serwerze hkp://keys.gnupg.net

My public key with signature 1024D/E12C5A4C is on the server
hkp://keys.gnupg.net

Attachment: signature.asc
Description: PGP signature

_______________________________________________
vala-list mailing list
vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to