Fix namespace conflict if part of it shared by the system namespace.
This commit is contained in:
parent
9ab0e4eb25
commit
180bf22b0b
|
@ -10,12 +10,12 @@ namespace MapTo.Sources
|
||||||
using var builder = new SourceBuilder()
|
using var builder = new SourceBuilder()
|
||||||
.WriteLine(GeneratedFilesHeader)
|
.WriteLine(GeneratedFilesHeader)
|
||||||
.WriteNullableContextOptionIf(model.Options.SupportNullableReferenceTypes)
|
.WriteNullableContextOptionIf(model.Options.SupportNullableReferenceTypes)
|
||||||
|
.WriteUsings(model.Usings)
|
||||||
|
.WriteLine()
|
||||||
|
|
||||||
// Namespace declaration
|
// Namespace declaration
|
||||||
.WriteLine($"namespace {model.Namespace}")
|
.WriteLine($"namespace {model.Namespace}")
|
||||||
.WriteOpeningBracket()
|
.WriteOpeningBracket()
|
||||||
.WriteUsings(model.Usings)
|
|
||||||
.WriteLine()
|
|
||||||
|
|
||||||
// Class declaration
|
// Class declaration
|
||||||
.WriteLine($"partial class {model.TypeIdentifierName}")
|
.WriteLine($"partial class {model.TypeIdentifierName}")
|
||||||
|
|
|
@ -11,12 +11,12 @@ namespace MapTo.Sources
|
||||||
using var builder = new SourceBuilder()
|
using var builder = new SourceBuilder()
|
||||||
.WriteLine(GeneratedFilesHeader)
|
.WriteLine(GeneratedFilesHeader)
|
||||||
.WriteNullableContextOptionIf(model.Options.SupportNullableReferenceTypes)
|
.WriteNullableContextOptionIf(model.Options.SupportNullableReferenceTypes)
|
||||||
|
.WriteUsings(model.Usings)
|
||||||
|
.WriteLine()
|
||||||
|
|
||||||
// Namespace declaration
|
// Namespace declaration
|
||||||
.WriteLine($"namespace {model.Namespace}")
|
.WriteLine($"namespace {model.Namespace}")
|
||||||
.WriteOpeningBracket()
|
.WriteOpeningBracket()
|
||||||
.WriteUsings(model.Usings)
|
|
||||||
.WriteLine()
|
|
||||||
|
|
||||||
// Class declaration
|
// Class declaration
|
||||||
.WriteLine($"partial record {model.TypeIdentifierName}")
|
.WriteLine($"partial record {model.TypeIdentifierName}")
|
||||||
|
|
|
@ -122,11 +122,11 @@ namespace Test
|
||||||
|
|
||||||
const string expectedResult = @"
|
const string expectedResult = @"
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Test
|
|
||||||
{
|
|
||||||
using MapTo;
|
using MapTo;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
namespace Test
|
||||||
|
{
|
||||||
partial class Foo
|
partial class Foo
|
||||||
{
|
{
|
||||||
public Foo(Test.Baz baz)
|
public Foo(Test.Baz baz)
|
||||||
|
@ -198,11 +198,11 @@ namespace Test
|
||||||
|
|
||||||
const string expectedResult = @"
|
const string expectedResult = @"
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Test
|
|
||||||
{
|
|
||||||
using MapTo;
|
using MapTo;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
namespace Test
|
||||||
|
{
|
||||||
partial class Foo
|
partial class Foo
|
||||||
{
|
{
|
||||||
public Foo(Test.Baz baz)
|
public Foo(Test.Baz baz)
|
||||||
|
@ -260,10 +260,11 @@ namespace Test
|
||||||
|
|
||||||
const string expectedResult = @"
|
const string expectedResult = @"
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Test
|
|
||||||
{
|
|
||||||
using MapTo;
|
using MapTo;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
namespace Test
|
||||||
|
{
|
||||||
";
|
";
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
@ -526,13 +527,13 @@ private protected ManagerViewModel(MappingContext context, Test.Data.Models.Mana
|
||||||
|
|
||||||
const string expectedResult = @"
|
const string expectedResult = @"
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
namespace Test.ViewModels
|
|
||||||
{
|
|
||||||
using MapTo;
|
using MapTo;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Test.ViewModels
|
||||||
|
{
|
||||||
partial class ManagerViewModel
|
partial class ManagerViewModel
|
||||||
{
|
{
|
||||||
public ManagerViewModel(Test.Data.Models.Manager manager)
|
public ManagerViewModel(Test.Data.Models.Manager manager)
|
||||||
|
@ -565,13 +566,13 @@ namespace Test.ViewModels
|
||||||
var sources = GetEmployeeManagerSourceText(useDifferentViewModelNamespace: true);
|
var sources = GetEmployeeManagerSourceText(useDifferentViewModelNamespace: true);
|
||||||
|
|
||||||
const string expectedResult = @"
|
const string expectedResult = @"
|
||||||
namespace Test.ViewModels2
|
|
||||||
{
|
|
||||||
using MapTo;
|
using MapTo;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Test.ViewModels2
|
||||||
|
{
|
||||||
partial class ManagerViewModel
|
partial class ManagerViewModel
|
||||||
{
|
{
|
||||||
public ManagerViewModel(Test.Data.Models.Manager manager)
|
public ManagerViewModel(Test.Data.Models.Manager manager)
|
||||||
|
|
|
@ -407,6 +407,38 @@ namespace Tests.Data.ViewModels
|
||||||
_output.WriteLine(compilation.PrintSyntaxTree());
|
_output.WriteLine(compilation.PrintSyntaxTree());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void VerifySystemNamespaceConflict()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var source = @"
|
||||||
|
namespace Test
|
||||||
|
{
|
||||||
|
public record SomeRecord(int Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Test.Models
|
||||||
|
{
|
||||||
|
using MapTo;
|
||||||
|
|
||||||
|
[MapFrom(typeof(Test.SomeRecord))]
|
||||||
|
public partial record SomeRecordModel(int Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Test.System
|
||||||
|
{
|
||||||
|
public interface IMyInterface { }
|
||||||
|
}
|
||||||
|
".Trim();
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var (compilation, diagnostics) = CSharpGenerator.GetOutputCompilation(source, analyzerConfigOptions: DefaultAnalyzerOptions, languageVersion: LanguageVersion.CSharp9);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
diagnostics.ShouldBeSuccessful();
|
||||||
|
_output.WriteLine(compilation.PrintSyntaxTree());
|
||||||
|
}
|
||||||
|
|
||||||
private static string MainSourceClass => @"
|
private static string MainSourceClass => @"
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue