Re: [Vala] Name clashes in generated C code



Hi,

this sort of problems existed for ever in vala, another example:

// ---- cut here ----
class Test
{
        int one_method()
        {
                return 0;
        }
}

class TestOne
{
        int method()
        {
                return 1;
        }
}
// ---- cut here ----

My way of avoiding such clashes is to know how vala names are
translated to C names ;)

best regards,
AW.

Hi,

I have a simple Vala program

public struct Struct { string name; }
public enum Type { STRUCT }


It looks fine, but if you try to compile it fails with following error:


--------------------------------
$ CC=clang valac a.vala
/usr/local/google/home/anatol/sources/learning/vala/a.vala.c:22:2:
error: expected '}'
       TYPE_STRUCT
       ^
/usr/local/google/home/anatol/sources/learning/vala/a.vala.c:11:21:
note: instantiated from:
#define TYPE_STRUCT (struct_get_type ())
                   ^
/usr/local/google/home/anatol/sources/learning/vala/a.vala.c:21:15:
note: to match this '{'
typedef enum  {
             ^
/usr/local/google/home/anatol/sources/learning/vala/a.vala.c:75:38:
error: initializer element is not a compile-time
     constant
               static const GEnumValue values[] = {{TYPE_STRUCT,
"TYPE_STRUCT", "struct"}, {0, NULL, NULL}};

^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 diagnostics generated.
error: cc exited with status 256
Compilation failed: 1 error(s), 0 warning(s)
----------------------------------


The problem here a name clash in generated Vala code - TYPE_STRUCT
both generated as type of Struct

#define TYPE_STRUCT (struct_get_type ())

and as a enum value

typedef enum  {
   TYPE_STRUCT
} Type;


what is the best way to avoid such clashes? Is it possible to change
enum names to something else. I can change enum name from Type to
something else e.g. RecordType, but I would like to know if there is a
better solution.
_______________________________________________
vala-list mailing list
vala-list gnome org
http://mail.gnome.org/mailman/listinfo/vala-list


-- 
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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]