internal fields appear in public header/struct
Submitted by Simon McVittie
Link to original bug (#697777)
Description
Until recently, libfolks-telepathy had this:
public class Tpf.PersonaStore : Folks.PersonaStore
{
...
internal SmallSet`<string>` _supported_fields;
internal Set`<string>` _supported_fields_ro;
...
}
When compiled without using --internal-vapi or --internal-header, this results in the C struct in the public header looking like this:
struct _TpfPersonaStore {
FolksPersonaStore parent_instance;
TpfPersonaStorePrivate * priv;
FolksSmallSet* _supported_fields;
GeeSet* _supported_fields_ro;
};
and the header from the .vapi for FolksSmallSet being #include'd.
Unfortunately, FolksSmallSet is declared in a header that isn't installed (it's a private C implementation of Gee.Set optimized for small or empty sets), so this broke the build of dependent projects.
Ideally, adding "internal Foo" to a class shouldn't result in changes to the public header (although I can't really see a way to to achieve that).
Version: 0.18.x
Edited by Michael Gratton