CppAst.CodeGen icon indicating copy to clipboard operation
CppAst.CodeGen copied to clipboard

Bug: Class/Struct in a namespace is converted to member in first class scope it is used

Open CraigHutchinson opened this issue 1 year ago • 0 comments

Reproducer

    namespace ns {
        struct Foo { unsigned short _h; };
    } 
    class Bar { ns::Foo member_; };
    class Baz { ns::Foo member_; };

Issue

The struct Foo is defined as libnative.Bar.Foo instead of libnative.Foo as expected

using System;

namespace LibNative
{
    using System.Runtime.InteropServices;
    
    public static partial class libnative
    {
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public partial struct Bar
        {
            public libnative.Bar.Foo member_;
            
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
            public partial struct Foo
            {
                public ushort _h;
            }
        }
        
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public partial struct Baz
        {
            public libnative.Bar.Foo member_;
        }
    }
}

CraigHutchinson avatar Jun 07 '23 13:06 CraigHutchinson