dotnet/roslyn

Incorrect behavior when using alias refers to namespace in using alias

Open

#1,027 建立於 2015年3月4日

在 GitHub 查看
 (17 留言) (1 反應) (0 負責人)C# (20,414 star) (4,257 fork)batch import
Area-CompilersBughelp wanted

描述

extern alias Contracts1;
extern alias Contracts2;

using alias1 = Contracts1::TestContractAssembly;
using alias2 = Contracts2::TestContractAssembly;

partial class Contract : alias1.IContract, alias2.IContract
{
    int alias1.IContract.x
    {
        get
        {
            return 1;
        }
    }
    int alias2.IContract.x
    {
        get
        {
            return 1;
        }
    }
}

Both IContract types are the same - they expose an int property "x". Roslyn incorrectly reports that IContract.x has already been implemented.

This works if you inline the using aliases.

I strongly suspect that the alias points to the merged namespace symbol, rather than to the namespace symbol contained in the assembly symbol referenced by the extern alias.

貢獻者指南

Incorrect behavior when using alias refers to namespace in using alias · dotnet/roslyn#1027 | Good First Issue