dotnet/roslyn
在 GitHub 查看ref local gives bad error when inited with ternary initializer
Open
#22,048 创建于 2017年9月11日
Area-CompilersConcept-Diagnostic ClarityFeature - Readonly ReferencesLanguage-C#Testhelp wanted
描述
Version Used: 2.3.1.61919 (57c81319) - on OSX with mono 5.4.0.135
Steps to Reproduce:
Compile this:
using System;
class Driver {
static int X;
static void Main () {
ref int x = X == 0 ? ref X : ref X;
}
}
Expected Behavior:
It should either compile or give a clear error message that what I'm doing is wrong
Actual Behavior:
Microsoft (R) Visual C# Compiler version 2.3.1.61919 (57c81319)
Copyright (C) Microsoft Corporation. All rights reserved.
ref2.cs(6,24): error CS1525: Invalid expression term 'ref'
ref2.cs(6,24): error CS1003: Syntax error, ':' expected
ref2.cs(6,24): error CS1002: ; expected
ref2.cs(6,30): error CS1001: Identifier expected
ref2.cs(6,30): error CS1002: ; expected
ref2.cs(6,30): error CS1513: } expected
ref2.cs(6,37): error CS1001: Identifier expected
I tried all combinations of adding/removing ref and parens and nothing worked. The only one that gave me something good was ref int x = ref (X == 0 ? X : X); with: error CS1510: A ref or out value must be an assignable variable