ClangSharp icon indicating copy to clipboard operation
ClangSharp copied to clipboard

Struct with two or more bases will have duplicate member names

Open sotteson1 opened this issue 3 years ago • 1 comments

ClusApi.h:

#ifdef __cplusplus
typedef struct _CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT
    : public CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME
    , public CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME {
#else
typedef struct _CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT {
    CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME;
    CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME;
#endif
} CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT, *PCLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT;

Scanned output for version 14:

    [NativeTypeName("struct _CLUSTER_SHARED_VOLUME_RENAME_INPUT : CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME, CLUSTER_SHARED_VOLUME_RENAME_INPUT_NAME")]
    [NativeInheritance("CLUSTER_SHARED_VOLUME_RENAME_INPUT_NAME")]
    public partial struct CLUSTER_SHARED_VOLUME_RENAME_INPUT
    {
        public CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME Base;

        public CLUSTER_SHARED_VOLUME_RENAME_INPUT_NAME Base;
    }

Version 11 output:

    [NativeTypeName("struct _CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT : CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME, CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME")]
    [NativeInheritance("CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME")]
    public partial struct CLUSTER_SHARED_VOLUME_RENAME_GUID_INPUT
    {
        public CLUSTER_SHARED_VOLUME_RENAME_INPUT_VOLUME __AnonymousBase_clusapi_L5475_C14;

        public CLUSTER_SHARED_VOLUME_RENAME_INPUT_GUID_NAME __AnonymousBase_clusapi_L5476_C14;
    }

I tried undefing __cplusplus but then the outputted struct was empty.

sotteson1 avatar Aug 11 '22 21:08 sotteson1

And by the way, I love the idea of the fields getting stable names! I'm looking forward to that.

sotteson1 avatar Aug 12 '22 05:08 sotteson1