@@ -377,8 +377,56 @@ public void EditorBrowsableAttributeRespectsCodeTypeReferenceOptions(CodeTypeRef
377377 generatedType . First ( ) ) ;
378378 }
379379
380+ [ Fact ]
381+ public void MixedTypeMustNotCollideWithExistingMembers ( )
382+ {
383+ const string xsd = @"<?xml version=""1.0"" encoding=""UTF-8""?>
384+ <xs:schema elementFormDefault=""qualified"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" targetNamespace=""http://local.none"" xmlns:l=""http://local.none"">
385+ <xs:element name=""document"" type=""l:elem"">
386+ </xs:element>
387+ <xs:complexType name=""elem"" mixed=""true"">
388+ <xs:attribute name=""Text"" type=""xs:string""/>
389+ </xs:complexType>
390+ </xs:schema>" ;
380391
381- [ Theory ]
392+ var generatedType = ConvertXml ( nameof ( MixedTypeMustNotCollideWithExistingMembers ) , xsd , new Generator
393+ {
394+ NamespaceProvider = new NamespaceProvider
395+ {
396+ GenerateNamespace = key => "Test"
397+ }
398+ } ) ;
399+
400+ Assert . Contains (
401+ @"public string[] Text_1 { get; set; }" ,
402+ generatedType . First ( ) ) ;
403+ }
404+
405+ [ Fact ]
406+ public void MixedTypeMustNotCollideWithContainingTypeName ( )
407+ {
408+ const string xsd = @"<?xml version=""1.0"" encoding=""UTF-8""?>
409+ <xs:schema elementFormDefault=""qualified"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" targetNamespace=""http://local.none"" xmlns:l=""http://local.none"">
410+ <xs:element name=""document"" type=""l:Text"">
411+ </xs:element>
412+ <xs:complexType name=""Text"" mixed=""true"">
413+ </xs:complexType>
414+ </xs:schema>" ;
415+
416+ var generatedType = ConvertXml ( nameof ( MixedTypeMustNotCollideWithExistingMembers ) , xsd , new Generator
417+ {
418+ NamespaceProvider = new NamespaceProvider
419+ {
420+ GenerateNamespace = key => "Test"
421+ }
422+ } ) ;
423+
424+ Assert . Contains (
425+ @"public string[] Text_1 { get; set; }" ,
426+ generatedType . First ( ) ) ;
427+ }
428+
429+ [ Theory ]
382430 [ InlineData ( @"xml/sameattributenames.xsd" , @"xml/sameattributenames_import.xsd" ) ]
383431 public void CollidingAttributeAndPropertyNamesCanBeResolved ( params string [ ] files )
384432 {
0 commit comments