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