public void ConcatCollidingExternAliases() { var comp = CreateCompilation( "extern alias A; extern alias B;", targetFramework: TargetFramework.Mscorlib40, references: new[] { SystemCoreRef.WithAliases(new[] { "A" }), SystemDataRef.WithAliases(new[] { "B" }), } ); var tree = comp.SyntaxTrees.Single(); var binder = comp.GetBinderFactory(tree) .GetImportsBinder((CSharpSyntaxNode)tree.GetRoot(), inUsing: false); var scratchImports = binder.GetImports(basesBeingResolved: null); var scratchExternAliases = scratchImports.ExternAliases; Assert.Equal(2, scratchExternAliases.Length); var externAlias1 = scratchExternAliases[0]; var externAlias2 = new AliasAndExternAliasDirective( AliasSymbol.CreateCustomDebugInfoAlias( scratchExternAliases[1].Alias.Target, externAlias1.ExternAliasDirective.Identifier, binder ), externAlias1.ExternAliasDirective ); var imports1 = Imports.FromCustomDebugInfo( comp, ImmutableDictionary <string, AliasAndUsingDirective> .Empty, ImmutableArray <NamespaceOrTypeAndUsingDirective> .Empty, ImmutableArray.Create(externAlias1) ); var imports2 = Imports.FromCustomDebugInfo( comp, ImmutableDictionary <string, AliasAndUsingDirective> .Empty, ImmutableArray <NamespaceOrTypeAndUsingDirective> .Empty, ImmutableArray.Create(externAlias2) ); var concat1 = imports1.Concat(imports2); Assert.Equal(externAlias2.Alias.Target, concat1.ExternAliases.Single().Alias.Target); var concat2 = imports2.Concat(imports1); Assert.Equal(externAlias1.Alias.Target, concat2.ExternAliases.Single().Alias.Target); }