Skip to content

Commit

Permalink
Merge pull request #25092 from dotnet/merges/master-to-master-vs-deps
Browse files Browse the repository at this point in the history
Merge master to master-vs-deps
  • Loading branch information
Shyam-Gupta authored Feb 28, 2018
2 parents ccb3bcb + bb0d4b1 commit 2d6bf4e
Show file tree
Hide file tree
Showing 58 changed files with 486 additions and 1,397 deletions.
23 changes: 22 additions & 1 deletion docs/compilers/CSharp/Compiler Breaking Changes - post VS2017.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,25 @@ Example: `Func<int> f = default(TypedReference).GetHashCode; // new error CS0123
```
This is changed in 15.6 to now produce an error that the variable is not definitely assigned.

- Visual Studio 2017 version 15.7: https://github.com/dotnet/roslyn/issues/19792 C# compiler will now reject [IsReadOnly] symbols that should have an [InAttribute] modreq, but don't.
- Visual Studio 2017 version 15.7: https://github.com/dotnet/roslyn/issues/19792 C# compiler will now reject [IsReadOnly] symbols that should have an [InAttribute] modreq, but don't.
- https://github.com/dotnet/roslyn/issues/24806 In C# 7.2 and previous versions, it could be possible to observe cases when an RValue expression is reduced to a variable that can be passed by reference in the process of compiling.
For example `(x + 0)` becomes `x`. If such change happens in a context that allows both RValues and passing via direct reference (receiver of a struct call or an `in` parameter), then it could change the meaning of the code.
C# 7.3 will preserve the behavior of the rvalue where the value must always be passed via a copy.
Example:
```C#
static int x = 123;
static string Test1()
{
// cannot replace value of "x + 0" with a reference to "x"
// since that would make the method see the mutations in M1();
return (x + 0).ToString(M1());
}

static string M1()
{
x = 42;
return "";
}
```

Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,8 @@ internal static NamedTypeSymbol SubstituteNoPiaLocalType(

// Let's use a trick. To make sure the kind is the same, make sure
// base type is the same.
if (!ReferenceEquals(baseType, candidate.BaseTypeNoUseSiteDiagnostics))
SpecialType baseSpecialType = (candidate.BaseTypeNoUseSiteDiagnostics?.SpecialType).GetValueOrDefault();
if (baseSpecialType == SpecialType.None || baseSpecialType != (baseType?.SpecialType).GetValueOrDefault())
{
continue;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -4392,7 +4392,7 @@ Blok catch() po bloku catch (System.Exception e) může zachytit výjimky, kter
</trans-unit>
<trans-unit id="ERR_AnonDelegateCantUse">
<source>Cannot use ref, out, or in parameter '{0}' inside an anonymous method, lambda expression, or query expression</source>
<target state="needs-review-translation">Parametr ref nebo out {0} uvnitř anonymní metody, lambda výrazu nebo výrazu dotazu</target>
<target state="translated">Nejde použít parametr ref, out nebo in {0} uvnitř anonymní metody, lambda výrazu nebo výrazu dotazu.</target>
<note />
</trans-unit>
<trans-unit id="ERR_IllegalInnerUnsafe">
Expand Down Expand Up @@ -8597,7 +8597,7 @@ Pokud chcete odstranit toto varování, můžete místo toho použít /reference
</trans-unit>
<trans-unit id="ERR_InterfaceImplementedImplicitlyByVariadic">
<source>'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</source>
<target state="new">'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</target>
<target state="translated">{0} nemůže implementovat člen rozhraní {1} v typu {2}, protože má parametr __arglist.</target>
<note />
</trans-unit>
<trans-unit id="ERR_InvalidHashAlgorithmName">
Expand Down
4 changes: 2 additions & 2 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -4392,7 +4392,7 @@ Ein catch()-Block nach einem catch (System.Exception e)-Block kann nicht-CLS-Aus
</trans-unit>
<trans-unit id="ERR_AnonDelegateCantUse">
<source>Cannot use ref, out, or in parameter '{0}' inside an anonymous method, lambda expression, or query expression</source>
<target state="needs-review-translation">Der ref- oder out-Parameter "{0}" kann nicht in einer anonymen Methode, einem Lambdaausdruck oder einem Abfrageausdruck verwendet werden.</target>
<target state="translated">Der ref-, out-, oder in-Parameter "{0}" kann nicht in einer anonymen Methode, einem Lambdaausdruck oder einem Abfrageausdruck verwendet werden.</target>
<note />
</trans-unit>
<trans-unit id="ERR_IllegalInnerUnsafe">
Expand Down Expand Up @@ -8597,7 +8597,7 @@ Um die Warnung zu beheben, können Sie stattdessen /reference verwenden (Einbett
</trans-unit>
<trans-unit id="ERR_InterfaceImplementedImplicitlyByVariadic">
<source>'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</source>
<target state="new">'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</target>
<target state="translated">"{0}" kann das Schnittstellenelement "{1}" in Typ "{2}" nicht implementieren, weil es einen __arglist-Parameter umfasst.</target>
<note />
</trans-unit>
<trans-unit id="ERR_InvalidHashAlgorithmName">
Expand Down
4 changes: 2 additions & 2 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -4392,7 +4392,7 @@ Un bloque catch() después de un bloque catch (System.Exception e) puede abarcar
</trans-unit>
<trans-unit id="ERR_AnonDelegateCantUse">
<source>Cannot use ref, out, or in parameter '{0}' inside an anonymous method, lambda expression, or query expression</source>
<target state="needs-review-translation">No se pueden usar los parámetros ref ni out '{0}' dentro de un método anónimo, una expresión lambda ni una expresión de consulta</target>
<target state="translated">No se puede usar el parámetro ref, out o in “{0} dentro de un método anónimo, una expresión lambda o una expresión de consulta</target>
<note />
</trans-unit>
<trans-unit id="ERR_IllegalInnerUnsafe">
Expand Down Expand Up @@ -8597,7 +8597,7 @@ Para eliminar la advertencia puede usar /reference (establezca la propiedad Embe
</trans-unit>
<trans-unit id="ERR_InterfaceImplementedImplicitlyByVariadic">
<source>'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</source>
<target state="new">'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</target>
<target state="translated">“{0}” no puede implementar el miembro de interfaz “{1}” en el tipo “{2}” porque tiene un parámetro __arglist</target>
<note />
</trans-unit>
<trans-unit id="ERR_InvalidHashAlgorithmName">
Expand Down
4 changes: 2 additions & 2 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -4392,7 +4392,7 @@ Un bloc catch() après un bloc catch (System.Exception e) peut intercepter des e
</trans-unit>
<trans-unit id="ERR_AnonDelegateCantUse">
<source>Cannot use ref, out, or in parameter '{0}' inside an anonymous method, lambda expression, or query expression</source>
<target state="needs-review-translation">Impossible d'utiliser le paramètre ref ou out '{0}' dans une méthode anonyme, une expression lambda ou une expression de requête</target>
<target state="translated">Impossible d'utiliser le paramètre ref, out ou in '{0}' dans une méthode anonyme, une expression lambda ou une expression de requête</target>
<note />
</trans-unit>
<trans-unit id="ERR_IllegalInnerUnsafe">
Expand Down Expand Up @@ -8597,7 +8597,7 @@ Pour supprimer l'avertissement, vous pouvez utiliser la commande /reference (dé
</trans-unit>
<trans-unit id="ERR_InterfaceImplementedImplicitlyByVariadic">
<source>'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</source>
<target state="new">'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</target>
<target state="translated">'{0}' ne peut pas implémenter le membre d'interface '{1}' dans le type '{2}', car il a un paramètre __arglist</target>
<note />
</trans-unit>
<trans-unit id="ERR_InvalidHashAlgorithmName">
Expand Down
24 changes: 12 additions & 12 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -2168,7 +2168,7 @@ Se si usa tale classe come classe di base e se la classe di derivazione definisc
</trans-unit>
<trans-unit id="WRN_ExplicitImplCollision_Title">
<source>Explicit interface implementation matches more than one interface member</source>
<target state="translated">L'implementazione dell'interfaccia esplicita corrisponde a più di un membro di interfaccia</target>
<target state="translated">L'implementazione esplicita dell'interfaccia corrisponde a più di un membro di interfaccia</target>
<note />
</trans-unit>
<trans-unit id="ERR_AbstractHasBody">
Expand Down Expand Up @@ -3373,7 +3373,7 @@ Se si usa tale classe come classe di base e se la classe di derivazione definisc
</trans-unit>
<trans-unit id="ERR_ImplicitlyTypedVariableAssignedArrayInitializer">
<source>Cannot initialize an implicitly-typed variable with an array initializer</source>
<target state="translated">Non è possibile inizializzare una variabile locale tipizzata in modo implicito con un inizializzatore di matrici</target>
<target state="translated">Non è possibile inizializzare una variabile locale tipizzata in modo implicito con un inizializzatore di matrice</target>
<note />
</trans-unit>
<trans-unit id="ERR_ImplicitlyTypedLocalCannotBeFixed">
Expand Down Expand Up @@ -3453,7 +3453,7 @@ Se si usa tale classe come classe di base e se la classe di derivazione definisc
</trans-unit>
<trans-unit id="ERR_ExpressionTreeContainsMultiDimensionalArrayInitializer">
<source>An expression tree may not contain a multidimensional array initializer</source>
<target state="translated">L'albero delle espressioni non può contenere un inizializzatore di matrici multidimensionali</target>
<target state="translated">L'albero delle espressioni non può contenere un inizializzatore di matrice multidimensionale</target>
<note />
</trans-unit>
<trans-unit id="ERR_MissingArgument">
Expand Down Expand Up @@ -4192,7 +4192,7 @@ Un blocco catch() dopo un blocco catch (System.Exception e) è in grado di rilev
</trans-unit>
<trans-unit id="ERR_MissingArraySize">
<source>Array creation must have array size or array initializer</source>
<target state="translated">Per la creazione della matrice occorre specificare la dimensione della matrice o l'inizializzatore della matrice</target>
<target state="translated">Per la creazione della matrice occorre specificare la dimensione della matrice o l'inizializzatore di matrice</target>
<note />
</trans-unit>
<trans-unit id="WRN_UnprocessedXMLComment">
Expand Down Expand Up @@ -4392,7 +4392,7 @@ Un blocco catch() dopo un blocco catch (System.Exception e) è in grado di rilev
</trans-unit>
<trans-unit id="ERR_AnonDelegateCantUse">
<source>Cannot use ref, out, or in parameter '{0}' inside an anonymous method, lambda expression, or query expression</source>
<target state="needs-review-translation">Non è possibile usare il parametro out o ref '{0}' all'interno di un metodo anonimo, un'espressione lambda o un'espressione di query</target>
<target state="translated">Non è possibile usare il parametro ref, out o in '{0}' all'interno di un metodo anonimo, un'espressione lambda o un'espressione di query</target>
<note />
</trans-unit>
<trans-unit id="ERR_IllegalInnerUnsafe">
Expand Down Expand Up @@ -4452,7 +4452,7 @@ Un blocco catch() dopo un blocco catch (System.Exception e) è in grado di rilev
</trans-unit>
<trans-unit id="ERR_BadCoClassSig">
<source>The managed coclass wrapper class signature '{0}' for interface '{1}' is not a valid class name signature</source>
<target state="translated">La firma della classe wrapper '{0}' della coclasse gestita per l'interfaccia '{1}' non è valida per il nome della classe</target>
<target state="translated">La firma '{0}' della classe wrapper della coclasse gestita per l'interfaccia '{1}' non è valida per il nome della classe</target>
<note />
</trans-unit>
<trans-unit id="ERR_MultipleIEnumOfT">
Expand Down Expand Up @@ -4767,7 +4767,7 @@ Un blocco catch() dopo un blocco catch (System.Exception e) è in grado di rilev
</trans-unit>
<trans-unit id="WRN_CallOnNonAgileField_Description">
<source>This warning occurs when you try to call a method, property, or indexer on a member of a class that derives from MarshalByRefObject, and the member is a value type. Objects that inherit from MarshalByRefObject are typically intended to be marshaled by reference across an application domain. If any code ever attempts to directly access the value-type member of such an object across an application domain, a runtime exception will occur. To resolve the warning, first copy the member into a local variable and call the method on that variable.</source>
<target state="translated">Questo avviso viene visualizzato quando si tenta di chiamare un metodo, una proprietà o un indicizzatore su un membro di una classe derivante da MarshalByRefObject e tale membro è un tipo di valore. Degli oggetti che ereditano da MarshalByRefObject viene in genere effettuato il marshalling dal riferimento in un dominio applicazione. Qualora un codice tenti di accedere direttamente al membro di tipo di valore di tale oggetto in un dominio applicazione, si verificherà un'eccezione in fase di esecuzione. Per risolvere il problema, copiare innanzitutto il membro in una variabile locale e chiamare il metodo su tale variabile.</target>
<target state="translated">Questo avviso viene visualizzato quando si tenta di chiamare un metodo, una proprietà o un indicizzatore su un membro di una classe derivante da MarshalByRefObject e tale membro è un tipo di valore. Degli oggetti che ereditano da MarshalByRefObject viene in genere effettuato il marshalling dal riferimento in un dominio dell'applicazione. Qualora un codice tenti di accedere direttamente al membro di tipo di valore di tale oggetto in un dominio dell'applicazione, si verificherà un'eccezione in fase di esecuzione. Per risolvere il problema, copiare innanzitutto il membro in una variabile locale e chiamare il metodo su tale variabile.</target>
<note />
</trans-unit>
<trans-unit id="WRN_BadWarningNumber">
Expand Down Expand Up @@ -5082,7 +5082,7 @@ Un blocco catch() dopo un blocco catch (System.Exception e) è in grado di rilev
</trans-unit>
<trans-unit id="ERR_StaticMemberInObjectInitializer">
<source>Static field or property '{0}' cannot be assigned in an object initializer</source>
<target state="translated">Non è possibile assegnare la proprietà o il campo statico '{0}' in un inizializzatore di oggetti</target>
<target state="translated">Non è possibile assegnare la proprietà o il campo statico '{0}' in un inizializzatore di oggetto</target>
<note />
</trans-unit>
<trans-unit id="ERR_ReadonlyValueTypeInObjectInitializer">
Expand All @@ -5102,7 +5102,7 @@ Un blocco catch() dopo un blocco catch (System.Exception e) è in grado di rilev
</trans-unit>
<trans-unit id="ERR_EmptyElementInitializer">
<source>Element initializer cannot be empty</source>
<target state="translated">L'inizializzatore di elementi non può essere vuoto</target>
<target state="translated">L'inizializzatore di elemento non può essere vuoto</target>
<note />
</trans-unit>
<trans-unit id="ERR_InitializerAddHasWrongSignature">
Expand Down Expand Up @@ -5545,7 +5545,7 @@ Impostare il compilatore in modo tale da distinguere i metodi, ad esempio assegn
</trans-unit>
<trans-unit id="WRN_CLS_OverloadUnnamed_Description">
<source>This error occurs if you have an overloaded method that takes a jagged array and the only difference between the method signatures is the element type of the array. To avoid this error, consider using a rectangular array rather than a jagged array; use an additional parameter to disambiguate the function call; rename one or more of the overloaded methods; or, if CLS Compliance is not needed, remove the CLSCompliantAttribute attribute.</source>
<target state="translated">Questo errore si verifica quando si usa un metodo di overload che accetta una matrice di matrici e le firme del metodo si differenziano solo per il tipo di elemento della matrice. Per evitare questo errore, provare a usare una matrice rettangolare invece di una matrice di matrici, aggiungere un parametro in modo da evitare ambiguità nella chiamata della funzione oppure ridenominare uno o più metodi di overload. In alternativa, se la compatibilità con CLS non è necessaria, rimuovere l'attributo CLSCompliantAttribute.</target>
<target state="translated">Questo errore si verifica quando si usa un metodo di overload che accetta una matrice di matrici e le firme del metodo si differenziano solo per il tipo di elemento della matrice. Per evitare questo errore, provare a usare una matrice rettangolare invece di una matrice di matrici, aggiungere un parametro in modo da evitare ambiguità nella chiamata della funzione oppure rinominare uno o più metodi di overload. In alternativa, se la compatibilità con CLS non è necessaria, rimuovere l'attributo CLSCompliantAttribute.</target>
<note />
</trans-unit>
<trans-unit id="WRN_CLS_BadIdentifier">
Expand Down Expand Up @@ -8297,7 +8297,7 @@ Per rimuovere l'avviso, è invece possibile usare /reference (impostare la propr
</trans-unit>
<trans-unit id="ERR_ExpressionVariableInQueryClause">
<source>Out variable and pattern variable declarations are not allowed within a query clause.</source>
<target state="translated">Le dichiarazioni di variabile out e pattern non sono consentite all'interno di una clausola di query.</target>
<target state="translated">Le dichiarazioni di variabile out e pattern non sono consentite all'interno di una clausola query.</target>
<note />
</trans-unit>
<trans-unit id="ERR_SemiOrLBraceOrArrowExpected">
Expand Down Expand Up @@ -8597,7 +8597,7 @@ Per rimuovere l'avviso, è invece possibile usare /reference (impostare la propr
</trans-unit>
<trans-unit id="ERR_InterfaceImplementedImplicitlyByVariadic">
<source>'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</source>
<target state="new">'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</target>
<target state="translated">'{0}' non può implementare il membro di interfaccia '{1}' nel tipo '{2}' perché contiene un parametro __arglist</target>
<note />
</trans-unit>
<trans-unit id="ERR_InvalidHashAlgorithmName">
Expand Down
4 changes: 2 additions & 2 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -4392,7 +4392,7 @@ AssemblyInfo.cs ファイルで RuntimeCompatibilityAttribute が false に設
</trans-unit>
<trans-unit id="ERR_AnonDelegateCantUse">
<source>Cannot use ref, out, or in parameter '{0}' inside an anonymous method, lambda expression, or query expression</source>
<target state="needs-review-translation">ref または out パラメーター '{0}' は、匿名メソッド、ラムダ式、またはクエリ式の内部では使用できません。</target>
<target state="translated">refout、in パラメーター '{0}' は、匿名メソッド、ラムダ式、クエリ式の内部では使用できません</target>
<note />
</trans-unit>
<trans-unit id="ERR_IllegalInnerUnsafe">
Expand Down Expand Up @@ -8597,7 +8597,7 @@ To remove the warning, you can use /reference instead (set the Embed Interop Typ
</trans-unit>
<trans-unit id="ERR_InterfaceImplementedImplicitlyByVariadic">
<source>'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</source>
<target state="new">'{0}' cannot implement interface member '{1}' in type '{2}' because it has an __arglist parameter</target>
<target state="translated">'{0}' は、__arglist パラメーターが指定されているため、型 '{2}' のインターフェイス メンバー '{1}' を実装できません</target>
<note />
</trans-unit>
<trans-unit id="ERR_InvalidHashAlgorithmName">
Expand Down
Loading

0 comments on commit 2d6bf4e

Please sign in to comment.