diff --git a/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin b/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin index b6ecdf8..ae47486 100644 Binary files a/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin and b/capnpc-csharp.tests/Resources/UnitTest1.capnp.bin differ diff --git a/capnpc-csharp.tests/UnitTest1.capnp b/capnpc-csharp.tests/UnitTest1.capnp index 125190e..f638014 100644 --- a/capnpc-csharp.tests/UnitTest1.capnp +++ b/capnpc-csharp.tests/UnitTest1.capnp @@ -2,4 +2,8 @@ enum Enumerant { byte @0; -} \ No newline at end of file +} + +struct Foo { + foo @0: UInt8; +} diff --git a/capnpc-csharp.tests/UnitTests.cs b/capnpc-csharp.tests/UnitTests.cs index 0d10a48..2d4ea6b 100644 --- a/capnpc-csharp.tests/UnitTests.cs +++ b/capnpc-csharp.tests/UnitTests.cs @@ -18,6 +18,22 @@ namespace CapnpC Assert.AreEqual("@byte", GetTypeDef(0xc8461867c409f5d4, model).Enumerants[0].Literal); } + [TestMethod] + public void Test01NestedClash() + { + var model = Load(Resources.UnitTest1_capnp); + var structFoo = GetTypeDef(0x93db6ba5509bac24, model); + var codeGen = NewGeneratorFor(model); + codeGen.Transform(model.FilesToGenerate.First()); + var names = codeGen.GetNames(); + var fieldName = names.GetCodeIdentifier(structFoo.Fields[0]).ToString(); + Assert.AreEqual("Foo", structFoo.Name); + Assert.AreNotEqual(structFoo.Name, fieldName); + } + + static Generator.CodeGenerator NewGeneratorFor(Model.SchemaModel model) + => new Generator.CodeGenerator(model, new Generator.GeneratorOptions()); + static Model.TypeDefinition GetTypeDef(ulong id, Model.SchemaModel model) { foreach (var defs in model.FilesToGenerate.Select(f => f.NestedTypes)) diff --git a/capnpc-csharp/Generator/CodeGenerator.cs b/capnpc-csharp/Generator/CodeGenerator.cs index 785a50f..d066655 100644 --- a/capnpc-csharp/Generator/CodeGenerator.cs +++ b/capnpc-csharp/Generator/CodeGenerator.cs @@ -33,6 +33,8 @@ _interfaceGen = new InterfaceSnippetGen(_names); } + internal GenNames GetNames() => _names; + IEnumerable TransformEnum(TypeDefinition def) { yield return _commonGen.MakeEnum(def); @@ -143,7 +145,7 @@ } } - string Transform(GenFile file) + internal string Transform(GenFile file) { if (file.Namespace != null) {