Skip to content

Bindings generator does not handle multiple derived types #68

Open
@philipcass

Description

@philipcass

I've noticed when you have several classes based of the same abstract class the codegen can't handle it even thought the syntax looks like it should e.g.

		{
			"Name": "MyNamespace.AbstractShape",
			"BaseTypes": [
				{
					"BaseName": "MyNamespace.BaseSquare",
					"DerivedName": "MyNamespace.Square"
				},
				{
					"BaseName": "MyNamespace.BaseCircle",
					"DerivedName": "MyNamespace.Circle"
				}
			]
		}

Doesn't work

Activity

jacksondunstan

jacksondunstan commented on Feb 22, 2021

@jacksondunstan
Owner

@philipcass Can you please elaborate on what doesn't work?

philipcass

philipcass commented on Feb 22, 2021

@philipcass
ContributorAuthor

@jacksondunstan When generating c sharp delegates for each instance of the derived types the code-gen redeclares the common abstract methods multiple times e.g. if GetRadius was declared in AbstractShape it'd create this twice:

		[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
		public delegate double MyNamespaceAbstractShapeGetRadiusDelegateType(int thisHandle);
		public static MyNamespaceAbstractShapeRadiusDelegateType MyNamespaceAbstractShapeGetRadiusDelegateType;
jacksondunstan

jacksondunstan commented on Feb 27, 2021

@jacksondunstan
Owner

@philipcass Thanks for clarifying. It looks like that code should only be generated for the first derived type, not all of them. I'm not able to address the issue right away, but please do feel free to submit a PR with a fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Bindings generator does not handle multiple derived types · Issue #68 · jacksondunstan/UnityNativeScripting