[generator] better support for package-private interfaces #471
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Java allows public classes/interfaces to inherit/implements from "package-private" interfaces, in
which case the
public&protectedmembers of the "package-private"interface are visible within the public class:
The problem is that
generatordidn't properly support this construct,and skips binding of "package-private" types, resulting in generated
C# code such as:
Support this construct by updating
generatorto "copy" the membersfrom the "package-private" interface into the declaring interface:
This allows the generated code to compile without metadata fixup.
Specifics in implementing this:
InterfaceGen.FixupAccessModifiers()to fix the private interfacesFixupAccessModifiers()in the "validation" stepFixupAccessModifiers(), lookup the base interface of the currenttype and check if it is non-
public.interface's base type
type if it does not exist