When trying to build dexter-contacts using valac-0.15.2 I get the following errors (making this the only elementary application which does not build using his vala version):
pim@chaos ~/elementary/dexter-contacts $ make
make all-recursive
make[1]: Entering directory `/home/pim/elementary/dexter-contacts'
Making all in src
make[2]: Entering directory `/home/pim/elementary/dexter-contacts/src'
CC contacts-esd-setup.o
contacts-esd-setup.c: In function 'ensure_local_addressbook':
contacts-esd-setup.c:179:5: warning: passing argument 1 of 'e_client_get_source' from incompatible pointer type
/usr/include/evolution-data-server-3.2/libedataserver/e-client.h:214:11: note: expected 'struct EClient *' but argument is of type 'struct EBookClient *'
VALAC dexter_contacts_vala.stamp
contacts-contact.vala:909.10-909.62: warning: regular expression literals are experimental
if (/https?:\/\/www.facebook.com\/profile\.php\?id=[0-9]+$/.match(uri) ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-contact.vala:910.3-910.44: warning: regular expression literals are experimental
/https?:\/\/www.facebook.com\/[a-zA-Z0-9]+$/.match(uri))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-contact.vala:913.10-913.50: warning: regular expression literals are experimental
if (/https?:\/\/twitter.com\/#!\/[a-zA-Z0-9]+$/.match(uri))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-cell-renderer-shape.vala:276.5-276.21: warning: Gtk.render_layout has been deprecated since vala-0.16. Use StyleContext.render_layout
contacts-cell-renderer-shape.vala:282.7-282.23: warning: Gtk.render_layout has been deprecated since vala-0.16. Use StyleContext.render_layout
contacts-contact-pane.vala:494.7-494.22: warning: Folks.PostalAddress.uid has been deprecated since 0.6.5. Use AbstractFieldDetails.id
contacts-contact-pane.vala:949.35-949.75: warning: GLib.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE has been deprecated since vala-0.16. Use FileAttribute.STANDARD_CONTENT_TYPE
contacts-contact-pane.vala:1163.36-1163.43: warning: Folks.NoteFieldDetails.uid has been deprecated since 0.6.5. Use AbstractFieldDetails.id
contacts-linking.vala:320.47-320.77: error: parameter type `Gee.HashSet<Contacts.PersonaAttribute>` is less accessible than method `Contacts.add_linkable_attributes`
public static void add_linkable_attributes (Gee.HashSet<PersonaAttribute> s, Persona persona) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-linking.vala:323.2-323.6: error: The name `add' does not exist in the context of `Contacts.add_linkable_attributes.s'
s.add (new PersonaAttributeLocalId (id));
^^^^^
contacts-linking.vala:330.4-330.8: error: The name `add' does not exist in the context of `Contacts.add_linkable_attributes.s'
s.add (new PersonaAttributeImAddress (proto, im));
^^^^^
contacts-linking.vala:338.4-338.8: error: The name `add' does not exist in the context of `Contacts.add_linkable_attributes.s'
s.add (new PersonaAttributeWebService (srv, web));
^^^^^
contacts-linking.vala:344.3-344.61: error: return type `Gee.Set<Contacts.PersonaAttribute>` is less accessible than method `Contacts.get_linkable_attributes`
public static Set<PersonaAttribute> get_linkable_attributes (Persona persona) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-linking.vala:357.60-357.91: error: parameter type `Gee.Set<Contacts.PersonaAttribute>` is less accessible than method `Contacts.persona_can_link_to`
public static bool persona_can_link_to (Persona persona, Set<PersonaAttribute> attributes) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-linking.vala:380.12-380.50: error: parameter type `Gee.Set<Contacts.PersonaAttribute>?` is less accessible than method `Contacts.persona_apply_attributes`
Set<PersonaAttribute>? added_attributes,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-linking.vala:381.12-381.52: error: parameter type `Gee.Set<Contacts.PersonaAttribute>?` is less accessible than method `Contacts.persona_apply_attributes`
Set<PersonaAttribute>? removed_attributes) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-linking.vala:350.3-350.76: error: return type `Gee.Set<Contacts.PersonaAttribute>` is less accessible than method `Contacts.get_linkable_attributes_for_individual`
public static Set<PersonaAttribute> get_linkable_attributes_for_individual (Individual individual) {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
contacts-app.vala:383.3-389.4: warning: Contacts.App.options hides inherited constant `Granite.Application.options'. Use the `new' keyword if hiding was intentional
Compilation failed: 9 error(s), 9 warning(s)
make[2]: *** [dexter_contacts_vala.stamp] Error 1
make[2]: Leaving directory `/home/pim/elementary/dexter-contacts/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/pim/elementary/dexter-contacts'
make: *** [all] Error 2
pi
This all seems to boil down to the fact that PersonaAttribute is an internal datatype which is not visible to the outside world, while it is used in public (even static) methods as a parameter.
Replacing the internal keyword by public on line 24 of contacts- linking. vala seems to solve the issue. Please check wether this is the desired behaviour.