HomePhabricator

csharp: Skip non-public members from interfaces

Authored by lauromoura on Sep 10 2019, 3:30 PM.

Description

csharp: Skip non-public members from interfaces

Summary:
Eolian allows non-public members in interfaces and mixins (usually
@protected). As both kinds are converted to C# interfaces, this
causes problem as non-public members are forbidden in C# interfaces.

This commit changes eolian_mono by removing those members from the C#
interfaces. If a generated class implements the interface, the method is
generated as if it were a protected member of the class directly.

For mixed properties like Efl.Io.Reader.CanRead { get; set @protected; },
the interface has only the public getter and the the implementing class has both
the public getter and the protected setter.

With this, C# devs won't be able to directly implement protected Eo
methods from interfaces. (But this really does not make sense from the
C# point of view).

ref T7494

Reviewers: segfaultxavi, felipealmeida, YOhoho

Reviewed By: YOhoho

Subscribers: cedric, brunobelo, Jaehyun_Cho, reviewers, woohyun, committers

Tags: efl

Maniphest Tasks: T7494

Differential Revision: https://phab.enlightenment.org/D9800