Kann Roslyn das Schlüsselwort abwarten?

8

Während der Arbeit mit der neuesten Version von Ich habe festgestellt, dass es das dynamic Schlüsselwort während der Kompilierung und der Skriptausführung nicht unterstützt, dh Sie erhalten einen Kompilierungsfehler error CS8000: This language feature ('dynamic') is not yet implemented in Roslyn. Hier ist ein kurzer Codeausschnitt:

%Vor%

Bei der Arbeit mit await keyword ...

Im Gegensatz dazu, während ich mit await keyword bei der Kompilierung oder dem Skript arbeite, habe ich normalerweise einen zufälligen Kompilierungsfehler wie den folgenden:

  • error CS1001: Identifier expected
  • error CS1003: Syntax error, ',' expected
  • error CS0246: The type or namespace name 'await' could not be found (are you missing a using directive or an assembly reference?)

Beispiel für die Skripterstellung

%Vor%

Beispiel für die Kompilierung

%Vor%

Q Fehle ich etwas oder ist es noch nicht implementiert?

Ich habe verschiedene Konfigurationen mit LanguageVersion.CSharp5 und ohne versucht. Sowohl die Google- als auch die Stackoverflow-Suche ist voller Marketing-Hype für und gekennzeichnet sind und fast nutzlos sind. Microsoft "Roslyn" CTP-Forum hat auch keine Antwort dafür.

ps: Soweit ich weiß, hat async keyword für die Lesbarkeit sowohl von Menschen als auch von Compilern eingeführt, während await alles magic

tut     
Akim 09.03.2013, 16:13
quelle

2 Antworten

9

await support ist im aktuellen Roslyn CTP nicht implementiert (obwohl es jetzt in internen Builds implementiert ist).

Der Grund für den Unterschied bei der Fehlerberichterstattung ist, dass wir zuerst den Roslyn-Parser so erstellt haben, dass er die gesamte C # 4-Sprache verarbeiten konnte, und dann semantisch die einzelnen Funktionen einzeln ausgefüllt haben. Da await ein C # 5-Feature ist, wird es vom Parser nicht einmal erkannt, und es gibt keinen Platz, um seine Verwendung zu erkennen und einen guten Fehler zu liefern.

    
Kevin Pilch 09.03.2013, 17:20
quelle
5

Eigentlich hat das Roslyn-Forum die Antwort. Wenn Sie sich die Post Bekannte Einschränkungen ansehen und Unimplemented Language Features , Sie werden feststellen, dass es "Async" unter den noch nicht implementierten Funktionen in C # enthält.

Diese Liste bezieht sich auf das CTP im Juni, aber seit Die Liste der Änderungen zwischen der Juni CTP und der Dezember CTP enthält keine Async, das heißt, sie ist einfach noch nicht implementiert.

Ich denke, der Grund für den Unterschied in der Fehlermeldung ist, dass Roslyn dynamic versteht (aber noch nicht implementiert). Auf der anderen Seite versteht es async - await nicht, so dass es generische Kompilierungsfehler gibt.

    
svick 09.03.2013 17:20
quelle

Tags und Links