From 539bd78f2a34b1ec00201c6760d5aa50684ae49a Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Mon, 6 Jun 2022 15:10:13 -0700 Subject: [PATCH 01/16] Localized file check-in by OneLocBuild Task: Build definition ID 327: Build ID 1809781 --- .../CSharp/Portable/xlf/CSharpResources.cs.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.de.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.es.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.fr.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.it.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.ja.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.ko.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.pl.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.pt-BR.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.ru.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.tr.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf | 12 ++++++------ .../CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf | 12 ++++++------ 13 files changed, 78 insertions(+), 78 deletions(-) diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf index dce3c6b332446..0cc64de500c2b 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - První operand přetěžovaného operátoru shift musí být stejného typu jako obsahující typ nebo jeho parametr typu omezený na něj a druhý operand musí být typu int. + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Ke statickému členu abstraktního rozhraní lze přistupovat pouze přes parametr obecného typu. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Strom výrazů nesmí obsahovat přístup statického člena abstraktního rozhraní. + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - Rozhraní {3} nelze použít jako parametr obecného typu {2} v obecném typu nebo metodě {0}. Rozhraní s omezením {1} nebo jeho základní rozhraní má statické abstraktní členy. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - UnmanagedCallersOnly se dá použít jen pro běžné statické neabstraktní metody nebo statické místní funkce. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Pokud se taková třída používá jako základní třída a pokud odvozující The first operand of an overloaded shift operator must have the same type as the containing type - První operand přetěžovaného operátoru shift musí být stejného typu jako obsahující typ a druhý operand musí být typu int. + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf index 0e45a9d46b803..4a3035dfd4d0b 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - Der erste Operand eines überladenen Shift-Operators muss denselben Typ wie der enthaltende Typ oder den Typparameter aufweisen, der auf ihn beschränkt ist, und der Typ des zweiten Operanden muss "int" sein. + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Auf ein statisches abstraktes Schnittstellenelement kann nur auf einen Typparameter zugegriffen werden. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Eine Ausdrucksbaumstruktur darf keinen Zugriff auf ein statisches abstraktes Schnittstellenelement enthalten + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - Die Schnittstelle „{3}“ kann nicht als Typparameter „{2}“ im generischen Typ oder in der Methode „{0}“ verwendet werden. Die Einschränkungsschnittstelle „{1}“ oder die Basisschnittstelle weist statische abstrakte Elemente auf. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - "UnmanagedCallersOnly" kann nur auf gewöhnliche statische, nicht abstrakte Methoden oder statische lokale Funktionen angewendet werden. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Wenn solch eine Klasse als Basisklasse verwendet wird und die ableitende Klasse The first operand of an overloaded shift operator must have the same type as the containing type - Der erste Operand eines überladenen Schiebeoperators muss den enthaltenden Typ aufweisen, und der zweite Operand muss eine ganze Zahl sein. + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf index 4aaa165d2d341..b4274311ace59 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - El primer operando de un operador de desplazamiento sobrecargado debe tener el mismo tipo que el tipo contenedor o su parámetro de tipo restringido, y el tipo del segundo operando debe ser int + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Solo se puede tener acceso a un miembro de interfaz abstracta estático en un parámetro de tipo. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Un árbol de (la) expresión no puede contener un acceso de miembro de interfaz abstracta estática + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - La interfaz "{3}" no se puede usar como parámetro de tipo "{2}" en el tipo o método genérico "{0}". La interfaz de restricción "{1}" o su interfaz base tiene miembros abstractos estáticos. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly' solo se puede aplicar a métodos estáticos ordinarios no abstractos o funciones locales estáticas. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Si se utiliza una clase de este tipo como clase base y si la clase derivada defi The first operand of an overloaded shift operator must have the same type as the containing type - El primer operando de un operador de desplazamiento sobrecargado debe tener el mismo tipo que el tipo contenedor, y el tipo del segundo operando debe ser int + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf index cece1cf713d80..b8d14d88d51d6 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - Le premier opérande d'un opérateur de décalage surchargé doit être du même type que le type conteneur ou son paramètre de type limité, et le type du second opérande doit être int + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Vous pouvez accéder à un membre d’interface abstrait statique uniquement sur un paramètre de type. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Une arborescence de l’expression ne peut pas contenir un accès à un membre d’interface abstraite statique + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - L’interface « {3} » ne peut pas être utilisée comme paramètre de type « {2} » dans le type ou la méthode générique « {0} ». L’interface de contrainte « {1} » ou son interface de base a des membres abstraits statiques. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly' ne peut être appliqué qu’à des méthodes statiques non abstraites ordinaires ou à des fonctions locales statiques. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Si une telle classe est utilisée en tant que classe de base et si la classe dé The first operand of an overloaded shift operator must have the same type as the containing type - Le premier opérande d'un opérateur de décalage surchargé doit être du même type que le type conteneur et le type du second opérande doit être int + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf index 8f4381a1c7f98..c234b7be510ff 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - Il primo operando di un operatore shift di overload deve essere dello stesso tipo del tipo che lo contiene o del relativo parametro di tipo vincolato ad esso, mentre il tipo del secondo operando deve essere int + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - È possibile accedere a un membro di interfaccia astratto statico solo in un parametro di tipo. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Un albero delle espressioni non può contenere un accesso del membro di interfaccia astratto statico + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - Non è possibile usare l'interfaccia '{3}' come parametro di tipo '{2}' nel metodo o nel tipo generico '{0}'. L'interfaccia di vincolo '{1}' o la relativa interfaccia di base contiene membri statici astratti. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly' può essere applicato solo a metodi non astratti statici normali o funzioni locali statiche. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Se si usa tale classe come classe base e se la classe di derivazione definisce u The first operand of an overloaded shift operator must have the same type as the containing type - Il primo operando di un operatore shift di overload deve essere dello stesso tipo del tipo che lo contiene, mentre il tipo del secondo operando deve essere int + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf index 901fcd8fd3afa..a181dd4e8a28a 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - オーバーロードされたシフト演算子の最初のオペランドは、それを含む型またはそれに制約された型パラメーターと同じ型である必要があり、2 番目のオペランドの型は int でなければなりません + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - 静的な抽象インターフェイス メンバーには、型パラメーターでのみアクセスできます。 + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - 式ツリーに静的抽象インターフェイス メンバーへのアクセス権を含めることはできません + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - インターフェイス '{3}' をジェネリック型またはメソッド '{0}' で型パラメーター '{2}' として使用することはできません。制約インターフェイス '{1}' またはその基本インターフェイスに、静的な抽象メンバーが含まれています。 + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly' は、通常の静的な非抽象的メソッドまたは静的なローカル関数にのみ適用できます。 + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ If such a class is used as a base class and if the deriving class defines a dest The first operand of an overloaded shift operator must have the same type as the containing type - オーバーロードされた shift 演算子の最初のオペランドはそれを含む型と同じ型、2 番目のオペランドの型は int でなければなりません + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf index b912f1bccf640..54541155f01c0 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - 오버로드된 Shift 연산자의 첫 번째 피연산자는 포함하는 형식 또는 제한된 형식 매개 변수와 동일한 형식이어야 하며 두 번째 피연산자의 형식은 int여야 합니다. + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - 정적 추상 인터페이스 멤버는 형식 매개 변수에서만 액세스할 수 있습니다. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - 식 트리는 정적 추상 인터페이스 멤버의 액세스를 포함할 수 없습니다. + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - 인터페이스 '{3}'은(는) 제네릭 유형 또는 메소드 '{0}'에서 유형 매개 변수 '{2}'(으)로 사용할 수 없습니다. 제약 조건 인터페이스 '{1}' 또는 기본 인터페이스에 정적 추상 멤버가 있습니다. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly'는 일반 정적 비추상 메서드 또는 정적 로컬 함수에만 적용할 수 있습니다. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5911,7 +5911,7 @@ If such a class is used as a base class and if the deriving class defines a dest The first operand of an overloaded shift operator must have the same type as the containing type - 오버로드된 시프트 연산자의 첫 번째 피연산자는 포함하는 형식과 동일한 형식이어야 하며 두 번째 피연산자는 정수 형식이어야 합니다. + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf index 615e1651fb077..e3f2b3d5770b5 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - Pierwszy operand operatora przeciążonego przesunięcia musi mieć ten sam typ co typ zawierający lub jego parametr typu ograniczony do niego, a typ drugiego operandu musi mieć wartość „int” + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Dostęp do statycznej składowej interfejsu abstrakcyjnego można uzyskać tylko w przypadku parametru typu. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Drzewo wyrażenia nie może zawierać dostępu do statycznej składowej abstrakcyjnej w interfejsie + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - Interfejsu "{3}" nie można użyć jako parametru typu "{2}" w typie ogólnym lub metodzie "{0}". Interfejs ograniczenia "{1}" lub jego interfejs podstawowy ma statyczne składowe abstrakcyjne. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - Element „UnmanagedCallersOnly” można stosować tylko do zwykłych statycznych metod nieabstrakcyjnych lub statycznych funkcji lokalnych. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Jeśli taka klasa zostanie użyta jako klasa bazowa i klasa pochodna definiuje d The first operand of an overloaded shift operator must have the same type as the containing type - Pierwszy argument operacji przeciążonego operatora przesunięcia musi mieć taki sam typ co typ zawierający, a typ drugiego argumentu operacji musi być typem int + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf index ee2f2367ba706..19cf5644530fb 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - O primeiro operando de um operador de deslocamento sobrecarregado deve ser do tipo recipiente ou o parâmetro de tipo restrito a ele, enquanto o do segundo deve ser int + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Um membro de interface abstrato estático só pode ser acessado em um parâmetro de tipo. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Uma árvore de expressão pode não conter um acesso de membro de interface abstrato estático + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - A interface '{3}' não pode ser usada como o parâmetro de tipo '{2}' no tipo ou método genérico '{0}'. A interface de restrição '{1}' ou sua interface base tem membros abstratos estáticos. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly' só pode ser aplicado a métodos estáticos não abstratos comuns ou funções locais estáticas. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Se tal classe for usada como uma classe base e se a classe derivada definir um d The first operand of an overloaded shift operator must have the same type as the containing type - O primeiro operando de um operador de deslocamento sobrecarregado deve ser do tipo recipiente, enquanto o do segundo deve ser int + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf index a87388330791f..1ea96ec119e4b 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - Тип первого операнда перегруженного оператора сдвига должен совпадать с содержащим типом или параметр его типа должен быть им ограничен, а тип второго операнда должен быть int. + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Доступ к статическому абстрактному элементу интерфейса возможен только для параметра типа. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - Дерево выражения не может содержать доступ к статическому абстрактному элементу интерфейса. + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - Невозможно использовать интерфейс "{3}" в качестве параметра типа "{2}" в универсальном типе или методе "{0}". Интерфейс ограничения "{1}" или его базовый интерфейс содержит статические абстрактные элементы. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - Атрибут UnmanagedCallersOnly может применяться только к обычным статическим неабстрактным методам или статическим локальным функциям. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ If such a class is used as a base class and if the deriving class defines a dest The first operand of an overloaded shift operator must have the same type as the containing type - Тип первого операнда переопределенного оператора сдвига должен совпадать с вмещающим типом, а тип второго операнда должен быть int. + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf index 92edf366b2405..b860de2d29765 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - Aşırı yüklenmiş kaydırma işlecinin ilk işleneni, içeren türle aynı türe veya buna kısıtlanmış tür parametresine sahip olmalıdır ve ikinci işlenenin türü int olmalıdır + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - Statik soyut arabirim üyesine yalnızca tür parametresinde erişilebilir. + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - İfade ağacı statik soyut arabirim üyesi erişimi içeremez + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - '{3}' arabirimi '{2}' tür parametresi olarak '{0}' genel türünde veya yönteminde kullanılamaz. '{1}' kısıtlama arabirimi veya onun temel arabirimi, statik soyut üyelere sahip. + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly', yalnızca normal statik soyut olmayan metotlara veya statik yerel işlevlere uygulanabilir. + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ Bu sınıf temel sınıf olarak kullanılırsa ve türetilen sınıf bir yıkıc The first operand of an overloaded shift operator must have the same type as the containing type - Tekrar yüklenen kaydırma işlecinin ilk işleneninin türü kapsayan tür ile aynı, ikinci işlenenin türü de tamsayı olmalıdır + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf index f813feca45eb8..89bc3040050a5 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - 重载移位运算符的第一个操作数的类型必须与包含类型或约束为该类型的类型参数相同,第二个操作数的类型必须是 int 类型 + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - 只能在类型参数上访问静态的抽象接口成员。 + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - 表达式树可能不包含静态抽象接口成员的访问权限 + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - 接口“{3}”不能用作泛型类型或方法“{2}”中的类型参数“{0}”。约束接口“{1}”或其基接口具有静态抽象成员。 + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - “UnmanagedCallersOnly”仅可应用于普通静态非抽象方法或静态本地函数。 + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5917,7 +5917,7 @@ If such a class is used as a base class and if the deriving class defines a dest The first operand of an overloaded shift operator must have the same type as the containing type - 重载移位运算符的第一个操作数的类型必须与包含类型相同,第二个操作数的类型必须是 int 类型 + The first operand of an overloaded shift operator must have the same type as the containing type diff --git a/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf b/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf index 52e37a047e597..2ad0a49729cf5 100644 --- a/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf +++ b/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf @@ -134,12 +134,12 @@ The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it - 多載移位運算子的第一個運算元的類型必須和包含的類型相同,或是其型別參數受限於該運算子,而第二個運算元的類型必須是 INT + The first operand of an overloaded shift operator must have the same type as the containing type or its type parameter constrained to it A static virtual or abstract interface member can be accessed only on a type parameter. - 只能在型別參數上存取靜態抽象介面成員。 + A static virtual or abstract interface member can be accessed only on a type parameter. @@ -474,7 +474,7 @@ An expression tree may not contain an access of static virtual or abstract interface member - 運算式樹狀架構不可包含靜態抽象介面成員的存取權 + An expression tree may not contain an access of static virtual or abstract interface member @@ -594,7 +594,7 @@ The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. - 無法使用介面 '{3}' 作為泛型型別或方法 '{0}' 中的型別參數 '{2}'。限制式介面 '{1}' 或其基底介面具有靜態抽象成員。 + The interface '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The constraint interface '{1}' or its base interface has static abstract or virtual members. @@ -1909,7 +1909,7 @@ 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. - 'UnmanagedCallersOnly' 僅適用於一般靜態非抽象方法或靜態區域函式。 + 'UnmanagedCallersOnly' can only be applied to ordinary static non-abstract, non-virtual methods or static local functions. UnmanagedCallersOnly is not localizable. @@ -5912,7 +5912,7 @@ If such a class is used as a base class and if the deriving class defines a dest The first operand of an overloaded shift operator must have the same type as the containing type - 多載移位 (Shift) 運算子的第一個運算元的類型必須和包含類型相同,而第二個運算元的類型必須是 int + The first operand of an overloaded shift operator must have the same type as the containing type From 1f29863b98115b9d3f898d40da3092852cc9a33f Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Mon, 6 Jun 2022 15:13:19 -0700 Subject: [PATCH 02/16] Localized file check-in by OneLocBuild Task: Build definition ID 327: Build ID 1809781 --- src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf | 4 ++-- src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf | 4 ++-- .../VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf | 4 ++-- .../VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf | 4 ++-- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf index d79bad69eb7db..09113d4d330ce 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Nejde získat přístup ke členu sdíleného abstraktního rozhraní. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} {1} nemůže implementovat rozhraní {3}, protože obsahuje sdílené abstraktní {2}. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf index c130472905343..73ebf501c72f2 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Auf einen freigegebenen abstrakten Schnittstellenmember kann nicht zugegriffen werden. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} „{1}“ kann die Schnittstelle „{3}“ nicht implementieren, da sie freigegebene abstrakte „{2}“ enthält. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf index 53d192e23a74c..7d6fae5a7291f 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - No se puede obtener acceso a un miembro de interfaz abstracta compartida. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} '{1}' no puede implementar la interfaz '{3}' porque contiene abstracto compartido '{2}'. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf index d80659dcbe299..34c24bec5d4ce 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Impossible d’accéder à un membre d’interface abstract partagé. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} ' {1} 'ne peut pas implémenter l’interface' {3} ', car il contient un abstract partagé' {2} '. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf index b897a4801bf89..6b4e6d5330be7 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Impossibile accedere a un membro di interfaccia abstract condiviso. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} '{1}' non può implementare l'interfaccia '{3}' perché contiene l'abstract condiviso '{2}'. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf index 333a89fdb4add..bda5a64f13533 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - 共有された抽象インターフェイスメンバーにアクセスできません。 + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} '{1}' には、共有された抽象 '{2}' が含まれているため、インターフェイス '{3}' を実装できません。 + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf index e9b9e3a1d4c40..b96c1a76e376d 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - 공유 추상 인터페이스 멤버에 액세스할 수 없습니다. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} '{1}'은(는) 공유 추상 '{2}'이(가) 포함되어 있으므로 '{3}' 인터페이스를 구현할 수 없습니다. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf index 9183d572e299f..2988594a92278 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Nie można uzyskać dostępu do współużytkowanego abstrakcyjnego elementu członkowskiego interfejsu. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0}„{1}” nie może zaimplementować interfejsu „{3}”, ponieważ zawiera udostępnioną abstrakcję „{2}”. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf index 8ec37b0530323..91e78efd15448 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Não é possível acessar um membro da interface abstrata compartilhada. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} '{1}' não é possível implementar a interface '{3}' porque contém um resumo compartilhado '{2}'. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf index b1030e6230aaa..999efd678a597 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Не удается получить доступ к элементу интерфейса общей аннотации. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} "{1}" не может реализовать интерфейс "{3}", потому что он содержит общую аннотацию "{2}". + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf index 74617aa20bef5..29ef70ef9a0fd 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - Paylaşılan bir soyut arabirim üyesine erişilemiyor. + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} “{1}”,”{3}'” arabirimini uygulayamıyor, çünkü paylaşılan özet “{2}” içeriyor. + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf index f68447a699f22..1606dad35e73e 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - 无法访问共享摘要接口成员。 + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0}“{1}”无法实现接口“{3}”因为其包含共享摘要“{2}”。 + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. diff --git a/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf b/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf index f05fb08ec4276..3fab663fc3fc4 100644 --- a/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf +++ b/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf @@ -9,7 +9,7 @@ A shared abstract or virtual interface member cannot be accessed. - 無法存取共用摘要介面成員。 + A shared abstract or virtual interface member cannot be accessed. @@ -69,7 +69,7 @@ {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. - {0} '{1}' 無法實作介面 '{3}' 因為其包含共用摘要 '{2}'。 + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract or virtual '{2}'. From 7419db25744ad64bad2b1936fafefc3d3478efaf Mon Sep 17 00:00:00 2001 From: dotnet bot Date: Mon, 6 Jun 2022 15:19:41 -0700 Subject: [PATCH 03/16] Localized file check-in by OneLocBuild Task: Build definition ID 327: Build ID 1809781 --- .../xlf/CSharpFeaturesResources.cs.xlf | 2 +- .../xlf/CSharpFeaturesResources.de.xlf | 2 +- .../xlf/CSharpFeaturesResources.es.xlf | 2 +- .../xlf/CSharpFeaturesResources.fr.xlf | 2 +- .../xlf/CSharpFeaturesResources.it.xlf | 2 +- .../xlf/CSharpFeaturesResources.ja.xlf | 2 +- .../xlf/CSharpFeaturesResources.ko.xlf | 2 +- .../xlf/CSharpFeaturesResources.pl.xlf | 2 +- .../xlf/CSharpFeaturesResources.pt-BR.xlf | 2 +- .../xlf/CSharpFeaturesResources.ru.xlf | 2 +- .../xlf/CSharpFeaturesResources.tr.xlf | 2 +- .../xlf/CSharpFeaturesResources.zh-Hans.xlf | 2 +- .../xlf/CSharpFeaturesResources.zh-Hant.xlf | 2 +- .../CSharp/Impl/xlf/VSPackage.cs.xlf | 115 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.de.xlf | 117 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.es.xlf | 115 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.fr.xlf | 119 +++++++++--------- .../CSharp/Impl/xlf/VSPackage.it.xlf | 115 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.ja.xlf | 117 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.ko.xlf | 115 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.pl.xlf | 119 +++++++++--------- .../CSharp/Impl/xlf/VSPackage.pt-BR.xlf | 115 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.ru.xlf | 117 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.tr.xlf | 117 ++++++++--------- .../CSharp/Impl/xlf/VSPackage.zh-Hans.xlf | 119 +++++++++--------- .../CSharp/Impl/xlf/VSPackage.zh-Hant.xlf | 115 ++++++++--------- .../Core/Def/xlf/ServicesVSResources.cs.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.de.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.es.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.fr.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.it.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.ja.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.ko.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.pl.xlf | 2 +- .../Def/xlf/ServicesVSResources.pt-BR.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.ru.xlf | 2 +- .../Core/Def/xlf/ServicesVSResources.tr.xlf | 2 +- .../Def/xlf/ServicesVSResources.zh-Hans.xlf | 2 +- .../Def/xlf/ServicesVSResources.zh-Hant.xlf | 2 +- .../VisualBasic/Impl/xlf/VSPackage.cs.xlf | 21 ++-- .../VisualBasic/Impl/xlf/VSPackage.de.xlf | 23 ++-- .../VisualBasic/Impl/xlf/VSPackage.es.xlf | 25 ++-- .../VisualBasic/Impl/xlf/VSPackage.fr.xlf | 21 ++-- .../VisualBasic/Impl/xlf/VSPackage.it.xlf | 23 ++-- .../VisualBasic/Impl/xlf/VSPackage.ja.xlf | 23 ++-- .../VisualBasic/Impl/xlf/VSPackage.ko.xlf | 21 ++-- .../VisualBasic/Impl/xlf/VSPackage.pl.xlf | 27 ++-- .../VisualBasic/Impl/xlf/VSPackage.pt-BR.xlf | 23 ++-- .../VisualBasic/Impl/xlf/VSPackage.ru.xlf | 25 ++-- .../VisualBasic/Impl/xlf/VSPackage.tr.xlf | 25 ++-- .../Impl/xlf/VSPackage.zh-Hans.xlf | 25 ++-- .../Impl/xlf/VSPackage.zh-Hant.xlf | 21 ++-- 52 files changed, 974 insertions(+), 896 deletions(-) diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.cs.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.cs.xlf index c8d18056a4fdc..aa0a769307ae9 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.cs.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.cs.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Přidat await {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.de.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.de.xlf index c73a8149745f5..a7f97eb2932d9 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.de.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.de.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + "await" hinzufügen {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.es.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.es.xlf index 5c465cf487a68..1d93a8afbd2ca 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.es.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.es.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Agregar "await" {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.fr.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.fr.xlf index c9d360a5ea75a..c65e32afb7702 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.fr.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.fr.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Ajouter 'await' {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.it.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.it.xlf index 87555e7660a2b..ca87b14dea487 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.it.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.it.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Aggiungi 'await' {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ja.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ja.xlf index a4f93c1ea1bcf..c2929b0f368f5 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ja.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ja.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + 'await' の追加 {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ko.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ko.xlf index df2d82a06750b..ec47758189d95 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ko.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ko.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + 'await' 추가 {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pl.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pl.xlf index bb9bde014fa93..45f10bf6f558c 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pl.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pl.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Dodaj operator „await” {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pt-BR.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pt-BR.xlf index 1f808fc338950..07154b52c39b0 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pt-BR.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.pt-BR.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Adicionar 'await' {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ru.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ru.xlf index 4bd0a6e90ef2c..0bb018981d3e3 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ru.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.ru.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + Добавить "await" {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.tr.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.tr.xlf index 62774cb90841a..36ab7fe87fb7d 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.tr.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.tr.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + 'await' ekleyin {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hans.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hans.xlf index 5bdb196ca488e..66c0316305985 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hans.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hans.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + 添加 "await" {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hant.xlf b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hant.xlf index f7305f3c56e8d..cecbadd2bb8ca 100644 --- a/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hant.xlf +++ b/src/Features/CSharp/Portable/xlf/CSharpFeaturesResources.zh-Hant.xlf @@ -4,7 +4,7 @@ Add 'await' - Add 'await' + 新增 'await' {Locked="await"} "await" is a C# keyword and should not be localized. diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf index 5b4c526db4aa6..5d2549b347231 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.cs.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Podtrhnout znovu přiřazené proměnné; -Zobrazovat vložené nápovědy; -Zobrazit diagnostiku pro zavřené soubory; -Vybarvit regulární výraz; -Zvýrazňovat související komponenty pod kurzorem; -Nahlásit neplatné regulární výrazy; -Povolit úplnou analýzu řešení; -Provést analýzu funkcí editoru v externím procesu; -Povolit navigaci na dekompilované zdroje; -Pro navigaci vždy používat výchozí servery symbolů; -Direktivy using; -Při řazení direktiv using umístit systémové direktivy jako první; -Oddělovat skupiny direktiv using; -Navrhnout použití typů v sestaveních reference; -Navrhnout použití typů v balíčcích NuGet; -Zvýrazňování; -Zvýrazňovat odkazy na symbol pod kurzorem; -Zvýrazňovat související klíčová slova pod kurzorem; -Sbalení; -Po otevření souborů přejít do režimu osnovy; -Zobrazovat oddělovače řádků procedur; -Zobrazit sbalení pro konstrukty na úrovni deklarace; -Zobrazit sbalení pro konstrukty na úrovni kódu; -Zobrazit sbalení pro komentáře a oblasti pro preprocesor; -Při sbalování na definice sbalovat oblasti; -Zesvětlení; -Zesvětlit nepoužité direktivy using; -Zesvětlit nedosažitelný kód; -Vodítka pro strukturu bloku; -Zobrazit vodítka pro konstrukty na úrovni deklarace; -Zobrazit vodítka pro konstrukty na úrovni kódu; -Nápověda k editoru; -Generovat komentáře dokumentace XML pro ///; -Při psaní komentářů /* */ vkládat na začátek nových řádků hvězdičku (*); -Zobrazovat náhled pro sledování přejmenování; -Rozdělit literály řetězců u Enter; -Oznamovat neplatné zástupné symboly ve voláních string.Format; -Extrahovat metodu; -Nevkládat odkaz nebo výstup do vlastní struktury; -Implementovat rozhraní nebo abstraktní třídu; -Vlastnosti, události a metody při vkládání umístit; -s ostatními členy stejného druhu; -na konec; -Při generování vlastnosti; -preferovat vyvolávací vlastnosti; -preferovat automatické vlastnosti; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; regex; -regulární výraz; -Obarvit regulární výrazy; -Zvýraznit související komponenty pod kurzorem; -Nahlásit neplatné regulární výrazy; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -Obarvit řetězce JSON; -Nahlásit neplatné řetězce JSON; -Rozpoznat a nabízet funkce editoru pro řetězce JSON; -Používat rozšířené barvy; -Barevné schéma editoru; -Okraj dědičnosti; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf index 143ba4e534f79..a807264972260 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.de.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Neu zugewiesene Variablen unterstreichen; -Inlinehinweise anzeigen; -Diagnoseinformationen für geschlossene Dateien anzeigen; -Reguläre Ausdrücke farbig hervorheben; -Zugehörige Komponenten unter dem Cursor hervorheben; -Ungültige reguläre Ausdrücke melden; -Vollständige Lösungsanalyse aktivieren; -Editor-Funktionsanalyse in externem Prozess ausführen; -Navigation zu dekompilierten Quellen aktivieren; -Immer Standardsymbolserver für die Navigation verwenden; -Verarbeitungsanweisungen; -Systemanweisungen beim Sortieren von Verarbeitungen an erster Stelle platzieren; -Verarbeitungsrichtliniengruppen aufteilen; -Verarbeitungen für Typen in Verweisassemblys vorschlagen; -Verarbeitungen für Typen in NuGet-Paketen vorschlagen; -Hervorhebung; -Verweise auf Symbol unter Cursor hervorheben; -Verwandte Schlüsselbegriffe unter Cursor hervorheben; -Gliederung; -Gliederungsmodus beim Öffnen von Dateien starten; -Zeilentrennzeichen in Prozeduren anzeigen; -Gliederung für Konstrukte auf Deklarationsebene anzeigen; -Gliederung für Konstrukte auf Codeebene anzeigen; -Gliederung für Kommentare und Präprozessorregionen anzeigen; -Regionen beim Reduzieren auf Definitionen zuklappen; -Ausblenden; -Nicht verwendete Verarbeitungsanweisungen ausblenden; -Unerreichbaren Code ausblenden; -Führungslinien für Struktur blockieren; -Führungslinien für Konstrukte auf Deklarationsebene anzeigen; -Führungslinien für Konstrukte auf Codeebene anzeigen; -Editor-Hilfe; -XML-Dokumentationskommentare für /// generieren; -Beim Schreiben von /* */-Kommentaren * am Beginn neuer Zeilen einfügen; -Vorschau für Nachverfolgung beim Umbenennen anzeigen; -Zeichenfolgenliterale bei Eingabe teilen; -Ungültige Platzhalter in string.Format-Aufrufen melden; -Methode extrahieren; -Weder „ref“ noch „out“ in benutzerdefinierter Struktur platzieren; -Schnittstellen- oder abstrakte Klasse implementieren; -Eigenschaften, Ereignisse und Methoden beim Einfügen; -bei anderen Membern derselben Art platzieren; -am Ende platzieren; -Beim Generieren von Eigenschaften; -ausgelöste Eigenschaften bevorzugen; -automatische Eigenschaften bevorzugen; -RegEx; -regulärer Ausdruck; -reguläre Audrücke farblich hervorheben; -Verwandte Komponenten unter dem Cursor hervorheben; -Ungültige reguläre Ausdrücke melden; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -JSON-Zeichenfolgen farblich hervorheben; -Ungültige JSON-Zeichenfolgen hervorheben;Redakteurfunktionen funden und für JSON-Zeichenfolgen anbieten; -Erweiterte Farben benutzen; -Redakteur-Farbschema; -Vererbungsspielraum; -Vererbungsrand; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf index e66f073edd51a..941d0bad3de0d 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.es.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Subrayar variables reasignadas; -Mostrar sugerencias insertadas; -Mostrar diagnóstico para archivos cerrados; -Colorear expresión regular; -Resaltar componentes relacionados bajo el cursor; -Informar sobre expresiones regulares no válidas; -Habilitar análisis de la solución completa; -Realizar el análisis de características del editor en proceso externo; -Habilitar la navegación a orígenes descompilados; -Usar siempre servidores de símbolo predeterminados para la navegación; -Directivas using; -Poner directivas del sistema primero cuando se organicen instrucciones using; -Separar grupos de directivas using; -Sugerir directivas using para los tipos en los ensamblados de referencia; -Sugerir directivas using para los tipos en los paquetes NuGet; -Resaltar; -Resaltar referencias al símbolo bajo el cursor; -Resaltar palabras clave relacionadas bajo el cursor; -Esquematización; -Especificar el modo de esquematización al abrir los archivos; -Mostrar separadores de líneas de procedimientos; -Mostrar esquematización para construcciones a nivel de declaración; -Mostrar esquematización para construcciones a nivel de código; -Mostrar esquematización para regiones de preprocesador y comentarios; -Contraer regiones cuando se contraigan las definiciones; -Atenuación; -Atenuar directivas using no usadas; -Atenuar código inaccesible; -Guías de estructura de bloque; -Mostrar guías para construcciones a nivel de declaración; -Mostrar guías para construcciones a nivel de código; -Ayuda del editor; -Generar comentarios de documentación XML para ///; -Insertar * al comienzo de las nuevas líneas al escribir comentarios /* */ -Mostrar vista previa para seguimiento de cambio de nombre; -Dividir literales de cadena al presionar Entrar; -Informar sobre marcadores de posición no válidos en llamadas a string.Format; -Extraer método; -No colocar \"out\" o \"ref\" en estructura personalizada; -Implementar interfaz o clase abstracta; -Al insertar propiedades, eventos y métodos, colóquelos; -con otros miembros de la misma clase; -al final; -Al generar una propiedad; -preferir propiedades de lanzamiento; -preferir propiedades automáticas; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; regex; -expresión regular; -Colorear las expresiones regulares; -Resaltar los componentes relacionados bajo el cursor; -Informar de las expresiones regulares no válidas; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -Colorear las cadenas JSON; -Informar de las cadenas JSON no válidas; -Detectar y ofrecer funciones del editor para las cadenas JSON; -Utilizar colores mejorados; -Esquema de colores del editor; -Margen de herencia; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf index c81fb966fdaf8..69157c0b0d84f 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.fr.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Souligner les variables réaffectées ; -Afficher les indications en ligne ; -Afficher les diagnostics pour les fichiers fermés ; -Coloriser les expressions régulières ; -Mettre en évidence les composants associés sous le curseur ; -Signaler les expressions régulières invalides ; -Activer l'analyse complète de la solution ; -Effectuer l'analyse des fonctionnalités de l'éditeur dans le processus externe ; -Activer la navigation vers les sources décompilées ; -Toujours utiliser les serveurs de symboles par défaut pour la navigation ; -Utiliser les directives ; -Placer les directives système en premier lors du tri des utilisations ; -Séparer les groupes de directives d'utilisation ; -Suggérer des utilisations pour les types dans les assemblages de référence ; -Suggérer des utilisations pour les types dans les paquets NuGet ; -Mettre en évidence ; -Mettre en évidence les références au symbole sous le curseur ; -Mettre en évidence les mots-clés associés sous le curseur ; -Contournement ; -Entrer dans le mode contour lorsque les fichiers sont ouverts ; -Afficher les séparateurs de lignes de procédure ; -Afficher le contour pour les constructions au niveau de la déclaration ; -Afficher le contour pour les constructions au niveau du code ; -Afficher le contour pour les commentaires et les régions du préprocesseur ; -Réduire les régions lors de la réduction aux définitions ; -Estompage ; -Faire disparaître les utilisations inutilisées ; -Faire disparaître le code inaccessible ; -Guides de structure de bloc ; -Afficher les guides pour les constructions au niveau de la déclaration ; -Afficher les guides pour les constructions au niveau du code ; -Aide de l'éditeur ; -Générer des commentaires de documentation XML pour /// ; -Insérer * au début des nouvelles lignes lors de l'écriture de commentaires /* */ ; -Afficher l'aperçu pour le suivi des renommages ; -Diviser les littéraux de chaîne à l'entrée ; -Signaler les caractères de remplacement invalides dans la chaîne. Format calls ; -Méthode d’extraction; -Ne mettez pas de réf ou de hors sur la structure personnalisée ; - Implementez l’Interface ou classe abstraite ; - Lorsque vous insérez des propriétés, des événements et des méthodes, placez-les ; -avec d’autres membres du même type -à la fin ; -; En générant la propriété ; -préférez les propriétés de lancement ; -préférez les propriétés auto ; -regex ; -Expression régulière ; - Coloriser les expressions régulières ; - Mettre en surbrillance les composants associés sous le curseur ; - Signaler les expressions régulières invalides ; - JSON ; - Coloriser les chaînes JSON ; -Signaler les chaînes JSON invalides ; - Détecter et proposer des fonctionnalités d'éditeur pour les chaînes JSON ; -Utiliser des couleurs améliorées ; - Schéma de couleurs de l'éditeur ; -Marge d'héritage ; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; +JSON; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf index 86d067f66e711..0f9e69d08c326 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.it.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Sottolinea variabili riassegnate; -Visualizza suggerimenti inline; -Mostra diagnostica per file chiusi; -Colora espressione regolare; -Evidenzia i componenti correlati sotto il cursore; -Segnala espressioni regolari non valide; -Abilita analisi della soluzione completa; -Esegui analisi delle funzionalità dell'editor in processo esterno; -Abilita spostamento a origini decompilate; -Usa sempre i server di simboli predefiniti per lo spostamento; -Direttive using; -Inserisci prima le direttive system durante l'ordinamento delle direttive using; -Separa gruppi di direttive using; -Suggerisci le direttive using per i tipi in assembly di riferimento; -Suggerisci le direttive using per i tipi in pacchetti NuGet; -Evidenziazione; -Evidenzia riferimenti al simbolo sotto il cursore; -Evidenzia parole chiave correlate sotto il cursore; -Struttura; -Attiva la modalità struttura all'apertura del file; -Mostra separatori di riga routine; -Mostra la struttura per i costrutti a livello di dichiarazione; -Mostra la struttura per i costrutti a livello di codice; -Mostra la struttura per i commenti e le regioni del preprocessore; -Comprimi regioni durante la compressione delle definizioni; -Dissolvenza; -Applica dissolvenza a direttive using non usate; -Applica dissolvenza a codice non eseguibile; -Guide per strutture a blocchi; -Mostra le guide per i costrutti a livello di dichiarazione; -Mostra le guide per i costrutti a livello di codice; -Guida dell'editor; -Genera commenti relativi alla documentazione XML per ///; -Inserisci * all'inizio di nuove righe quando si scrivono commenti /* */; -Mostra anteprima per verifica ridenominazione; -Dividi valori letterali stringa dopo INVIO; -Segnala segnaposto non validi in chiamate string.Format; -Estrai metodo; -Non inserire out o ref in uno struct personalizzato; -Implementa interfaccia o classe astratta; -Posiziona proprietà, eventi e metodi inseriti; -con altri membri dello stesso tipo; -alla fine; -Durante la generazione della proprietà; -preferisci proprietà generate; -preferisci proprietà automatiche; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; regex; -espressione regolare; -Colora espressioni regolari; -Evidenzia componenti correlati sotto il cursore; -Segnala espressioni regolari non valide; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -Colora le stringhe JSON; -Segnala stringhe JSON non valide; -Rileva e offri funzionalità dell'editor per le stringhe JSON; -Usa colori migliorati; -Combinazione colori editor; -Margine di ereditarietà; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf index 17d12325f54ea..58ef9ada432c0 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ja.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - 再割り当てされた変数に下線を引く; -インラインのヒントを表示する; -閉じているファイルの診断結果を表示する; -正規表現をカラー化する; -カーソルの下にある関連コンポーネントを強調表示する; -無効な正規表現を報告する; -完全ソリューション解析を有効にする; -外部プロセスでエディター機能解析を実行する; -逆コンパイルされたソースへのナビゲーションを有効にする; -ナビゲーションには常に既定のシンボル サーバーを使用する; -using ディレクティブ; -using を並べ替える際に、システム ディレクティブを先頭に配置する; -using ディレクティブ グループを分離する; -参照アセンブリの型に using を提案する; -NuGet パッケージの型に using を提案する; -強調表示; -カーソルの下にあるシンボルへの参照を強調表示する; -カーソルの下にある関連キーワードを強調表示する; -アウトライン; -ファイルを開くときにアウトライン モードを入力する; -プロシージャ行の区切り記号を表示する; -宣言レベルのコンストラクトのアウトラインを表示する; -コード レベルのコンストラクトのアウトラインを表示する; -コメントとプリプロセッサ リージョンのアウトラインを表示する; -定義を折りたたむときにリージョンを折りたたむ; -フェード中; -未使用の using をフェードアウトする; -到達できないコードをフェードアウトする; -ブロック構造のガイド; -宣言レベルのコンストラクトのガイドを表示する; -コード レベルのコンストラクトのガイドを表示する; -エディターのヘルプ; -/// の XML ドキュメント コメントを生成する; -/* */ コメントを記述する際、新しい行の先頭に * を挿入する; -名前変更追跡のプレビューを表示する; -Enter で文字列リテラルを分割する; -string.Format の呼び出しで無効なプレースホルダーをレポートする; -メソッドを抽出する; -カスタム構造体に ref または out を設定しない; -インターフェイスまたは抽象クラスを実装する; -プロパティ、イベント、メソッドを挿入する際には、次の場所に挿入する; -同じ種類の他のメンバーと共に; -末尾; -プロパティの生成時; -スロー プロパティを優先する; -自動プロパティを優先する; -RegEx; -正規表現; -正規表現の色付け; -カーソルの下の関連コンポーネントの強調表示; -無効な正規表現の報告; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -JSON 文字列の色付け; -無効な JSON 文字列の報告; -JSON 文字列のエディター機能の検出と提供; -拡張された色を使用する; -エディターの配色; -継承余白; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf index 6d65b6a206f36..d8b001eea30cc 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ko.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - 다시 할당된 변수에 밑줄 긋기; -인라인 힌트 표시; -닫힌 파일에 대한 진단 표시; -정규식 색 지정; -커서 아래의 관련 구성 요소 강조 표시; -잘못된 정규식 보고; -전체 솔루션 분석 사용; -외부 프로세스에서 편집기 기능 분석 수행; -디컴파일된 원본 탐색 사용; -탐색 시 항상 기본 기호 서버 사용; -Using 지시문; -Using 정렬 시 system 지시문 먼저 배치; -Using 지시문 그룹 구분; -참조 어셈블리의 형식에 Using 제안; -NuGet 패키지의 형식에 Using 제안; -강조 표시; -커서 아래의 기호에 대한 참조 강조 표시; -커서 아래의 관련 키워드 강조 표시; -개요; -개요 모드로 파일 열기; -프로시저 줄 구분선 표시; -선언 수준 구문에 대한 개요 표시; -코드 수준 구문에 대한 개요 표시; -설명 및 전처리기 영역에 대한 개요 표시; -정의로 축소할 때 영역 축소; -페이딩; -사용하지 않는 using 페이드 아웃; -접근할 수 없는 코드 페이드 아웃; -블록 구문 가이드; -선언 수준 구문에 대한 가이드 표시; -코드 수준 구문에 대한 가이드 표시; -편집기 도움말; -///에 대해 XML 문서 주석 생성; -/* */ 주석을 작성할 때 새 줄의 시작 부분에 * 삽입; -이름 바꾸기 추적 미리 보기 표시; -<Enter> 키를 누르면 문자열 리터럴 분할; -string.Format 호출에서 잘못된 자리 표시자 보고; -메서드 추출; -사용자 지정 구조체에 ref 또는 out 추가 안 함; -인터페이스 또는 추상 클래스 구현; -속성, 이벤트 및 메서드 삽입 시 다음과 같이 배치; -같은 종류의 다른 멤버와 함께; -끝에; -속성 생성 시; -throw되는 속성 선호; -자동 속성 선호; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; regex; -정규식; -정규식 색 지정; -커서 아래의 관련 구성 요소 강조; -잘못된 정규식 보고; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -JSON 문자열 색 지정; -잘못된 JSON 문자열 보고; -JSON 문자열용 편집기 기능 탐지 및 제안; -향상된 색 사용; -편집기 색 구성표; -상속 여백; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf index 6cba9cc4bd4bc..310922e41e839 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pl.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Podkreślaj ponownie przypisane zmienne; -Wyświetlaj wskazówki w tekście; -Pokaż dane diagnostyczne dla zamkniętych plików; -Koloruj wyrażenia regularne; -Wyróżnij powiązane składniki pod kursorem; -Raportuj nieprawidłowe wyrażenia regularne; -Włącz pełną analizę rozwiązania; -Wykonaj analizę funkcji edytora w procesie zewnętrznym; -Włącz nawigowanie do dekompilowanych źródeł; -Zawsze używaj domyślnych serwerów symboli na potrzeby nawigowania -Używaj dyrektyw; -Najpierw umieść dyrektywy systemu podczas sortowania użycia; -Oddziel grupy dyrektywy użycia; -Sugeruj użycia dla typów w zestawach odwołań; -Sugeruj użycia dla typów w pakietach NuGet; -Wyróżnianie; -Wyróżnij odwołania do symbolu pod kursorem; -Wyróżnij pokrewne słowa kluczowe pod kursorem; -Konspekt; -Przejdź do trybu konspektu przy otwieraniu pliku; -Pokaż separatory wierszy procedur; -Pokaż konspekt dla konstrukcji na poziomie deklaracji; -Pokaż konspekt dla konstrukcji na poziomie kodu; -Pokaż konspekt dla regionów komentarzy i preprocesora; -Zwiń regiony podczas zwijania do definicji; -Zanikanie; -Zanikanie nieużywanych użyć; -Zanikanie nieosiągalnego kodu; -Prowadnice struktury blokowej; -Pokaż prowadnice dla konstrukcji na poziomie deklaracji; -Pokaż prowadnice dla konstrukcji na poziomie kodu; -Pomoc edytora; -Generuj komentarze dokumentacji XML dla elementów ///; -Wstaw znak * na początku nowych wierszy podczas pisania komentarzy typu /* */; -Pokaż podgląd śledzenia zmian nazw; -Dziel literały ciągów po naciśnięciu klawisza Enter; -Zgłaszaj nieprawidłowe symbole zastępcze w ciągu.Formatuj komórki; -Metoda wyodrębniania; -Nie umieszczaj parametrów ref i out w strukturze niestandardowej; -Implementuj interfejs lub klasę abstrakcyjną; -W przypadku wstawiania właściwości, zdarzeń i metod umieszczaj je razem; -z innymi składowymi tego samego rodzaju; -na końcu; -Podczas generowania właściwości; -preferuj zgłaszanie właściwości; -preferuj właściwości automatyczne; -wyrażenie regex; -wyrażenie regularne; -Koloruj wyrażenia regularne; -Wyróżniaj powiązane składniki pod kursorem; -Zgłaszaj nieprawidłowe wyrażenia regularne; -JSON, -Koloruj ciągi JSON; -Zgłaszaj nieprawidłowe ciągi JSON; -Wykrywaj i oferuj funkcje edytowania dla ciągów JSON; -Używaj rozszerzonych kolorów; -Schemat kolorów edytora; -Margines dziedziczenia; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; +JSON; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf index d915c5aedcf5f..7a235295ddab3 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.pt-BR.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Sublinhar variáveis ​​reatribuídas; -Exibir dicas embutidas; -Mostrar diagnósticos para arquivos fechados; -Colorizar expressões regulares; -Realçar componentes relacionados sob o cursor; -Relatar expressões regulares inválidas; -Habilitar análise completa da solução; -Realizar análise de recursos do editor em processo externo; -Habilitar navegação para fontes descompiladas; -Sempre use servidores de símbolos padrão para navegação; -Usando diretivas; -Coloque as diretivas do sistema primeiro ao classificar os usos; -Separe usando grupos de diretivas; -Sugerir usos para tipos em assemblies de referência; -Sugerir usos para tipos em pacotes NuGet; -Realçar; -Realçar referências ao símbolo sob o cursor; -Realçar palavras-chave relacionadas sob o cursor; -Esboço; -Entrar no modo de destaque quando os arquivos são abertos; -Mostrar separadores de linha de procedimento; -Mostrar estrutura de tópicos para construções de nível de declaração; -Mostrar contornos para construções de nível de código; -Mostrar contornos para comentários e regiões de pré-processador; -Recolher regiões ao recolher definições; -Desvanecimento; -Fade out de usos não utilizados; -Fade out de código inacessível ; -Guias de estrutura de bloco; -Mostrar guias para construções de nível de declaração; -Mostrar guias para construções de nível de código; -Ajuda do editor; -Gerar comentários de documentação XML para ///; -Inserir * no início de novas linhas ao escrever /* */ comentários; -Mostrar visualização para rastreamento de renomeação; -Dividir literais de cadeia de caracteres em Enter; -Relatar espaços reservados inválidos em chamadas string.Format; -Extrair Método; -Não colocar ref ou out em estrutura personalizada; -Implementar Interface ou Classe Abstrata; -Ao inserir propriedades, eventos e métodos, coloque-os; -com outros membros do mesmo tipo; -no final ; -Ao gerar propriedade; -prefira lançar propriedades; -prefira propriedades automáticas; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; regex; -expressão regular; -Colorizar expressões regulares; -Realçar componentes relacionados sob o cursor; -Informar expressões regulares inválidas; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -Colorizar cadeias de caracteres JSON; -Relatório inválido de cadeias de caracteres JSON; -Detectar e oferecer recursos de editor para cadeias de caracteres JSON; -Usar cores aprimoradas; -Editar Esquema de Cores; -Margem de herança; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf index 09420680087e3..08f0234b9708f 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.ru.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Подчеркивать переназначенные переменные; -Показывать встроенные подсказки; -Показывать диагностику для закрытых файлов; -Выделять регулярные выражения цветом; -Выделять родственные компоненты под курсором; -Сообщать о недопустимых регулярных выражениях; -Включить полный анализ решения; -Выполнять анализ функций редактора во внешнем процессе; -Включить переход к декомпилированным источникам; -Всегда использовать серверы символов по умолчанию для навигации; -Директивы using; -Располагать директивы system первыми при сортировке директив using; -Разделять группы директив using; -Предлагать директивы using для типов в базовых сборках; -Предлагать директивы using для типов в пакетах NuGet; -Выделение; -Выделять ссылки на символ под курсором; -Выделять связанные ключевые слова под курсором; -Структурирование; -Включать режим редактирования структуры при открытии файлов; -Показывать разделители строк процедур; -Показывать структуру для конструкций уровня объявления; -Показывать структуру для конструкций уровня кода; -Показывать структуру для комментариев и областей препроцессора; -Сворачивать области при сворачивании в определения; -Показывать бледным цветом; -Показывать неиспользуемые директивы using бледным цветом; -Показывать недостижимый код бледным цветом; -Направляющие для структуры блоков; -Показывать направляющие для конструкций уровня объявления; -Показывать направляющие для конструкций уровня кода; -Справка по редактору; -Генерировать комментарии XML-документации для ///; -Вставлять \"*\" в начале новой строки при написании комментариев типа \"/* */\"; -Показывать предварительный просмотр для отслеживания переименований; -Разделять строковые литералы при нажатии клавиши ВВОД; -Сообщать о недопустимых заполнителях в вызовах string.Format; -Извлечение метода; -Не помещать ref и out в пользовательские структуры; -Реализовать интерфейс или абстрактный класс; -При вставке свойств, методов и событий помещать их; -вместе с другими элементами того же типа; -в конец; -При создании свойства; -предпочитать свойства, создающие исключения; -предпочитать автоматические свойства; -регулярное выражение; -регулярное выражение; -Выделять регулярные выражение цветом; -Выделять связанные компоненты под курсором; -Сообщать о недопустимых регулярных выражениях; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -Выделять строки JSON цветом; -Сообщать о недопустимых строках JSON; -Находить и предлагать функции редактора для строк JSON; -Использовать расширенный набор цветов; -Цветовая схема редактора; -Поле наследования; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf index 552843bda31b3..c3c3530bbe913 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.tr.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - Yeniden atanan değişkenlerin altını çiz; -Satır içi ipuçlarını göster; -Kapatılan dosyalara ilişkin tanılamaları göster; -Normal ifadeyi renklendir; -İmlecin altındaki ilgili bileşenleri vurgula; -Geçersiz normal ifadeleri bildir; -Tam çözüm analizini etkinleştir; -Dış işlemde düzenleyici özellik analizi gerçekleştir; -Kaynak koda dönüştürülen kaynaklar için gezintiyi etkinleştir; -Gezinti için her zaman varsayılan sembol sunucularını kullan; -Using yönergeleri; -Using yönergelerini sıralarken sistem yönergelerini en başa yerleştir; -Using yönerge gruplarını ayır; -Başvuru bütünleştirilmiş kodlarında türler için using yönergeleri öner; -NuGet paketlerinde türler için using yönergeleri öner; -Vurgulama; -İmlecin altındaki sembole yönelik başvuruları vurgula; -İmlecin altındaki ilgili anahtar sözcükleri vurgula; -Ana Hat Oluşturma; -Dosyalar açılırken ana hat oluşturma moduna gir; -Yordam satır ayırıcılarını göster; -Bildirim düzeyinde yapılar için ana hattı göster; -Kod düzeyinde yapılar için ana hattı göster; -Açıklamalar ve ön işlemci bölgeleri için ana hattı göster; -Tanımlara daraltırken bölgeleri daralt; -Soluklaştırma; -Kullanılmayan using yönergelerini soluklaştır; -Erişilemeyen kodu soluklaştır; -Blok Yapısı Kılavuzları; -Bildirim düzeyinde yapılar için kılavuzları göster; -Kod düzeyinde yapılar için kılavuzları göster; -Düzenleyici Yardımı; -/// için XML belge açıklamaları oluştur; -/* */ açıklamaları yazılırken her yeni satırın başına * ekle; -Yeniden adlandırma izlemesi için önizleme göster; -Enter tuşuna basıldığında dize sabit değerlerini böl; -string.Format çağrılarındaki geçersiz yer tutucuları bildir; -Ayıklama Metodu; -Özel yapıya ref veya out koyma; -Arabirim veya Soyut Sınıfı uygula; -Özellik, olay ve metot eklerken bunları; -aynı türdeki başka üyelerle birlikte; -sona yerleştir; -Özellik oluştururken; -oluşturma özelliklerini tercih et; -otomatik özellikleri tercih et; -normal ifade; -normal ifade; -Normal ifadeleri renklendir; -İmleç altındaki ilgili bileşenleri vurgula; -Geçersiz normal ifadeleri bildir; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -JSON dizelerini renklendir; -Geçersiz JSON dizelerini bildir; -JSON dizeleri için düzenleyici özelliklerini algıla ve sun; -Gelişmiş renkleri kullan; -Düzenleyici Renk Düzeni; -Devralma Kenar Boşluğu; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf index 1c80c3d93b78a..c646a7df2430c 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hans.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - 为重新分配的变量添加下划线; -显示内联提示; -显示已关闭文件的诊断; -对正则表达式着色; -突出显示游标下的相关组件; -报告无效的正则表达式; -启用完整解决方案分析; -在外部进程中执行编辑器功能分析; -对反编译的源启用导航; -始终使用默认符号服务器进行导航; -Using 指令; -对 using 排序时将系统指令放在开头; -分离 using 指令组; -建议对引用程序集中的类型使用 using; -建议对 NuGet 包中的类型使用 using; -突出显示; -突出显示对游标下符号的引用; -突出显示游标下的相关关键字; -大纲; -在文件打开时进入大纲模式; -显示过程行分隔符; -显示声明级别构造的大纲; -显示代码级别构造的大纲; -显示注释和预处理器区域的大纲; -在折叠到定义时折叠区域; -淡出; -未使用的 using 淡出; -不可访问的代码淡出; -块结构指南; -显示声明级别构造的指南; -显示代码级别构造的指南; -编辑器帮助; -为 /// 生成 XML 文档注释; -在写入 /* */ 注释时在新行开头插入 *; -显示重命名跟踪的预览;在按 Enter 时拆分字符串字面量; -在按 Enter 时拆分字符串字面量; -报告 string.Format 调用中的无效占位符; -提取方法; -实现接口或抽象类; -不要在自定义结构上放置 ref 或 out; -插入属性、事件和方法时,放置它们; -位于末尾; -具有相同种类的其他成员; -在生成属性时; -首选引发属性; -首选自动属性; -regex; -正则表达式; -对正则表达式着色; -突出显示游标下的相关组件; -报告无效的正则表达式; -JSON; -对 JSON 字符串着色; -报告无效的 JSON 字符串; -为 JSON 字符串检测并提供编辑器功能; -使用增强颜色; -编辑器配色方案; -继承边距; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; +regex; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; +JSON; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf index 7559af5f5ce12..cb16745b0f485 100644 --- a/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf +++ b/src/VisualStudio/CSharp/Impl/xlf/VSPackage.zh-Hant.xlf @@ -94,64 +94,67 @@ Detect and offer editor features for JSON strings; Use enhanced colors; Editor Color Scheme; Inheritance Margin; - 為重新指派的變數加上底線; -顯示內嵌提示; -顯示已關閉檔案的診斷; -為規則運算式上色; -醒目提示游標下的相關元件; -回報無效的規則運算式; -啟用完整解決方案分析; -執行在外部處理序中編輯器的功能分析; -啟用瀏覽至解編譯的來源; -一律使用指示詞; -Using 指示詞; -排序Using 時,請先放置系統指示詞 ; -將Using 指示詞分開; -建議Using為參考組件 -建議Using為 NuGet 套件中的型別; -醒目提示; -醒目提示游標下的符號參考; -醒目提示游標下的符號參考; -大綱; -在檔案開啟時進入大綱模式; -顯示程序行分隔符號; - 顯示宣告層級建構的大綱; -顯示程式碼層級建構的大綱; -顯示註解與前置處理器區域的大綱; -在摺疊到定義時摺疊區域; -漸層; -淡出未使用的 Using; -淡出無法執行到的程式碼; -封鎖結構輔助線 -顯示建構宣示層級的輔助線; -顯示程式碼層級建構的輔助線; -編輯器說明; -產生 /// 的 XML 文件註解; -在撰寫 /* */ 註解時,於新行開頭插入* -顯示重新命名追蹤的預覽; -在按 Enter 鍵時分割字串常值; -回報 string.Format 呼叫中無效的預留位置; - 擷取方法; -不要在自訂結構上放置 ref 或 out; -實作介面或抽象類別;***************** -隨同其他同種類的成員; -隨同其他同種類的成員; -結尾處; -產生屬性時; -建議使用擲回屬性; -建議使用自動屬性; + Underline reassigned variables; +Display inline hints; +Show diagnostics for closed files; +Colorize regular expression; +Highlight related components under cursor; +Report invalid regular expressions; +Enable full solution analysis; +Perform editor feature analysis in external process; +Enable navigation to decompiled sources; +Always use default symbol servers for navigation; +Using directives; +Place system directives first when sorting usings; +Separate using directive groups; +Suggest usings for types in reference assemblies; +Suggest usings for types in NuGet packages; +Highlighting; +Highlight references to symbol under cursor; +Highlight related keywords under cursor; +Outlining; +Enter outlining mode when files open; +Collapse #regions on file open; +Collapse usings on file open; +Collapse metadata implementations on file open; +Show procedure line separators; +Show outlining for declaration level constructs; +Show outlining for code level constructs; +Show outlining for comments and preprocessor regions; +Collapse regions when collapsing to definitions; +Fading; +Fade out unused usings; +Fade out unreachable code; +Block Structure Guides; +Show guides for declaration level constructs; +Show guides for code level constructs; +Editor Help; +Generate XML documentation comments for ///; +Insert * at the start of new lines when writing /* */ comments; +Show preview for rename tracking; +Split string literals on Enter; +Report invalid placeholders in string.Format calls; +Extract Method; +Don't put ref or out on custom struct; +Implement Interface or Abstract Class; +When inserting properties, events and methods, place them; +with other members of the same kind; +at the end; +When generating property; +prefer throwing properties; +prefer auto properties; regex; -為規則運算式上色; -為規則運算式上色; -醒目提示游標下的元件; -回報無效的規則運算式; +regular expression; +Colorize regular expressions; +Highlight related components under cursor; +Report invalid regular expressions; JSON; -為 JSON 字串上色; -報無效的 JSON 字串; -偵測並提供 JSON 字串的編輯器功能; -使用進階色彩; -色彩配置編輯器; -繼承頁面邊界; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Use enhanced colors; +Editor Color Scheme; +Inheritance Margin; C# Advanced options page keywords diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.cs.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.cs.xlf index 3b9f665e5468a..fdf5c626d5cff 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.cs.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.cs.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Pokud chcete zobrazit a procházet jeho hodnoty, vložte platné trasování zásobníku. + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.de.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.de.xlf index 631a8e86d1d22..b3522b5a37ce7 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.de.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.de.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Fügen Sie eine gültige Stapelüberwachung ein, um ihre Werte anzuzeigen und durch sie zu navigieren. + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.es.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.es.xlf index 48272b16a2e3c..d9156b96251f4 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.es.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.es.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Pegar un seguimiento de pila válido para ver y navegar sus valores + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.fr.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.fr.xlf index d4271cb1afef1..e01f8ff722e5c 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.fr.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.fr.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Collez une trace de pile valide pour afficher et parcourir ses valeurs + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.it.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.it.xlf index ce1bdd3cdd798..b814d51df75ac 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.it.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.it.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Incolla un'analisi dello stack valida per visualizzare e spostarti tra i relativi valori + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ja.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ja.xlf index 415729e1244c8..f1ef86e596c28 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ja.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ja.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - 有効なスタック トレースを貼り付けて、値を表示して移動します + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ko.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ko.xlf index ab53b08f3c2c9..d86a38007e119 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ko.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ko.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - 유효한 스택 추적을 붙여넣어 해당 값을 보고 탐색합니다. + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pl.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pl.xlf index ce4b928cab9cc..aafc8cf192704 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pl.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pl.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Wklej prawidłowy ślad stosu, aby wyświetlić jego wartościach i nawigować po nich + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pt-BR.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pt-BR.xlf index 9af9b705a8f6c..7ecdbe0f4c070 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pt-BR.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.pt-BR.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Cole um rastreamento de pilha válido para exibir e navegar pelos valores + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ru.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ru.xlf index 32752fb593b07..bdc6f91c0c51b 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ru.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.ru.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Вставьте допустимую трассировку стека для просмотра ее значений и перехода к ним + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.tr.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.tr.xlf index ba441b8268966..48699b98bf96b 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.tr.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.tr.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - Değerlerini görüntülemek ve gezinmek için geçerli bir yığın izlemesi yapıştırın + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hans.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hans.xlf index ec5dc4c6b6ea5..bad5a06807772 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hans.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hans.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - 粘贴有效的堆栈跟踪以查看和导航其值 + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hant.xlf b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hant.xlf index f24fcff3ea782..a8b1933230138 100644 --- a/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hant.xlf +++ b/src/VisualStudio/Core/Def/xlf/ServicesVSResources.zh-Hant.xlf @@ -1034,7 +1034,7 @@ Paste a stack trace to view and navigate its values. - 貼上有效的堆疊追蹤以檢視及瀏覽其值 + Paste a stack trace to view and navigate its values. "Stack Trace" is a language term and should be kept the same. diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.cs.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.cs.xlf index f56f55b8cf5e4..2cc3488689706 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.cs.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.cs.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Podtrhnout znovu přiřazené proměnné;Zobrazovat vložené nápovědy;Automatické vložení koncových konstruktorů;Změnit nastavení přehledného výpisu;Změnit režim sbalení;Automatické vkládání členů Interface a MustOverride;Zobrazit nebo skrýt oddělovače řádků procedur;Zapnout nebo vypnout návrhy oprav chyb;Zapnout nebo vypnout zvýrazňování odkazů a klíčových slov; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; Regex; -regulární výrazy; -související komponenty pod kurzorem; -Nahlásit neplatné regulární výrazy; +regular expressions; +related components under cursor; +Report invalid regular expressions; regex; -regulární výraz; +regular expression; JSON; -Obarvit řetězce JSON; -Nahlásit neplatné řetězce JSON; -Rozpoznat a nabízet funkce editoru pro řetězce JSON; -Používat rozšířené barvy;Barevné schéma editoru;Okraj dědičnosti;Direktivy importu; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.de.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.de.xlf index d26234c122205..398b5358c6e94 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.de.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.de.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Neu zugewiesene Variablen unterstreichen;Inlinehinweise anzeigen; Automatisches Einfügen von Endkonstrukten;Pretty Listing-Einstellungen ändern;Gliederungsmodus ändern;Automatisches Einfügen von Schnittstellen- und MustOverride-Membern;Prozedurzeilentrennzeichen ein- oder ausblenden;Fehlerkorrekturvorschläge aktivieren oder deaktivieren;Aktivieren oder Deaktivieren der Hervorhebung von Verweisen und Schlüsselwörtern; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; Regex; -reguläre Ausdrücke; -zugehörige Komponenten unter dem Cursor; -Ungültige reguläre Ausdrücke melden; -RegEx; -regulärer Ausdruck; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; JSON; -JSON-Zeichenfolgen farbig hervorheben; -Ungültige JSON-Zeichenfolgen melden; -Editorfeatures für JSON-Zeichenfolgen erkennen und anbieten; -erweiterte Farben verwenden;Editor-Farbschema;Vererbungsrand;Einfuhrrichtlinien; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.es.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.es.xlf index c33a60803e7b6..738e852e5375a 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.es.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.es.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Subrayar variables reasignadas;Mostrar sugerencias alineadas;Insertar automáticamente las construcciones finales;Cambiar configuración de la lista descriptiva;Cambiar el modo de esquematización;Inserción automática de miembros Interface y MustOverride; Mostrar u ocultar separadores de línea de procedimiento;Activar o desactivar las sugerencias de corrección de errores; Activar o desactivar el resaltado de referencias y palabras clave; -Expresión regular; -expresiones regulares; -componentes relacionados bajo el cursor; -Notificar las expresiones regulares no válidas; -Expresión regular; -Expresión regular; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; JSON; -Colorear las cadenas JSON; -Notificar las cadenas JSON no válidas; -Detectar y ofrecer las características de editor para las cadenas JSON; -Usar colores mejorados; Combinación de colores del editor;Margen de herencia;Directivas de importación; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.fr.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.fr.xlf index 54bccda3f3c75..a3ce1b602dfec 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.fr.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.fr.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Souligner les variables réaffectées; afficher les indications en ligne; insérer automatiquement les constructions de fin; modifier les paramètres du listing en mode pretty; modifier le mode de contournement; insérer automatiquement les membres Interface et MustOverride; afficher ou masquer les séparateurs de ligne de procédure; activer ou désactiver les suggestions de correction des erreurs; activer ou désactiver la mise en évidence des références et des mots-clés; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; Regex; - expressions régulières; -composants associés sous le curseur; -Signaler les expressions régulières invalides; +regular expressions; +related components under cursor; +Report invalid regular expressions; regex; - expression régulière; +regular expression; JSON; - Coloriser les chaînes JSON; -Signaler les chaînes JSON invalides; - Détecter et proposer des fonctionnalités d'éditeur pour les chaînes JSON; - Utiliser des couleurs améliorées; Schéma de couleurs de l'éditeur; Marge d'héritage; Directives d'importation; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.it.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.it.xlf index 09e712d305fd3..fb6f2cf86b429 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.it.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.it.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Sottolinea le variabili riassegnate;Visualizza hint inline; Inserimento automatico di costrutti finali; Modifica riformattazione dell'elenco; Modifica la modalità di struttura; Inserimento automatico dei membri Interface e MustOverride; Mostra o nasconde i separatori di riga della procedura; Attiva o disattiva i suggerimenti per la correzione degli errori; Attiva o disattiva l'evidenziazione di riferimenti e parole chiave; -regex; -espressioni regolari; -componenti correlati sotto il cursore; -Segnala espressioni regolari non valide; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; regex; -espressione regolare; +regular expression; JSON; -Colora le stringhe JSON; -Segnala stringhe JSON non valide; -Rileva e offri funzionalità dell'editor per le stringhe JSON; -Usa colori migliorati;Combinazione colori editor;Margine di ereditarietà;Direttive Import; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ja.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ja.xlf index 3a3b243b1338c..96f4e4060cad2 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ja.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ja.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - 再割り当てされる変数に下線を引く;インラインのヒントを表示する;コンストラクトの終端の自動挿入;再フォーマット設定の変更;アウトライン モードの変更;Interface と MustOverride メンバーの自動挿入;プロシージャ行の区切り記号の表示/非表示;エラー修正候補のオン/オフの切り替え;参照とキーワードの強調表示のオン/オフの切り替え; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; Regex; -正規表現; -カーソルの下の関連コンポーネント; -無効な正規表現の報告; -RegEx; -正規表現; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; JSON; -JSON 文字列の色付け; -無効な JSON 文字列の報告; -JSON 文字列のエディター機能の検出と提供; -拡張された色を使用する;エディターの配色;継承余白;インポート ディレクティブ; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ko.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ko.xlf index b7e76297ae4d4..d3d20c73eb7c7 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ko.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ko.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - 다시 할당된 변수에 밑줄 긋기;인라인 힌트 표시; 맺음 구문 자동 삽입;자동 서식 지정 설정 변경;개요 모드 변경;인터페이스 및 MustOverride 멤버 자동 삽입;프로시저 줄 구분 기호 표시/숨기기;오류 수정 제안 설정/해제;참조 및 키워드 강조 표시 설정/해제; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; Regex; -정규식; -커서 아래의 관련 구성; -잘못된 정규식 보고; +regular expressions; +related components under cursor; +Report invalid regular expressions; regex; -정규식; +regular expression; JSON; -JSON 문자열 색 지정; -잘못된 JSON 문자열 보고; -JSON 문자열용 편집기 기능 탐지 및 제안; -향상된 색 사용;편집기 색 구성표;상속 여백;Import 지시문 +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pl.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pl.xlf index cf177973f6353..555dbe4e712ba 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pl.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pl.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Podkreślanie ponownie przypisanych zmiennych;Wyświatlnie wskazówek śródwierszowych; Automatyczne wstawianie konstrukcji końcowych; Zmiana ustawień wyświetlania listy;Zmiana trybu konspektu; Automatyczne wstawianie elementów członkowskich Interfejs i Należy Zastąpić; Pokazywanie lub ukrywanie separatorów wierszy procedury; Włączanie lub wyłączanie sugestii poprawek błędów; Włączanie lub wyłączanie wyróżnianie odwołań i słów kluczowych; -Wyrażenie regularne; -Wyrażenia regularne; -Powiązane składniki pod kursorem; -Zgłaszanie nieprawidłowych wyrażeń regularnych; -wyrażenie regularne; -wyrażenie regularne; -JSON, -Kolorowanie ciągów JSON; -Zgłaszanie nieprawidłowych ciągów JSON; -Wykrywanie i oferowanie funkcji edytowania dla ciągów JSON; -Użycie rozszerzonych kolorów; Schemat kolorów edytora;Margines dziedziczenia;Dyrektywy importu; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; +JSON; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pt-BR.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pt-BR.xlf index e7fa4568ba4ec..11de66c196a65 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pt-BR.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.pt-BR.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Sublinhar variáveis reatribuídas;exibir dicas incorporadas;inserção automática de construções finais;Alterar as configurações de reformatação automática;Alterar o modo de estrutura de tópicos;Inserção automática de interface e membros MustOverride;Mostrar ou ocultar separadores de linha de procedimento;Ativar ou desativar as sugestões de correção de erros;ativar ou desativar o realce de referências e palavras-chave; -Regex; -expressões regulares; -componentes relacionados sob o cursor; -Notificar expressões regulares inválidas; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; regex; -expressões regulares; +regular expression; JSON; -Colorizar cadeias de caracteres JSON; -Notificar cadeias de caracteres JSON inválidas; -Detectar e oferecer recursos de editor para cadeia de caracteres JSON; -Usar cores aprimoradas; editar o Esquema de Cores;Margem de Herança; Importar Diretivas; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ru.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ru.xlf index 90a3ebb825873..ee15055b4919b 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ru.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.ru.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Подчеркивать переназначенные переменные;Показывать встроенные подсказки;Автоматическая вставка конечных конструкций;Изменять параметры автоматического форматирования;Изменять режим структуры;Автоматическая вставка интерфейса и элементов MustOverride;Показывать или скрывать разделители строк для процедуры;Включить или отключить предложения по исправлению ошибок;Включить или отключить выделение ссылок и ключевых слов; -Регулярные выражения; -регулярные выражения; -связанные компоненты под курсором -Сообщить о недопустимых регулярных выражениях; -регулярное выражение; -регулярное выражение; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; JSON; -Выделить строки JSON цветом; -Сообщить о недопустимых строках JSON; -Найти и предложить функции редактора для строк JSON; -Использовать расширенный набор цветов;Цветовая схема редактора;Поле наследования;Директивы import; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.tr.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.tr.xlf index d462e9c788e99..29c9a96423a8c 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.tr.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.tr.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - Yeniden atanan değişkenleri altını çiz;Satır içi ipuçlarını göster;Bitiş yapılarının otomatik olarak eklenmesi;Düzgün listeleme ayarlarını değiştir;Ana hat modunu değiştir;Interface ve MustOverride üyelerinin otomatik olarak eklenmesi;Yordam satır ayraçlarını göster veya gizle;Hata düzeltme önerilerini aç veya kapat;Başvuruları ve anahtar sözcükleri vurgulamayı aç veya kapat; -Normal ifade; -normal ifadeler; -imlecin altındaki ilgili bileşenler; -Geçersiz normal ifadeleri bildir; -normal ifade; -normal ifade; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; JSON; -JSON dizelerini renklendir; -Geçersiz JSON dizelerini bildir; -JSON dizeleri için düzenleyici özelliklerini algıla ve öner; -Gelişmiş renkleri kullan;Düzenleyici Renk Düzeni;Devralma Kenar Boşluğu;İçe Aktarma Yönergeleri; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hans.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hans.xlf index e7bf53a84aaa3..8224c55bbf6b6 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hans.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hans.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - 为重新分配变量添加下划线;显示内联提示;自动插入 End 构造;更改整齐排列设置;更改大纲模式;自动插入 Interface 和 MustOverride 成员;显示或隐藏过程行分隔符;打开或关闭错误纠正建议;打开或关闭引用和关键字的突出显示; -正则表达式; -正则表达式; -游标下的相关组件; -报告无效正则表达式; -正则表达式; -正则表达式; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; +Regex; +regular expressions; +related components under cursor; +Report invalid regular expressions; +regex; +regular expression; JSON; -对 JSON 字符串着色; -报告无效 JSON 字符串; -为 JSON 字符串检测并提供编辑器功能; -使用增强颜色;编辑器配色方案;继承边距;导入指令; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords diff --git a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hant.xlf b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hant.xlf index 8d196454fafba..600f66b5c7518 100644 --- a/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hant.xlf +++ b/src/VisualStudio/VisualBasic/Impl/xlf/VSPackage.zh-Hant.xlf @@ -33,18 +33,21 @@ Collapse #regions on file open; Collapse Imports on file open; Collapse metadata implementations on file open; Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; - 為重新指派的變數加上底線;顯示內嵌提示;自動插入結束建構;變更美化排列設定;變更大綱模式;自動插入介面和 MustOverride 成員;顯示或隱藏程序行分隔符號;開啟或關閉錯誤校正建議;開啟或關閉參考及關鍵字的醒目提示; + Underline reassigned variables;Display inline hints;Automatic insertion of end constructs;Change pretty listing settings;Change outlining mode;Automatic insertion of Interface and MustOverride members;Show or hide procedure line separators;Turn error correction suggestions on or off;Turn highlighting of references and keywords on or off; Regex; -規則運算式; -游標下的相關元件; -回報無效的規則運算式; +regular expressions; +related components under cursor; +Report invalid regular expressions; regex; -規則運算式; +regular expression; JSON; -為 JSON 字串上色; -回報無效的 JSON 字串; -偵測並提供 JSON 字串的編輯器功能; -;使用進階色彩;編輯器色彩配置;繼承頁面邊界;匯入指示詞; +Colorize JSON strings; +Report invalid JSON strings; +Detect and offer editor features for JSON strings; +Collapse #regions on file open; +Collapse Imports on file open; +Collapse metadata implementations on file open; +Use enhanced colors;Editor Color Scheme;Inheritance Margin;Import Directives; Advanced options page keywords From 2706b52da12cf6388a1545c3396dc08d4d320381 Mon Sep 17 00:00:00 2001 From: DoctorKrolic Date: Sun, 12 Jun 2022 20:02:58 +0300 Subject: [PATCH 04/16] Do not supress snippets, check for nested types and rename --- .../EnumAndCompletionListTagCompletionProvider.cs | 2 +- .../CompletionProviders/SnippetCompletionProvider.cs | 5 ----- .../CompletionProviders/SpeculativeTCompletionProvider.cs | 2 +- .../AbstractNativeIntegerKeywordRecommender.cs | 2 +- .../AbstractSpecialTypePreselectingKeywordRecommender.cs | 2 +- .../KeywordRecommenders/DynamicKeywordRecommender.cs | 2 +- .../AbstractRecommendationServiceBasedCompletionProvider.cs | 5 +++-- .../Types/BuiltInTypesKeywordRecommender.vb | 2 +- .../VisualBasic/Impl/Snippets/SnippetCompletionProvider.vb | 5 ----- .../Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs | 4 ++-- 10 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/Features/CSharp/Portable/Completion/CompletionProviders/EnumAndCompletionListTagCompletionProvider.cs b/src/Features/CSharp/Portable/Completion/CompletionProviders/EnumAndCompletionListTagCompletionProvider.cs index e40458a90feeb..521e7e94149fc 100644 --- a/src/Features/CSharp/Portable/Completion/CompletionProviders/EnumAndCompletionListTagCompletionProvider.cs +++ b/src/Features/CSharp/Portable/Completion/CompletionProviders/EnumAndCompletionListTagCompletionProvider.cs @@ -72,7 +72,7 @@ public override async Task ProvideCompletionsAsync(CompletionContext context) var syntaxContext = await context.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(false); var semanticModel = syntaxContext.SemanticModel; - if (syntaxContext.IsInTaskLikeTypeContext) + if (syntaxContext.IsTaskLikeTypeContext) return; var token = syntaxContext.TargetToken; diff --git a/src/Features/CSharp/Portable/Completion/CompletionProviders/SnippetCompletionProvider.cs b/src/Features/CSharp/Portable/Completion/CompletionProviders/SnippetCompletionProvider.cs index 079196bfe4ba4..771250f152f69 100644 --- a/src/Features/CSharp/Portable/Completion/CompletionProviders/SnippetCompletionProvider.cs +++ b/src/Features/CSharp/Portable/Completion/CompletionProviders/SnippetCompletionProvider.cs @@ -97,11 +97,6 @@ private static async Task> GetSnippetsForDocument var context = await completionContext.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(false); var semanticModel = context.SemanticModel; - if (context.IsInTaskLikeTypeContext) - { - return ImmutableArray.Empty; - } - if (syntaxFacts.IsPreProcessorDirectiveContext(syntaxTree, position, cancellationToken)) { var directive = leftToken.GetAncestor(); diff --git a/src/Features/CSharp/Portable/Completion/CompletionProviders/SpeculativeTCompletionProvider.cs b/src/Features/CSharp/Portable/Completion/CompletionProviders/SpeculativeTCompletionProvider.cs index 3a4c0bccc7421..ba3ab404158a1 100644 --- a/src/Features/CSharp/Portable/Completion/CompletionProviders/SpeculativeTCompletionProvider.cs +++ b/src/Features/CSharp/Portable/Completion/CompletionProviders/SpeculativeTCompletionProvider.cs @@ -78,7 +78,7 @@ private static async Task ShouldShowSpeculativeTCompletionItemAsync(Docume var context = await completionContext.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(false); - if (context.IsInTaskLikeTypeContext) + if (context.IsTaskLikeTypeContext) return false; var spanStart = position; diff --git a/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractNativeIntegerKeywordRecommender.cs b/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractNativeIntegerKeywordRecommender.cs index 5836238b504a0..711ab8e938644 100644 --- a/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractNativeIntegerKeywordRecommender.cs +++ b/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractNativeIntegerKeywordRecommender.cs @@ -15,7 +15,7 @@ internal abstract class AbstractNativeIntegerKeywordRecommender : IKeywordRecomm private static bool IsValidContext(CSharpSyntaxContext context) { - if (context.IsInTaskLikeTypeContext || + if (context.IsTaskLikeTypeContext || context.IsGenericConstraintContext) { return false; diff --git a/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractSpecialTypePreselectingKeywordRecommender.cs b/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractSpecialTypePreselectingKeywordRecommender.cs index 5318188573326..126e2ba18f56a 100644 --- a/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractSpecialTypePreselectingKeywordRecommender.cs +++ b/src/Features/CSharp/Portable/Completion/KeywordRecommenders/AbstractSpecialTypePreselectingKeywordRecommender.cs @@ -27,7 +27,7 @@ protected override bool ShouldPreselect(CSharpSyntaxContext context, Cancellatio protected sealed override bool IsValidContext(int position, CSharpSyntaxContext context, CancellationToken cancellationToken) { // Filter out all special-types from locations where we think we only want something task-like. - if (context.IsInTaskLikeTypeContext) + if (context.IsTaskLikeTypeContext) return false; return IsValidContextWorker(position, context, cancellationToken); diff --git a/src/Features/CSharp/Portable/Completion/KeywordRecommenders/DynamicKeywordRecommender.cs b/src/Features/CSharp/Portable/Completion/KeywordRecommenders/DynamicKeywordRecommender.cs index 8094431002ca7..922c50cf349ec 100644 --- a/src/Features/CSharp/Portable/Completion/KeywordRecommenders/DynamicKeywordRecommender.cs +++ b/src/Features/CSharp/Portable/Completion/KeywordRecommenders/DynamicKeywordRecommender.cs @@ -19,7 +19,7 @@ internal class DynamicKeywordRecommender : IKeywordRecommender(); var recommendedSymbols = recommender.GetRecommendedSymbolsInContext(context, recommendationOptions, cancellationToken); - if (context.IsInTaskLikeTypeContext) + if (context.IsTaskLikeTypeContext) { // If we get 'Task' back, attempt to preselect that as the most likely result. var taskType = context.SemanticModel.Compilation.TaskType(); @@ -92,7 +92,8 @@ private static bool IsValidForTaskLikeTypeOnlyContext(ISymbol symbol, TSyntaxCon namedType.Equals(compilation.IAsyncEnumeratorOfTType()); } - return symbol.IsAwaitableNonDynamic(context.SemanticModel, context.Position); + return namedType.IsAwaitableNonDynamic(context.SemanticModel, context.Position) || + namedType.GetTypeMembers().Any(m => IsValidForTaskLikeTypeOnlyContext(m, context)); } private static bool IsValidForGenericConstraintContext(ISymbol symbol) diff --git a/src/Features/VisualBasic/Portable/Completion/KeywordRecommenders/Types/BuiltInTypesKeywordRecommender.vb b/src/Features/VisualBasic/Portable/Completion/KeywordRecommenders/Types/BuiltInTypesKeywordRecommender.vb index ed1fdc7e708d6..2d57f12cfd367 100644 --- a/src/Features/VisualBasic/Portable/Completion/KeywordRecommenders/Types/BuiltInTypesKeywordRecommender.vb +++ b/src/Features/VisualBasic/Portable/Completion/KeywordRecommenders/Types/BuiltInTypesKeywordRecommender.vb @@ -17,7 +17,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.KeywordRecommenders.Type Inherits AbstractKeywordRecommender Protected Overrides Function RecommendKeywords(context As VisualBasicSyntaxContext, cancellationToken As CancellationToken) As ImmutableArray(Of RecommendedKeyword) - If context.IsInTaskLikeTypeContext Then + If context.IsTaskLikeTypeContext Then Return ImmutableArray(Of RecommendedKeyword).Empty End If diff --git a/src/VisualStudio/VisualBasic/Impl/Snippets/SnippetCompletionProvider.vb b/src/VisualStudio/VisualBasic/Impl/Snippets/SnippetCompletionProvider.vb index 53916c54a9c40..3e5aa39daf701 100644 --- a/src/VisualStudio/VisualBasic/Impl/Snippets/SnippetCompletionProvider.vb +++ b/src/VisualStudio/VisualBasic/Impl/Snippets/SnippetCompletionProvider.vb @@ -89,11 +89,6 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Snippets Return End If - Dim syntaxContext = Await context.GetSyntaxContextWithExistingSpeculativeModelAsync(document, cancellationToken).ConfigureAwait(False) - If syntaxContext.IsInTaskLikeTypeContext Then - Return - End If - Dim syntaxFacts = document.GetLanguageService(Of ISyntaxFactsService)() If IsInNonUserCode(syntaxTree, position, cancellationToken) Then Return diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs index 619eb5c3ac384..d3371ac1f91cb 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs @@ -37,7 +37,7 @@ internal abstract class SyntaxContext public bool IsGlobalStatementContext { get; } public bool IsInImportsDirective { get; } public bool IsInQuery { get; } - public bool IsInTaskLikeTypeContext { get; } + public bool IsTaskLikeTypeContext { get; } public bool IsNameOfContext { get; } public bool IsNamespaceContext { get; } public bool IsNamespaceDeclarationNameContext { get; } @@ -101,7 +101,7 @@ protected SyntaxContext( this.IsGlobalStatementContext = isGlobalStatementContext; this.IsInImportsDirective = isInImportsDirective; this.IsInQuery = isInQuery; - this.IsInTaskLikeTypeContext = isInTaskLikeTypeContext; + this.IsTaskLikeTypeContext = isInTaskLikeTypeContext; this.IsNameOfContext = isNameOfContext; this.IsNamespaceContext = isNamespaceContext; this.IsNamespaceDeclarationNameContext = isNamespaceDeclarationNameContext; From 33538441f8ba6d1cce99c567108d3f049194ec93 Mon Sep 17 00:00:00 2001 From: DoctorKrolic Date: Sun, 12 Jun 2022 20:10:24 +0300 Subject: [PATCH 05/16] Rename --- .../CSharp/Extensions/ContextQuery/CSharpSyntaxContext.cs | 6 +++--- .../Core/Extensions/ContextQuery/SyntaxContext.cs | 4 ++-- .../Extensions/ContextQuery/VisualBasicSyntaxContext.vb | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/CSharp/Extensions/ContextQuery/CSharpSyntaxContext.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/CSharp/Extensions/ContextQuery/CSharpSyntaxContext.cs index dfe71b09db076..2459ec45b2b98 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/CSharp/Extensions/ContextQuery/CSharpSyntaxContext.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/CSharp/Extensions/ContextQuery/CSharpSyntaxContext.cs @@ -80,7 +80,7 @@ private CSharpSyntaxContext( bool isInNonUserCode, bool isInQuery, bool isInstanceContext, - bool isInTaskLikeTypeContext, + bool isTaskLikeTypeContext, bool isIsOrAsOrSwitchOrWithExpressionContext, bool isIsOrAsTypeContext, bool isLabelContext, @@ -125,7 +125,7 @@ private CSharpSyntaxContext( isGlobalStatementContext: isGlobalStatementContext, isInImportsDirective: isInImportsDirective, isInQuery: isInQuery, - isInTaskLikeTypeContext: isInTaskLikeTypeContext, + isTaskLikeTypeContext: isTaskLikeTypeContext, isNameOfContext: isNameOfContext, isNamespaceContext: isNamespaceContext, isNamespaceDeclarationNameContext: isNamespaceDeclarationNameContext, @@ -274,7 +274,7 @@ private static CSharpSyntaxContext CreateContextWorker(Document document, Semant isInNonUserCode: isInNonUserCode, isInQuery: leftToken.GetAncestor() != null, isInstanceContext: syntaxTree.IsInstanceContext(targetToken, semanticModel, cancellationToken), - isInTaskLikeTypeContext: precedingModifiers.Contains(SyntaxKind.AsyncKeyword), + isTaskLikeTypeContext: precedingModifiers.Contains(SyntaxKind.AsyncKeyword), isIsOrAsOrSwitchOrWithExpressionContext: syntaxTree.IsIsOrAsOrSwitchOrWithExpressionContext(semanticModel, position, leftToken, cancellationToken), isIsOrAsTypeContext: syntaxTree.IsIsOrAsTypeContext(position, leftToken), isLabelContext: syntaxTree.IsLabelContext(position, cancellationToken), diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs index d3371ac1f91cb..7d0d46ff08275 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Extensions/ContextQuery/SyntaxContext.cs @@ -69,7 +69,7 @@ protected SyntaxContext( bool isGlobalStatementContext, bool isInImportsDirective, bool isInQuery, - bool isInTaskLikeTypeContext, + bool isTaskLikeTypeContext, bool isNameOfContext, bool isNamespaceContext, bool isNamespaceDeclarationNameContext, @@ -101,7 +101,7 @@ protected SyntaxContext( this.IsGlobalStatementContext = isGlobalStatementContext; this.IsInImportsDirective = isInImportsDirective; this.IsInQuery = isInQuery; - this.IsTaskLikeTypeContext = isInTaskLikeTypeContext; + this.IsTaskLikeTypeContext = isTaskLikeTypeContext; this.IsNameOfContext = isNameOfContext; this.IsNamespaceContext = isNamespaceContext; this.IsNamespaceDeclarationNameContext = isNamespaceDeclarationNameContext; diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ContextQuery/VisualBasicSyntaxContext.vb b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ContextQuery/VisualBasicSyntaxContext.vb index 5ba7f5aef5e78..cded8db9d1d81 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ContextQuery/VisualBasicSyntaxContext.vb +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/VisualBasic/Extensions/ContextQuery/VisualBasicSyntaxContext.vb @@ -66,7 +66,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery isInImportsDirective As Boolean, isInLambda As Boolean, isInQuery As Boolean, - isInTaskLikeTypeContext As Boolean, + isTaskLikeTypeContext As Boolean, isNameOfContext As Boolean, isNamespaceContext As Boolean, isNamespaceDeclarationNameContext As Boolean, @@ -96,7 +96,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery isGlobalStatementContext:=isGlobalStatementContext, isInImportsDirective:=isInImportsDirective, isInQuery:=isInQuery, - isInTaskLikeTypeContext:=isInTaskLikeTypeContext, + isTaskLikeTypeContext:=isTaskLikeTypeContext, isNameOfContext:=isNameOfContext, isNamespaceContext, isNamespaceDeclarationNameContext, @@ -134,7 +134,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery Me.IsPreprocessorEndDirectiveKeywordContext = targetToken.FollowsBadEndDirective() End Sub - Private Shared Function ComputeIsInTaskLikeTypeContext(targetToken As SyntaxToken) As Boolean + Private Shared Function ComputeIsTaskLikeTypeContext(targetToken As SyntaxToken) As Boolean ' If we're after the 'as' in an async method declaration, then filter down to task-like types only. If targetToken.Kind() = SyntaxKind.AsKeyword Then Dim asClause = TryCast(targetToken.Parent, AsClauseSyntax) @@ -177,7 +177,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery isInImportsDirective:=leftToken.GetAncestor(Of ImportsStatementSyntax)() IsNot Nothing, isInLambda:=leftToken.GetAncestor(Of LambdaExpressionSyntax)() IsNot Nothing, isInQuery:=isInQuery, - isInTaskLikeTypeContext:=ComputeIsInTaskLikeTypeContext(targetToken), + isTaskLikeTypeContext:=ComputeIsTaskLikeTypeContext(targetToken), isNameOfContext:=syntaxTree.IsNameOfContext(position, cancellationToken), isNamespaceContext:=syntaxTree.IsNamespaceContext(position, targetToken, cancellationToken, semanticModel), isNamespaceDeclarationNameContext:=syntaxTree.IsNamespaceDeclarationNameContext(position, cancellationToken), From 7641c77848564be5c7e1a34985c4db59d13b2d12 Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Thu, 2 Jun 2022 12:24:35 -0700 Subject: [PATCH 06/16] Allow our statistic/histogram log aggregators to directly take TimeSpans We (mostly) use these to track time, but rather than just letting them directly take a TimeSpan, we were expecting each of the callers to distill it down to milliseconds and the pass it as an integer. This actually clarifies a current surprise that some of our code calls the data points "ticks" but they're actually logging milliseconds, but that wasn't obvious since there were just ints being passed around everywhere. Even for the cases we were passing around milliseconds, what we were often doing is taking a TimeSpan, grabbing it's TotalMilliseconds and then: - casting it to an int to pass around to our logging functions - casting that to a decimal to pass to the log aggregators - doing decimal division to figure out which bucket it goes in - doing a Math.Floor on that result - casting that result back to an int If we just keep everything internally as an int, the division will already round down and we can avoid all the random extra casting. --- .../AsyncCompletion/AsyncCompletionLogger.cs | 29 ++++++++++--------- .../AsyncCompletion/CompletionSource.cs | 6 ++-- .../AsyncCompletion/ItemManager.cs | 4 +-- .../AbstractChangeSignatureService.cs | 2 +- .../ChangeSignatureTelemetryLogger.cs | 7 +++-- .../Log/CompletionProvidersLogger.cs | 11 +++---- ...ExtensionMethodImportCompletionProvider.cs | 7 +++-- .../AbstractTypeImportCompletionProvider.cs | 7 ++--- .../ExtensionMethodImportCompletionHelper.cs | 10 +++---- .../SerializableUnimportedExtensionMethods.cs | 13 +++++---- .../Handler/RequestTelemetryLogger.cs | 4 +-- .../InheritanceMarginLogger.cs | 2 +- .../Portable/Log/HistogramLogAggregator.cs | 14 ++++++--- .../Portable/Log/StatisticLogAggregator.cs | 7 +++++ 14 files changed, 70 insertions(+), 53 deletions(-) diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs index bcd12a505f7cc..ff3080b8a7d92 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Microsoft.CodeAnalysis.Internal.Log; namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.AsyncCompletion @@ -56,8 +57,8 @@ internal static void LogImportCompletionGetContext(bool isBlocking, bool delayed internal static void LogSessionWithDelayedImportCompletionIncludedInUpdate() => s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithDelayedImportCompletionIncludedInUpdate); - internal static void LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint(int count) => - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, count); + internal static void LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint(TimeSpan timeSpan) => + s_histogramLogAggregator.IncreaseCount((int)ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, timeSpan); internal static void LogDelayedImportCompletionIncluded() => s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithTypeImportCompletionEnabled); @@ -68,36 +69,36 @@ internal static void LogExpanderUsage() => internal static void LogGetDefaultsMatchTicksDataPoint(int count) => s_statisticLogAggregator.AddDataPoint((int)ActionInfo.GetDefaultsMatchTicks, count); - internal static void LogSourceInitializationTicksDataPoint(int count) + internal static void LogSourceInitializationTicksDataPoint(TimeSpan elapsed) { - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.SourceInitializationTicks, count); - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.SourceInitializationTicks, count); + s_statisticLogAggregator.AddDataPoint((int)ActionInfo.SourceInitializationTicks, elapsed); + s_histogramLogAggregator.IncreaseCount((int)ActionInfo.SourceInitializationTicks, elapsed); } - internal static void LogSourceGetContextTicksDataPoint(int count, bool isCanceled) + internal static void LogSourceGetContextTicksDataPoint(TimeSpan elapsed, bool isCanceled) { var key = isCanceled ? ActionInfo.SourceGetContextCanceledTicks : ActionInfo.SourceGetContextCompletedTicks; - s_statisticLogAggregator.AddDataPoint((int)key, count); - s_histogramLogAggregator.IncreaseCount((int)key, count); + s_statisticLogAggregator.AddDataPoint((int)key, elapsed); + s_histogramLogAggregator.IncreaseCount((int)key, elapsed); } - internal static void LogItemManagerSortTicksDataPoint(int count) + internal static void LogItemManagerSortTicksDataPoint(TimeSpan elapsed) { - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ItemManagerSortTicks, count); - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.ItemManagerSortTicks, count); + s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ItemManagerSortTicks, elapsed); + s_histogramLogAggregator.IncreaseCount((int)ActionInfo.ItemManagerSortTicks, elapsed); } - internal static void LogItemManagerUpdateDataPoint(int count, bool isCanceled) + internal static void LogItemManagerUpdateDataPoint(TimeSpan elapsed, bool isCanceled) { var key = isCanceled ? ActionInfo.ItemManagerUpdateCanceledTicks : ActionInfo.ItemManagerUpdateCompletedTicks; - s_statisticLogAggregator.AddDataPoint((int)key, count); - s_histogramLogAggregator.IncreaseCount((int)key, count); + s_statisticLogAggregator.AddDataPoint((int)key, elapsed); + s_histogramLogAggregator.IncreaseCount((int)key, elapsed); } internal static void ReportTelemetry() diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/CompletionSource.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/CompletionSource.cs index 3119a4534f0b2..6b784a4f8b06a 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/CompletionSource.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/CompletionSource.cs @@ -143,7 +143,7 @@ public AsyncCompletionData.CompletionStartData InitializeCompletion( } finally { - AsyncCompletionLogger.LogSourceInitializationTicksDataPoint((int)stopwatch.Elapsed.TotalMilliseconds); + AsyncCompletionLogger.LogSourceInitializationTicksDataPoint(stopwatch.Elapsed); } } @@ -311,7 +311,7 @@ public async Task GetCompletionContextAsync( // There could be a race around the usage of this stopwatch, I ignored it since we just need a rough idea: // we always log the time even if the stopwatch's not started regardless of whether expand items are included intially // (that number can be obtained via another property.) - AsyncCompletionLogger.LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint((int)stopwatch.ElapsedMilliseconds); + AsyncCompletionLogger.LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint(stopwatch.Elapsed); return result; }, cancellationToken); @@ -346,7 +346,7 @@ public async Task GetCompletionContextAsync( } finally { - AsyncCompletionLogger.LogSourceGetContextTicksDataPoint((int)totalStopWatch.Elapsed.TotalMilliseconds, isCanceled: cancellationToken.IsCancellationRequested); + AsyncCompletionLogger.LogSourceGetContextTicksDataPoint(totalStopWatch.Elapsed, isCanceled: cancellationToken.IsCancellationRequested); } static VSCompletionContext CombineCompletionContext(VSCompletionContext context1, VSCompletionContext context2) diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs index a66f2eaff3c7b..e102cad5684b2 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs @@ -36,7 +36,7 @@ public Task> SortCompletionListAsync( // Sort by default comparer of Roslyn CompletionItem var sortedItems = data.InitialList.OrderBy(CompletionItemData.GetOrAddDummyRoslynItem).ToImmutableArray(); - AsyncCompletionLogger.LogItemManagerSortTicksDataPoint((int)stopwatch.Elapsed.TotalMilliseconds); + AsyncCompletionLogger.LogItemManagerSortTicksDataPoint(stopwatch.Elapsed); return Task.FromResult(sortedItems); } @@ -101,7 +101,7 @@ public Task> SortCompletionListAsync( } finally { - AsyncCompletionLogger.LogItemManagerUpdateDataPoint((int)stopwatch.Elapsed.TotalMilliseconds, isCanceled: cancellationToken.IsCancellationRequested); + AsyncCompletionLogger.LogItemManagerUpdateDataPoint(stopwatch.Elapsed, isCanceled: cancellationToken.IsCancellationRequested); } } } diff --git a/src/Features/Core/Portable/ChangeSignature/AbstractChangeSignatureService.cs b/src/Features/Core/Portable/ChangeSignature/AbstractChangeSignatureService.cs index 9f23f66e57ba0..a3b9b8668f7ce 100644 --- a/src/Features/Core/Portable/ChangeSignature/AbstractChangeSignatureService.cs +++ b/src/Features/Core/Portable/ChangeSignature/AbstractChangeSignatureService.cs @@ -427,7 +427,7 @@ private static async Task> FindChangeSignatureR } telemetryTimer.Stop(); - ChangeSignatureLogger.LogCommitInformation(telemetryNumberOfDeclarationsToUpdate, telemetryNumberOfReferencesToUpdate, (int)telemetryTimer.ElapsedMilliseconds); + ChangeSignatureLogger.LogCommitInformation(telemetryNumberOfDeclarationsToUpdate, telemetryNumberOfReferencesToUpdate, telemetryTimer.Elapsed); return (currentSolution, confirmationMessage); } diff --git a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs index 58c09b0537c93..43f2a65db93c6 100644 --- a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs +++ b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs @@ -4,6 +4,7 @@ #nullable disable +using System; using Microsoft.CodeAnalysis.Internal.Log; namespace Microsoft.CodeAnalysis.ChangeSignature @@ -138,15 +139,15 @@ private static void LogTransformationCombination(bool parametersAdded, bool para } } - internal static void LogCommitInformation(int numDeclarationsUpdated, int numCallSitesUpdated, int elapsedMS) + internal static void LogCommitInformation(int numDeclarationsUpdated, int numCallSitesUpdated, TimeSpan elapsedTime) { s_logAggregator.IncreaseCount((int)ActionInfo.ChangeSignatureCommitCompleted); s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSessionNumberOfDeclarationsUpdated, numDeclarationsUpdated); s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSessionNumberOfCallSitesUpdated, numCallSitesUpdated); - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.CommittedSessionCommitElapsedMS, elapsedMS); - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.CommittedSessionCommitElapsedMS, elapsedMS); + s_statisticLogAggregator.AddDataPoint((int)ActionInfo.CommittedSessionCommitElapsedMS, (int)elapsedTime.TotalMilliseconds); + s_histogramLogAggregator.IncreaseCount((int)ActionInfo.CommittedSessionCommitElapsedMS, elapsedTime); } internal static void LogAddedParameterTypeBinds() diff --git a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs index f0f0030f34b4e..e90d53219af3b 100644 --- a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs +++ b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using Microsoft.CodeAnalysis.Internal.Log; namespace Microsoft.CodeAnalysis.Completion.Log @@ -33,10 +34,10 @@ internal enum ActionInfo CommitUsingDotToAddParenthesis } - internal static void LogTypeImportCompletionTicksDataPoint(int count) + internal static void LogTypeImportCompletionTicksDataPoint(TimeSpan elapsed) { - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.TypeImportCompletionTicks, count); - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.TypeImportCompletionTicks, count); + s_histogramLogAggregator.IncreaseCount((int)ActionInfo.TypeImportCompletionTicks, elapsed); + s_statisticLogAggregator.AddDataPoint((int)ActionInfo.TypeImportCompletionTicks, elapsed); } internal static void LogTypeImportCompletionItemCountDataPoint(int count) => @@ -51,14 +52,14 @@ internal static void LogTypeImportCompletionCacheMiss() => internal static void LogCommitOfTypeImportCompletionItem() => s_logAggregator.IncreaseCount((int)ActionInfo.CommitsOfTypeImportCompletionItem); - internal static void LogExtensionMethodCompletionTicksDataPoint(int total, int getSymbols, int createItems, bool isRemote) + internal static void LogExtensionMethodCompletionTicksDataPoint(TimeSpan total, TimeSpan getSymbols, TimeSpan createItems, bool isRemote) { s_histogramLogAggregator.IncreaseCount((int)ActionInfo.ExtensionMethodCompletionTicks, total); s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionTicks, total); if (isRemote) { - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionRemoteTicks, (total - getSymbols - createItems)); + s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionRemoteTicks, total - getSymbols - createItems); } s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionGetSymbolsTicks, getSymbols); diff --git a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs index 53e4aaf73766d..9c8ba4264dfdc 100644 --- a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs +++ b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs @@ -14,6 +14,7 @@ using Microsoft.CodeAnalysis.LanguageServices; using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Shared.Extensions.ContextQuery; +using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.Completion.Providers { @@ -43,7 +44,8 @@ protected override async Task AddCompletionItemsAsync( var syntaxFacts = completionContext.Document.GetRequiredLanguageService(); if (TryGetReceiverTypeSymbol(syntaxContext, syntaxFacts, cancellationToken, out var receiverTypeSymbol)) { - var ticks = Environment.TickCount; + var totalTime = SharedStopwatch.StartNew(); + var inferredTypes = completionContext.CompletionOptions.TargetTypedCompletionFilter ? syntaxContext.InferredTypes : ImmutableArray.Empty; @@ -65,9 +67,8 @@ protected override async Task AddCompletionItemsAsync( completionContext.AddItems(result.CompletionItems.Select(i => Convert(i, receiverTypeKey))); // report telemetry: - var totalTicks = Environment.TickCount - ticks; CompletionProvidersLogger.LogExtensionMethodCompletionTicksDataPoint( - totalTicks, result.GetSymbolsTicks, result.CreateItemsTicks, result.IsRemote); + totalTime.Elapsed, result.GetSymbolsTime, result.CreateItemsTime, result.IsRemote); if (result.IsPartialResult) CompletionProvidersLogger.LogExtensionMethodCompletionPartialResultCount(); diff --git a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractTypeImportCompletionProvider.cs b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractTypeImportCompletionProvider.cs index 2e39c11984bcf..21b6828393396 100644 --- a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractTypeImportCompletionProvider.cs +++ b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractTypeImportCompletionProvider.cs @@ -163,7 +163,7 @@ static bool ShouldAddItem( private class TelemetryCounter { - private readonly int _tick; + private readonly SharedStopwatch _elapsedTime; public int ItemsCount { get; set; } public int ReferenceCount { get; set; } @@ -171,7 +171,7 @@ private class TelemetryCounter public TelemetryCounter() { - _tick = Environment.TickCount; + _elapsedTime = SharedStopwatch.StartNew(); } public void Report() @@ -182,8 +182,7 @@ public void Report() } // cache miss still count towards the cost of completion, so we need to log regardless of it. - var delta = Environment.TickCount - _tick; - CompletionProvidersLogger.LogTypeImportCompletionTicksDataPoint(delta); + CompletionProvidersLogger.LogTypeImportCompletionTicksDataPoint(_elapsedTime.Elapsed); CompletionProvidersLogger.LogTypeImportCompletionItemCountDataPoint(ItemsCount); CompletionProvidersLogger.LogTypeImportCompletionReferenceCountDataPoint(ReferenceCount); } diff --git a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs index 7eeb953a45410..d7cb5c655c5ed 100644 --- a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs +++ b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs @@ -90,7 +90,7 @@ public static async Task GetUnimportedEx bool isRemote, CancellationToken cancellationToken) { - var ticks = Environment.TickCount; + var stopwatch = SharedStopwatch.StartNew(); // First find symbols of all applicable extension methods. // Workspace's syntax/symbol index is used to avoid iterating every method symbols in the solution. @@ -98,15 +98,15 @@ public static async Task GetUnimportedEx document, position, receiverTypeSymbol, namespaceInScope, cancellationToken).ConfigureAwait(false); var (extentsionMethodSymbols, isPartialResult) = await symbolComputer.GetExtensionMethodSymbolsAsync(forceCacheCreation, hideAdvancedMembers, cancellationToken).ConfigureAwait(false); - var getSymbolsTicks = Environment.TickCount - ticks; - ticks = Environment.TickCount; + var getSymbolsTime = stopwatch.Elapsed; + stopwatch = SharedStopwatch.StartNew(); var compilation = await document.Project.GetRequiredCompilationAsync(cancellationToken).ConfigureAwait(false); var items = ConvertSymbolsToCompletionItems(compilation, extentsionMethodSymbols, targetTypes, cancellationToken); - var createItemsTicks = Environment.TickCount - ticks; + var createItemsTime = stopwatch.Elapsed; - return new SerializableUnimportedExtensionMethods(items, isPartialResult, getSymbolsTicks, createItemsTicks, isRemote); + return new SerializableUnimportedExtensionMethods(items, isPartialResult, getSymbolsTime, createItemsTime, isRemote); } public static async ValueTask BatchUpdateCacheAsync(ImmutableSegmentedList projects, CancellationToken cancellationToken) diff --git a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs index b8eee20c00241..b7dc7a3362067 100644 --- a/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs +++ b/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Immutable; using System.Runtime.Serialization; @@ -17,10 +18,10 @@ internal sealed class SerializableUnimportedExtensionMethods public readonly bool IsPartialResult; [DataMember(Order = 2)] - public readonly int GetSymbolsTicks; + public readonly TimeSpan GetSymbolsTime; [DataMember(Order = 3)] - public readonly int CreateItemsTicks; + public readonly TimeSpan CreateItemsTime; [DataMember(Order = 4)] public readonly bool IsRemote; @@ -28,14 +29,14 @@ internal sealed class SerializableUnimportedExtensionMethods public SerializableUnimportedExtensionMethods( ImmutableArray completionItems, bool isPartialResult, - int getSymbolsTicks, - int createItemsTicks, + TimeSpan getSymbolsTime, + TimeSpan createItemsTime, bool isRemote) { CompletionItems = completionItems; IsPartialResult = isPartialResult; - GetSymbolsTicks = getSymbolsTicks; - CreateItemsTicks = createItemsTicks; + GetSymbolsTime = getSymbolsTime; + CreateItemsTime = createItemsTime; IsRemote = isRemote; } } diff --git a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs index e53c233f0caa2..36fe409203657 100644 --- a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs +++ b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs @@ -87,10 +87,10 @@ public void UpdateTelemetryData( { // Find the bucket corresponding to the queued duration and update the count of durations in that bucket. // This is not broken down per method as time in queue is not specific to an LSP method. - _queuedDurationLogAggregator.IncreaseCount(QueuedDurationKey, Convert.ToDecimal(queuedDuration.TotalMilliseconds)); + _queuedDurationLogAggregator.IncreaseCount(QueuedDurationKey, queuedDuration); // Store the request time metrics per LSP method. - _requestDurationLogAggregator.IncreaseCount(methodName, Convert.ToDecimal(ComputeLogValue(requestDuration.TotalMilliseconds))); + _requestDurationLogAggregator.IncreaseCount(methodName, (int)ComputeLogValue(requestDuration.TotalMilliseconds)); _requestCounters.GetOrAdd(methodName, (_) => new Counter()).IncrementCount(result); } diff --git a/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs b/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs index 253e1dc07c4a9..c4ae806c8eec7 100644 --- a/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs +++ b/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs @@ -19,7 +19,7 @@ private enum ActionInfo public static void LogGenerateBackgroundInheritanceInfo(TimeSpan elapsedTime) => s_histogramLogAggregator.IncreaseCount( - ActionInfo.GetInheritanceMarginMembers, Convert.ToDecimal(elapsedTime.TotalMilliseconds)); + ActionInfo.GetInheritanceMarginMembers, elapsedTime); public static void LogInheritanceTargetsMenuOpen() => Logger.Log(FunctionId.InheritanceMargin_TargetsMenuOpen, KeyValueLogMessage.Create(LogType.UserAction)); diff --git a/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs b/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs index 8643d926ddc15..44fe12dcf106d 100644 --- a/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs +++ b/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs @@ -32,12 +32,18 @@ public HistogramLogAggregator(int bucketSize, int maxBucketValue) protected override HistogramCounter CreateCounter() => new(_bucketSize, _maxBucketValue, _bucketCount); - public void IncreaseCount(object key, decimal value) + public void IncreaseCount(object key, int value) { var counter = GetCounter(key); counter.IncreaseCount(value); } + public void IncreaseCount(object key, TimeSpan timeSpan) + { + var counter = GetCounter(key); + counter.IncreaseCount((int)timeSpan.TotalMilliseconds); + } + public HistogramCounter? GetValue(object key) { TryGetCounter(key, out var counter); @@ -62,7 +68,7 @@ public HistogramCounter(int bucketSize, int maxBucketValue, int bucketCount) _buckets = new int[BucketCount]; } - public void IncreaseCount(decimal value) + public void IncreaseCount(int value) { var bucket = GetBucket(value); _buckets[bucket]++; @@ -86,9 +92,9 @@ public string GetBucketsAsString() return pooledStringBuilder.ToStringAndFree(); } - private int GetBucket(decimal value) + private int GetBucket(int value) { - var bucket = (int)Math.Floor(value / BucketSize); + var bucket = value / BucketSize; if (bucket >= BucketCount) { bucket = BucketCount - 1; diff --git a/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs b/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs index c0dad86c05102..0c5d04a10bd35 100644 --- a/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs +++ b/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs @@ -4,6 +4,8 @@ #nullable disable +using System; + namespace Microsoft.CodeAnalysis.Internal.Log { internal sealed class StatisticLogAggregator : AbstractLogAggregator @@ -17,6 +19,11 @@ public void AddDataPoint(object key, int value) counter.AddDataPoint(value); } + public void AddDataPoint(object key, TimeSpan timeSpan) + { + AddDataPoint(key, (int)timeSpan.TotalMilliseconds); + } + public StatisticResult GetStaticticResult(object key) { if (TryGetCounter(key, out var counter)) From ef5a90a719f4a62b7a4390b2146326adedaf6f14 Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Thu, 2 Jun 2022 13:32:13 -0700 Subject: [PATCH 07/16] Make our log aggregators generic on the key --- .../AsyncCompletion/AsyncCompletionLogger.cs | 44 ++++++------- .../ChangeSignatureTelemetryLogger.cs | 62 +++++++++---------- .../Log/CompletionProvidersLogger.cs | 38 ++++++------ .../EditAndContinue/DebuggingSession.cs | 2 +- .../SolutionCrawler/SolutionCrawlerLogger.cs | 47 +++++++------- .../SolutionCrawlerRegistrationService.cs | 2 +- ...oordinator.IncrementalAnalyzerProcessor.cs | 8 ++- .../SolutionCrawler/WorkCoordinator.cs | 4 +- ...sticAnalyzerService_IncrementalAnalyzer.cs | 2 +- .../Handler/RequestTelemetryLogger.cs | 12 ++-- .../InheritanceMarginLogger.cs | 2 +- .../CommonFixAllState.cs | 2 +- .../Portable/Log/HistogramLogAggregator.cs | 8 +-- .../Portable/Log/StatisticLogAggregator.cs | 8 +-- .../Workspace/Solution/SolutionLogger.cs | 2 +- .../Core/Log/AbstractLogAggregator.cs | 14 ++--- .../Workspace/Core/Log/LogAggregator.cs | 10 +-- 17 files changed, 135 insertions(+), 132 deletions(-) diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs index ff3080b8a7d92..5e283a3cd4fd6 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs @@ -9,9 +9,9 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.AsyncComplet { internal static class AsyncCompletionLogger { - private static readonly LogAggregator s_logAggregator = new(); - private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); - private static readonly HistogramLogAggregator s_histogramLogAggregator = new(25, 500); + private static readonly LogAggregator s_logAggregator = new(); + private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); + private static readonly HistogramLogAggregator s_histogramLogAggregator = new(25, 500); private enum ActionInfo { @@ -45,34 +45,34 @@ private enum ActionInfo internal static void LogImportCompletionGetContext(bool isBlocking, bool delayed) { - s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithTypeImportCompletionEnabled); + s_logAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); if (isBlocking) - s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithImportCompletionBlocking); + s_logAggregator.IncreaseCount(ActionInfo.SessionWithImportCompletionBlocking); if (delayed) - s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithImportCompletionDelayed); + s_logAggregator.IncreaseCount(ActionInfo.SessionWithImportCompletionDelayed); } internal static void LogSessionWithDelayedImportCompletionIncludedInUpdate() => - s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithDelayedImportCompletionIncludedInUpdate); + s_logAggregator.IncreaseCount(ActionInfo.SessionWithDelayedImportCompletionIncludedInUpdate); internal static void LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint(TimeSpan timeSpan) => - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, timeSpan); + s_histogramLogAggregator.IncreaseCount(ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, timeSpan); internal static void LogDelayedImportCompletionIncluded() => - s_logAggregator.IncreaseCount((int)ActionInfo.SessionWithTypeImportCompletionEnabled); + s_logAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); internal static void LogExpanderUsage() => - s_logAggregator.IncreaseCount((int)ActionInfo.ExpanderUsageCount); + s_logAggregator.IncreaseCount(ActionInfo.ExpanderUsageCount); internal static void LogGetDefaultsMatchTicksDataPoint(int count) => - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.GetDefaultsMatchTicks, count); + s_statisticLogAggregator.AddDataPoint(ActionInfo.GetDefaultsMatchTicks, count); internal static void LogSourceInitializationTicksDataPoint(TimeSpan elapsed) { - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.SourceInitializationTicks, elapsed); - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.SourceInitializationTicks, elapsed); + s_statisticLogAggregator.AddDataPoint(ActionInfo.SourceInitializationTicks, elapsed); + s_histogramLogAggregator.IncreaseCount(ActionInfo.SourceInitializationTicks, elapsed); } internal static void LogSourceGetContextTicksDataPoint(TimeSpan elapsed, bool isCanceled) @@ -81,14 +81,14 @@ internal static void LogSourceGetContextTicksDataPoint(TimeSpan elapsed, bool is ? ActionInfo.SourceGetContextCanceledTicks : ActionInfo.SourceGetContextCompletedTicks; - s_statisticLogAggregator.AddDataPoint((int)key, elapsed); - s_histogramLogAggregator.IncreaseCount((int)key, elapsed); + s_statisticLogAggregator.AddDataPoint(key, elapsed); + s_histogramLogAggregator.IncreaseCount(key, elapsed); } internal static void LogItemManagerSortTicksDataPoint(TimeSpan elapsed) { - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ItemManagerSortTicks, elapsed); - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.ItemManagerSortTicks, elapsed); + s_statisticLogAggregator.AddDataPoint(ActionInfo.ItemManagerSortTicks, elapsed); + s_histogramLogAggregator.IncreaseCount(ActionInfo.ItemManagerSortTicks, elapsed); } internal static void LogItemManagerUpdateDataPoint(TimeSpan elapsed, bool isCanceled) @@ -97,8 +97,8 @@ internal static void LogItemManagerUpdateDataPoint(TimeSpan elapsed, bool isCanc ? ActionInfo.ItemManagerUpdateCanceledTicks : ActionInfo.ItemManagerUpdateCompletedTicks; - s_statisticLogAggregator.AddDataPoint((int)key, elapsed); - s_histogramLogAggregator.IncreaseCount((int)key, elapsed); + s_statisticLogAggregator.AddDataPoint(key, elapsed); + s_histogramLogAggregator.IncreaseCount(key, elapsed); } internal static void ReportTelemetry() @@ -107,7 +107,7 @@ internal static void ReportTelemetry() { foreach (var kv in s_statisticLogAggregator) { - var info = ((ActionInfo)kv.Key).ToString("f"); + var info = kv.Key.ToString("f"); var statistics = kv.Value.GetStatisticResult(); m[CreateProperty(info, nameof(StatisticResult.Maximum))] = statistics.Maximum; @@ -119,13 +119,13 @@ internal static void ReportTelemetry() foreach (var kv in s_logAggregator) { - var mergeInfo = ((ActionInfo)kv.Key).ToString("f"); + var mergeInfo = kv.Key.ToString("f"); m[mergeInfo] = kv.Value.GetCount(); } foreach (var kv in s_histogramLogAggregator) { - var info = ((ActionInfo)kv.Key).ToString("f"); + var info = kv.Key.ToString("f"); m[$"{info}.BucketSize"] = kv.Value.BucketSize; m[$"{info}.MaxBucketValue"] = kv.Value.MaxBucketValue; m[$"{info}.Buckets"] = kv.Value.GetBucketsAsString(); diff --git a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs index 43f2a65db93c6..161a9fbd0cf4c 100644 --- a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs +++ b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs @@ -15,9 +15,9 @@ internal class ChangeSignatureLogger private const string Minimum = nameof(Minimum); private const string Mean = nameof(Mean); - private static readonly LogAggregator s_logAggregator = new(); - private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); - private static readonly HistogramLogAggregator s_histogramLogAggregator = new(bucketSize: 1000, maxBucketValue: 30000); + private static readonly LogAggregator s_logAggregator = new(); + private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); + private static readonly HistogramLogAggregator s_histogramLogAggregator = new(bucketSize: 1000, maxBucketValue: 30000); internal enum ActionInfo { @@ -63,31 +63,31 @@ internal enum ActionInfo } internal static void LogChangeSignatureDialogLaunched() => - s_logAggregator.IncreaseCount((int)ActionInfo.ChangeSignatureDialogLaunched); + s_logAggregator.IncreaseCount(ActionInfo.ChangeSignatureDialogLaunched); internal static void LogChangeSignatureDialogCommitted() => - s_logAggregator.IncreaseCount((int)ActionInfo.ChangeSignatureDialogCommitted); + s_logAggregator.IncreaseCount(ActionInfo.ChangeSignatureDialogCommitted); internal static void LogAddParameterDialogLaunched() => - s_logAggregator.IncreaseCount((int)ActionInfo.AddParameterDialogLaunched); + s_logAggregator.IncreaseCount(ActionInfo.AddParameterDialogLaunched); internal static void LogAddParameterDialogCommitted() => - s_logAggregator.IncreaseCount((int)ActionInfo.AddParameterDialogCommitted); + s_logAggregator.IncreaseCount(ActionInfo.AddParameterDialogCommitted); internal static void LogTransformationInformation(int numOriginalParameters, int numParametersAdded, int numParametersRemoved, bool anyParametersReordered) { LogTransformationCombination(numParametersAdded > 0, numParametersRemoved > 0, anyParametersReordered); - s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSession_OriginalParameterCount, numOriginalParameters); + s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSession_OriginalParameterCount, numOriginalParameters); if (numParametersAdded > 0) { - s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSessionWithAdded_NumberAdded, numParametersAdded); + s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionWithAdded_NumberAdded, numParametersAdded); } if (numParametersRemoved > 0) { - s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSessionWithRemoved_NumberRemoved, numParametersRemoved); + s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionWithRemoved_NumberRemoved, numParametersRemoved); } } @@ -96,88 +96,88 @@ private static void LogTransformationCombination(bool parametersAdded, bool para // All three transformations if (parametersAdded && parametersRemoved && parametersReordered) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionAddedRemovedReordered); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedRemovedReordered); return; } // Two transformations if (parametersAdded && parametersRemoved) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionAddedRemovedOnly); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedRemovedOnly); return; } if (parametersAdded && parametersReordered) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionAddedReorderedOnly); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedReorderedOnly); return; } if (parametersRemoved && parametersReordered) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionRemovedReorderedOnly); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionRemovedReorderedOnly); return; } // One transformation if (parametersAdded) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionAddedOnly); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedOnly); return; } if (parametersRemoved) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionRemovedOnly); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionRemovedOnly); return; } if (parametersReordered) { - s_logAggregator.IncreaseCount((int)ActionInfo.CommittedSessionReorderedOnly); + s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionReorderedOnly); return; } } internal static void LogCommitInformation(int numDeclarationsUpdated, int numCallSitesUpdated, TimeSpan elapsedTime) { - s_logAggregator.IncreaseCount((int)ActionInfo.ChangeSignatureCommitCompleted); + s_logAggregator.IncreaseCount(ActionInfo.ChangeSignatureCommitCompleted); - s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSessionNumberOfDeclarationsUpdated, numDeclarationsUpdated); - s_logAggregator.IncreaseCountBy((int)ActionInfo.CommittedSessionNumberOfCallSitesUpdated, numCallSitesUpdated); + s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfDeclarationsUpdated, numDeclarationsUpdated); + s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfCallSitesUpdated, numCallSitesUpdated); - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.CommittedSessionCommitElapsedMS, (int)elapsedTime.TotalMilliseconds); - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.CommittedSessionCommitElapsedMS, elapsedTime); + s_statisticLogAggregator.AddDataPoint(ActionInfo.CommittedSessionCommitElapsedMS, (int)elapsedTime.TotalMilliseconds); + s_histogramLogAggregator.IncreaseCount(ActionInfo.CommittedSessionCommitElapsedMS, elapsedTime); } internal static void LogAddedParameterTypeBinds() { - s_logAggregator.IncreaseCount((int)ActionInfo.AddedParameterTypeBinds); + s_logAggregator.IncreaseCount(ActionInfo.AddedParameterTypeBinds); } internal static void LogAddedParameterRequired() { - s_logAggregator.IncreaseCount((int)ActionInfo.AddedParameterRequired); + s_logAggregator.IncreaseCount(ActionInfo.AddedParameterRequired); } internal static void LogAddedParameter_ValueExplicit() { - s_logAggregator.IncreaseCount((int)ActionInfo.AddedParameterValueExplicit); + s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueExplicit); } internal static void LogAddedParameter_ValueExplicitNamed() { - s_logAggregator.IncreaseCount((int)ActionInfo.AddedParameterValueExplicitNamed); + s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueExplicitNamed); } internal static void LogAddedParameter_ValueTODO() { - s_logAggregator.IncreaseCount((int)ActionInfo.AddedParameterValueTODO); + s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueTODO); } internal static void LogAddedParameter_ValueOmitted() { - s_logAggregator.IncreaseCount((int)ActionInfo.AddedParameterValueOmitted); + s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueOmitted); } internal static void ReportTelemetry() @@ -186,13 +186,13 @@ internal static void ReportTelemetry() { foreach (var kv in s_logAggregator) { - var info = ((ActionInfo)kv.Key).ToString("f"); + var info = kv.Key.ToString("f"); m[info] = kv.Value.GetCount(); } foreach (var kv in s_statisticLogAggregator) { - var info = ((ActionInfo)kv.Key).ToString("f"); + var info = kv.Key.ToString("f"); var statistics = kv.Value.GetStatisticResult(); m[CreateProperty(info, Maximum)] = statistics.Maximum; @@ -202,7 +202,7 @@ internal static void ReportTelemetry() foreach (var kv in s_histogramLogAggregator) { - var info = ((ActionInfo)kv.Key).ToString("f"); + var info = kv.Key.ToString("f"); m[$"{info}.BucketSize"] = kv.Value.BucketSize; m[$"{info}.MaxBucketValue"] = kv.Value.MaxBucketValue; m[$"{info}.Buckets"] = kv.Value.GetBucketsAsString(); diff --git a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs index e90d53219af3b..c001419ddad92 100644 --- a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs +++ b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs @@ -9,10 +9,10 @@ namespace Microsoft.CodeAnalysis.Completion.Log { internal static class CompletionProvidersLogger { - private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); - private static readonly LogAggregator s_logAggregator = new(); + private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); + private static readonly LogAggregator s_logAggregator = new(); - private static readonly HistogramLogAggregator s_histogramLogAggregator = new(bucketSize: 50, maxBucketValue: 1000); + private static readonly HistogramLogAggregator s_histogramLogAggregator = new(bucketSize: 50, maxBucketValue: 1000); internal enum ActionInfo { @@ -36,50 +36,50 @@ internal enum ActionInfo internal static void LogTypeImportCompletionTicksDataPoint(TimeSpan elapsed) { - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.TypeImportCompletionTicks, elapsed); - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.TypeImportCompletionTicks, elapsed); + s_histogramLogAggregator.IncreaseCount(ActionInfo.TypeImportCompletionTicks, elapsed); + s_statisticLogAggregator.AddDataPoint(ActionInfo.TypeImportCompletionTicks, elapsed); } internal static void LogTypeImportCompletionItemCountDataPoint(int count) => - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.TypeImportCompletionItemCount, count); + s_statisticLogAggregator.AddDataPoint(ActionInfo.TypeImportCompletionItemCount, count); internal static void LogTypeImportCompletionReferenceCountDataPoint(int count) => - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.TypeImportCompletionReferenceCount, count); + s_statisticLogAggregator.AddDataPoint(ActionInfo.TypeImportCompletionReferenceCount, count); internal static void LogTypeImportCompletionCacheMiss() => - s_logAggregator.IncreaseCount((int)ActionInfo.TypeImportCompletionCacheMissCount); + s_logAggregator.IncreaseCount(ActionInfo.TypeImportCompletionCacheMissCount); internal static void LogCommitOfTypeImportCompletionItem() => - s_logAggregator.IncreaseCount((int)ActionInfo.CommitsOfTypeImportCompletionItem); + s_logAggregator.IncreaseCount(ActionInfo.CommitsOfTypeImportCompletionItem); internal static void LogExtensionMethodCompletionTicksDataPoint(TimeSpan total, TimeSpan getSymbols, TimeSpan createItems, bool isRemote) { - s_histogramLogAggregator.IncreaseCount((int)ActionInfo.ExtensionMethodCompletionTicks, total); - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionTicks, total); + s_histogramLogAggregator.IncreaseCount(ActionInfo.ExtensionMethodCompletionTicks, total); + s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionTicks, total); if (isRemote) { - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionRemoteTicks, total - getSymbols - createItems); + s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionRemoteTicks, total - getSymbols - createItems); } - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionGetSymbolsTicks, getSymbols); - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionCreateItemsTicks, createItems); + s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionGetSymbolsTicks, getSymbols); + s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionCreateItemsTicks, createItems); } internal static void LogExtensionMethodCompletionMethodsProvidedDataPoint(int count) => - s_statisticLogAggregator.AddDataPoint((int)ActionInfo.ExtensionMethodCompletionMethodsProvided, count); + s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionMethodsProvided, count); internal static void LogCommitOfExtensionMethodImportCompletionItem() => - s_logAggregator.IncreaseCount((int)ActionInfo.CommitsOfExtensionMethodImportCompletionItem); + s_logAggregator.IncreaseCount(ActionInfo.CommitsOfExtensionMethodImportCompletionItem); internal static void LogExtensionMethodCompletionPartialResultCount() => - s_logAggregator.IncreaseCount((int)ActionInfo.ExtensionMethodCompletionPartialResultCount); + s_logAggregator.IncreaseCount(ActionInfo.ExtensionMethodCompletionPartialResultCount); internal static void LogCommitUsingSemicolonToAddParenthesis() => - s_logAggregator.IncreaseCount((int)ActionInfo.CommitUsingSemicolonToAddParenthesis); + s_logAggregator.IncreaseCount(ActionInfo.CommitUsingSemicolonToAddParenthesis); internal static void LogCommitUsingDotToAddParenthesis() => - s_logAggregator.IncreaseCount((int)ActionInfo.CommitUsingDotToAddParenthesis); + s_logAggregator.IncreaseCount(ActionInfo.CommitUsingDotToAddParenthesis); internal static void LogCustomizedCommitToAddParenthesis(char? commitChar) { diff --git a/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs b/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs index 1f80311fa17b0..401dc3b8feab8 100644 --- a/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs +++ b/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs @@ -1042,7 +1042,7 @@ async Task GetTaskAsync(ProjectId projectId) private static void ReportTelemetry(DebuggingSessionTelemetry.Data data) { // report telemetry (fire and forget): - _ = Task.Run(() => DebuggingSessionTelemetry.Log(data, Logger.Log, LogAggregator.GetNextId)); + _ = Task.Run(() => DebuggingSessionTelemetry.Log(data, Logger.Log, LogAggregator.GetNextId)); } internal TestAccessor GetTestAccessor() diff --git a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs index 181cef3b13f01..df6c28bd75de4 100644 --- a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs +++ b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs @@ -134,10 +134,10 @@ public static void LogWorkCoordinatorShutdownTimeout(int correlationId) })); } - public static void LogWorkspaceEvent(LogAggregator logAggregator, int kind) + public static void LogWorkspaceEvent(LogAggregator logAggregator, WorkspaceChangeKind kind) => logAggregator.IncreaseCount(kind); - public static void LogWorkCoordinatorShutdown(int correlationId, LogAggregator logAggregator) + public static void LogWorkCoordinatorShutdown(int correlationId, LogAggregator logAggregator) { Logger.Log(FunctionId.WorkCoordinator_Shutdown, KeyValueLogMessage.Create(m => { @@ -145,23 +145,23 @@ public static void LogWorkCoordinatorShutdown(int correlationId, LogAggregator l foreach (var kv in logAggregator) { - var change = ((WorkspaceChangeKind)kv.Key).ToString(); + var change = kv.Key.ToString(); m[change] = kv.Value.GetCount(); } })); } - public static void LogGlobalOperation(LogAggregator logAggregator) + public static void LogGlobalOperation(LogAggregator logAggregator) => logAggregator.IncreaseCount(GlobalOperation); - public static void LogActiveFileEnqueue(LogAggregator logAggregator) + public static void LogActiveFileEnqueue(LogAggregator logAggregator) => logAggregator.IncreaseCount(ActiveFileEnqueue); - public static void LogWorkItemEnqueue(LogAggregator logAggregator, ProjectId _) + public static void LogWorkItemEnqueue(LogAggregator logAggregator, ProjectId _) => logAggregator.IncreaseCount(ProjectEnqueue); public static void LogWorkItemEnqueue( - LogAggregator logAggregator, string language, DocumentId? documentId, InvocationReasons reasons, bool lowPriority, SyntaxPath? activeMember, bool added) + LogAggregator logAggregator, string language, DocumentId? documentId, InvocationReasons reasons, bool lowPriority, SyntaxPath? activeMember, bool added) { logAggregator.IncreaseCount(language); logAggregator.IncreaseCount(added ? NewWorkItem : UpdateWorkItem); @@ -183,16 +183,16 @@ public static void LogWorkItemEnqueue( } } - public static void LogHigherPriority(LogAggregator logAggregator, Guid documentId) + public static void LogHigherPriority(LogAggregator logAggregator, Guid documentId) { logAggregator.IncreaseCount(HigherPriority); logAggregator.IncreaseCount(ValueTuple.Create(HigherPriority, documentId)); } - public static void LogResetStates(LogAggregator logAggregator) + public static void LogResetStates(LogAggregator logAggregator) => logAggregator.IncreaseCount(ResetStates); - public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, Solution solution, LogAggregator logAggregator, ImmutableArray analyzers) + public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, Solution solution, LogAggregator logAggregator, ImmutableArray analyzers) { Logger.Log(FunctionId.IncrementalAnalyzerProcessor_Shutdown, KeyValueLogMessage.Create(m => { @@ -207,22 +207,21 @@ public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, if (key is string stringKey) { m[stringKey] = counter.GetCount(); - continue; } - - if (key is ValueTuple propertyNameAndId) + else if (key is ValueTuple propertyNameAndId) { var list = statMap.GetOrAdd(propertyNameAndId.Item1, _ => new List()); list.Add(counter.GetCount()); - continue; } - - throw ExceptionUtilities.Unreachable; + else + { + throw ExceptionUtilities.Unreachable; + } } foreach (var (propertyName, propertyValues) in statMap) { - var result = LogAggregator.GetStatistics(propertyValues); + var result = LogAggregator.GetStatistics(propertyValues); m[CreateProperty(propertyName, Max)] = result.Maximum; m[CreateProperty(propertyName, Min)] = result.Minimum; @@ -253,19 +252,19 @@ private static int GetSolutionHash(Solution solution) private static string CreateProperty(string parent, string child) => parent + "." + child; - public static void LogProcessCloseDocument(LogAggregator logAggregator, Guid documentId) + public static void LogProcessCloseDocument(LogAggregator logAggregator, Guid documentId) { logAggregator.IncreaseCount(CloseDocument); logAggregator.IncreaseCount(ValueTuple.Create(CloseDocument, documentId)); } - public static void LogProcessOpenDocument(LogAggregator logAggregator, Guid documentId) + public static void LogProcessOpenDocument(LogAggregator logAggregator, Guid documentId) { logAggregator.IncreaseCount(OpenDocument); logAggregator.IncreaseCount(ValueTuple.Create(OpenDocument, documentId)); } - public static void LogProcessActiveFileDocument(LogAggregator logAggregator, Guid _, bool processed) + public static void LogProcessActiveFileDocument(LogAggregator logAggregator, Guid _, bool processed) { if (processed) { @@ -277,7 +276,7 @@ public static void LogProcessActiveFileDocument(LogAggregator logAggregator, Gui } } - public static void LogProcessDocument(LogAggregator logAggregator, Guid documentId, bool processed) + public static void LogProcessDocument(LogAggregator logAggregator, Guid documentId, bool processed) { if (processed) { @@ -291,10 +290,10 @@ public static void LogProcessDocument(LogAggregator logAggregator, Guid document logAggregator.IncreaseCount(ValueTuple.Create(ProcessDocument, documentId)); } - public static void LogProcessDocumentNotExist(LogAggregator logAggregator) + public static void LogProcessDocumentNotExist(LogAggregator logAggregator) => logAggregator.IncreaseCount(DocumentNotExist); - public static void LogProcessProject(LogAggregator logAggregator, Guid projectId, bool processed) + public static void LogProcessProject(LogAggregator logAggregator, Guid projectId, bool processed) { if (processed) { @@ -308,7 +307,7 @@ public static void LogProcessProject(LogAggregator logAggregator, Guid projectId logAggregator.IncreaseCount(ValueTuple.Create(ProcessProject, projectId)); } - public static void LogProcessProjectNotExist(LogAggregator logAggregator) + public static void LogProcessProjectNotExist(LogAggregator logAggregator) => logAggregator.IncreaseCount(ProjectNotExist); } } diff --git a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs index b5def68057044..f0be197426342 100644 --- a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs +++ b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs @@ -62,7 +62,7 @@ public void EnsureRegistration(Workspace workspace, bool initializeLazily) { Contract.ThrowIfNull(workspace.Kind); - var correlationId = LogAggregator.GetNextId(); + var correlationId = LogAggregator.GetNextId(); lock (_gate) { diff --git a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs index f4a317aceaad5..fdd00d4b09d14 100644 --- a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs +++ b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs @@ -42,7 +42,11 @@ private partial class IncrementalAnalyzerProcessor // NOTE: IDiagnosticAnalyzerService can be null in test environment. private readonly Lazy _lazyDiagnosticAnalyzerService; - private LogAggregator _logAggregator = new(); + /// + /// The keys in this are either a string or a (string, Guid) tuple. See + /// for what is writing this out. + /// + private LogAggregator _logAggregator = new(); public IncrementalAnalyzerProcessor( IAsynchronousOperationListener listener, @@ -150,7 +154,7 @@ private IEnumerable GetOpenDocumentIds() => _registration.Workspace.GetOpenDocumentIds(); private void ResetLogAggregator() - => _logAggregator = new LogAggregator(); + => _logAggregator = new LogAggregator(); private void ReportPendingWorkItemCount() { diff --git a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs index cf3c7a1f63683..56cc2553d27c1 100644 --- a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs +++ b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs @@ -24,7 +24,7 @@ internal sealed partial class WorkCoordinator private readonly Registration _registration; private readonly object _gate = new(); - private readonly LogAggregator _logAggregator = new(); + private readonly LogAggregator _logAggregator = new(); private readonly IAsynchronousOperationListener _listener; private readonly IDocumentTrackingService _documentTrackingService; private readonly IWorkspaceConfigurationService? _workspaceConfigurationService; @@ -192,7 +192,7 @@ private bool NotOurShutdownToken(OperationCanceledException oce) private void ProcessEvent(WorkspaceChangeEventArgs args, string eventName) { - SolutionCrawlerLogger.LogWorkspaceEvent(_logAggregator, (int)args.Kind); + SolutionCrawlerLogger.LogWorkspaceEvent(_logAggregator, args.Kind); // TODO: add telemetry that record how much it takes to process an event (max, min, average and etc) switch (args.Kind) diff --git a/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs b/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs index 4a8469a9ee997..fa0cfce888a92 100644 --- a/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs +++ b/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs @@ -49,7 +49,7 @@ private DiagnosticIncrementalAnalyzer CreateIncrementalAnalyzerCallback(Workspac // subscribe to active context changed event for new workspace workspace.DocumentActiveContextChanged += OnDocumentActiveContextChanged; - return new DiagnosticIncrementalAnalyzer(this, LogAggregator.GetNextId(), workspace, AnalyzerInfoCache); + return new DiagnosticIncrementalAnalyzer(this, LogAggregator.GetNextId(), workspace, AnalyzerInfoCache); } private void OnDocumentActiveContextChanged(object? sender, DocumentActiveContextChangedEventArgs e) diff --git a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs index 36fe409203657..742e7fde95117 100644 --- a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs +++ b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs @@ -24,7 +24,7 @@ internal sealed class RequestTelemetryLogger : IDisposable, ILspService /// /// Histogram to aggregate the time in queue metrics. /// - private readonly HistogramLogAggregator _queuedDurationLogAggregator; + private readonly HistogramLogAggregator _queuedDurationLogAggregator; /// /// Histogram to aggregate total request duration metrics. @@ -34,7 +34,7 @@ internal sealed class RequestTelemetryLogger : IDisposable, ILspService /// This provides highly detailed buckets when duration is in MS, but less detailed /// when the duration is in terms of seconds or minutes. /// - private readonly HistogramLogAggregator _requestDurationLogAggregator; + private readonly HistogramLogAggregator _requestDurationLogAggregator; /// /// Store request counters in a concurrent dictionary as non-mutating LSP requests can @@ -42,9 +42,9 @@ internal sealed class RequestTelemetryLogger : IDisposable, ILspService /// private readonly ConcurrentDictionary _requestCounters; - private readonly LogAggregator _findDocumentResults; + private readonly LogAggregator _findDocumentResults; - private readonly LogAggregator _usedForkedSolutionCounter; + private readonly LogAggregator _usedForkedSolutionCounter; private int _disposed; @@ -57,11 +57,11 @@ public RequestTelemetryLogger(string serverTypeName) // Buckets queued duration into 10ms buckets with the last bucket starting at 1000ms. // Queue times are relatively short and fall under 50ms, so tracking past 1000ms is not useful. - _queuedDurationLogAggregator = new HistogramLogAggregator(bucketSize: 10, maxBucketValue: 1000); + _queuedDurationLogAggregator = new HistogramLogAggregator(bucketSize: 10, maxBucketValue: 1000); // Since this is a log based histogram, these are appropriate bucket sizes for the log data. // A bucket at 1 corresponds to ~26ms, while the max bucket value corresponds to ~17minutes - _requestDurationLogAggregator = new HistogramLogAggregator(bucketSize: 1, maxBucketValue: 40); + _requestDurationLogAggregator = new HistogramLogAggregator(bucketSize: 1, maxBucketValue: 40); } public void UpdateFindDocumentTelemetryData(bool success, string? workspaceKind) diff --git a/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs b/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs index c4ae806c8eec7..9d192e939f2fe 100644 --- a/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs +++ b/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs @@ -10,7 +10,7 @@ namespace Microsoft.VisualStudio.LanguageServices.InheritanceMargin internal static class InheritanceMarginLogger { // 1 sec per bucket, and if it takes more than 1 min, then this log is considered as time-out in the last bucket. - private static readonly HistogramLogAggregator s_histogramLogAggregator = new(1000, 60000); + private static readonly HistogramLogAggregator s_histogramLogAggregator = new(1000, 60000); private enum ActionInfo { diff --git a/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs b/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs index 9f051c30b102e..5e520fb5a3228 100644 --- a/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs +++ b/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs @@ -13,7 +13,7 @@ internal abstract partial class CommonFixAllState { - public int CorrelationId { get; } = LogAggregator.GetNextId(); + public int CorrelationId { get; } = LogAggregator.GetNextId(); public TFixAllProvider FixAllProvider { get; } public string? CodeActionEquivalenceKey { get; } public TProvider Provider { get; } diff --git a/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs b/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs index 44fe12dcf106d..670fa554761c0 100644 --- a/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs +++ b/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs @@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Internal.Log /// /// Defines a log aggregator to create a histogram /// - internal sealed class HistogramLogAggregator : AbstractLogAggregator + internal sealed class HistogramLogAggregator : AbstractLogAggregator.HistogramCounter> { private readonly int _bucketSize; private readonly int _maxBucketValue; @@ -32,19 +32,19 @@ public HistogramLogAggregator(int bucketSize, int maxBucketValue) protected override HistogramCounter CreateCounter() => new(_bucketSize, _maxBucketValue, _bucketCount); - public void IncreaseCount(object key, int value) + public void IncreaseCount(TKey key, int value) { var counter = GetCounter(key); counter.IncreaseCount(value); } - public void IncreaseCount(object key, TimeSpan timeSpan) + public void IncreaseCount(TKey key, TimeSpan timeSpan) { var counter = GetCounter(key); counter.IncreaseCount((int)timeSpan.TotalMilliseconds); } - public HistogramCounter? GetValue(object key) + public HistogramCounter? GetValue(TKey key) { TryGetCounter(key, out var counter); return counter; diff --git a/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs b/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs index 0c5d04a10bd35..afe08bbbb0972 100644 --- a/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs +++ b/src/Workspaces/Core/Portable/Log/StatisticLogAggregator.cs @@ -8,23 +8,23 @@ namespace Microsoft.CodeAnalysis.Internal.Log { - internal sealed class StatisticLogAggregator : AbstractLogAggregator + internal sealed class StatisticLogAggregator : AbstractLogAggregator.StatisticCounter> { protected override StatisticCounter CreateCounter() => new(); - public void AddDataPoint(object key, int value) + public void AddDataPoint(TKey key, int value) { var counter = GetCounter(key); counter.AddDataPoint(value); } - public void AddDataPoint(object key, TimeSpan timeSpan) + public void AddDataPoint(TKey key, TimeSpan timeSpan) { AddDataPoint(key, (int)timeSpan.TotalMilliseconds); } - public StatisticResult GetStaticticResult(object key) + public StatisticResult GetStaticticResult(TKey key) { if (TryGetCounter(key, out var counter)) { diff --git a/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs b/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs index c59b5ecfe193a..6cc780a7ac2b6 100644 --- a/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs +++ b/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs @@ -10,7 +10,7 @@ namespace Microsoft.CodeAnalysis.Logging { internal static class SolutionLogger { - private static readonly LogAggregator s_logAggregator = new(); + private static readonly LogAggregator s_logAggregator = new(); public static void UseExistingPartialProjectState() => s_logAggregator.IncreaseCount(nameof(UseExistingPartialProjectState)); diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs index 4a17ae05cfdd3..e000a1c7e74ab 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs @@ -17,19 +17,19 @@ namespace Microsoft.CodeAnalysis.Internal.Log /// /// helper class to aggregate some numeric value log in client side /// - internal abstract class AbstractLogAggregator : IEnumerable> + internal abstract class AbstractLogAggregator : IEnumerable> { private static int s_globalId; - private readonly ConcurrentDictionary _map = new(concurrencyLevel: 2, capacity: 2); - private readonly Func _createCounter; + private readonly ConcurrentDictionary _map = new(concurrencyLevel: 2, capacity: 2); + private readonly Func _createCounter; protected AbstractLogAggregator() { _createCounter = _ => CreateCounter(); } - protected abstract T CreateCounter(); + protected abstract TValue CreateCounter(); public static int GetNextId() => Interlocked.Increment(ref s_globalId); @@ -65,17 +65,17 @@ public static StatisticResult GetStatistics(List values) public bool IsEmpty => _map.IsEmpty; - public IEnumerator> GetEnumerator() + public IEnumerator> GetEnumerator() => _map.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => this.GetEnumerator(); [PerformanceSensitive("https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1279909", AllowCaptures = false)] - protected T GetCounter(object key) + protected TValue GetCounter(TKey key) => _map.GetOrAdd(key, _createCounter); - protected bool TryGetCounter(object key, out T counter) + protected bool TryGetCounter(TKey key, out TValue counter) { if (_map.TryGetValue(key, out counter)) { diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs index 96aa557eaf4ff..7e1a6669b7765 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs @@ -8,30 +8,30 @@ namespace Microsoft.CodeAnalysis.Internal.Log { - internal class LogAggregator : AbstractLogAggregator + internal class LogAggregator : AbstractLogAggregator.Counter> { protected override Counter CreateCounter() => new(); - public void SetCount(object key, int count) + public void SetCount(TKey key, int count) { var counter = GetCounter(key); counter.SetCount(count); } - public void IncreaseCount(object key) + public void IncreaseCount(TKey key) { var counter = GetCounter(key); counter.IncreaseCount(); } - public void IncreaseCountBy(object key, int value) + public void IncreaseCountBy(TKey key, int value) { var counter = GetCounter(key); counter.IncreaseCountBy(value); } - public int GetCount(object key) + public int GetCount(TKey key) { if (TryGetCounter(key, out var counter)) { From 49b0ad5337bbfc861adc6cbbfb88b401b60c2673 Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Tue, 7 Jun 2022 16:37:28 -0700 Subject: [PATCH 08/16] Rename LogAggregator to CountLogAggregator Makes it clear this is not a base type of the other ones. --- .../AsyncCompletion/AsyncCompletionLogger.cs | 16 +++--- .../ChangeSignatureTelemetryLogger.cs | 50 +++++++++---------- .../Log/CompletionProvidersLogger.cs | 16 +++--- .../EditAndContinue/DebuggingSession.cs | 2 +- .../SolutionCrawler/SolutionCrawlerLogger.cs | 34 ++++++------- .../SolutionCrawlerRegistrationService.cs | 2 +- ...oordinator.IncrementalAnalyzerProcessor.cs | 4 +- .../SolutionCrawler/WorkCoordinator.cs | 2 +- ...sticAnalyzerService_IncrementalAnalyzer.cs | 2 +- .../Handler/RequestTelemetryLogger.cs | 4 +- .../CommonFixAllState.cs | 2 +- .../Workspace/Solution/SolutionLogger.cs | 2 +- ...LogAggregator.cs => CountLogAggregator.cs} | 2 +- .../Core/WorkspaceExtensions.projitems | 2 +- 14 files changed, 70 insertions(+), 70 deletions(-) rename src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/{LogAggregator.cs => CountLogAggregator.cs} (94%) diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs index 5e283a3cd4fd6..003f96f6d042e 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs @@ -9,7 +9,7 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.AsyncComplet { internal static class AsyncCompletionLogger { - private static readonly LogAggregator s_logAggregator = new(); + private static readonly CountLogAggregator s_countLogAggregator = new(); private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); private static readonly HistogramLogAggregator s_histogramLogAggregator = new(25, 500); @@ -45,26 +45,26 @@ private enum ActionInfo internal static void LogImportCompletionGetContext(bool isBlocking, bool delayed) { - s_logAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); + s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); if (isBlocking) - s_logAggregator.IncreaseCount(ActionInfo.SessionWithImportCompletionBlocking); + s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithImportCompletionBlocking); if (delayed) - s_logAggregator.IncreaseCount(ActionInfo.SessionWithImportCompletionDelayed); + s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithImportCompletionDelayed); } internal static void LogSessionWithDelayedImportCompletionIncludedInUpdate() => - s_logAggregator.IncreaseCount(ActionInfo.SessionWithDelayedImportCompletionIncludedInUpdate); + s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithDelayedImportCompletionIncludedInUpdate); internal static void LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint(TimeSpan timeSpan) => s_histogramLogAggregator.IncreaseCount(ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, timeSpan); internal static void LogDelayedImportCompletionIncluded() => - s_logAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); + s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); internal static void LogExpanderUsage() => - s_logAggregator.IncreaseCount(ActionInfo.ExpanderUsageCount); + s_countLogAggregator.IncreaseCount(ActionInfo.ExpanderUsageCount); internal static void LogGetDefaultsMatchTicksDataPoint(int count) => s_statisticLogAggregator.AddDataPoint(ActionInfo.GetDefaultsMatchTicks, count); @@ -117,7 +117,7 @@ internal static void ReportTelemetry() m[CreateProperty(info, nameof(StatisticResult.Count))] = statistics.Count; } - foreach (var kv in s_logAggregator) + foreach (var kv in s_countLogAggregator) { var mergeInfo = kv.Key.ToString("f"); m[mergeInfo] = kv.Value.GetCount(); diff --git a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs index 161a9fbd0cf4c..c03fe028988dc 100644 --- a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs +++ b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs @@ -15,7 +15,7 @@ internal class ChangeSignatureLogger private const string Minimum = nameof(Minimum); private const string Mean = nameof(Mean); - private static readonly LogAggregator s_logAggregator = new(); + private static readonly CountLogAggregator s_countLogAggregator = new(); private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); private static readonly HistogramLogAggregator s_histogramLogAggregator = new(bucketSize: 1000, maxBucketValue: 30000); @@ -63,31 +63,31 @@ internal enum ActionInfo } internal static void LogChangeSignatureDialogLaunched() => - s_logAggregator.IncreaseCount(ActionInfo.ChangeSignatureDialogLaunched); + s_countLogAggregator.IncreaseCount(ActionInfo.ChangeSignatureDialogLaunched); internal static void LogChangeSignatureDialogCommitted() => - s_logAggregator.IncreaseCount(ActionInfo.ChangeSignatureDialogCommitted); + s_countLogAggregator.IncreaseCount(ActionInfo.ChangeSignatureDialogCommitted); internal static void LogAddParameterDialogLaunched() => - s_logAggregator.IncreaseCount(ActionInfo.AddParameterDialogLaunched); + s_countLogAggregator.IncreaseCount(ActionInfo.AddParameterDialogLaunched); internal static void LogAddParameterDialogCommitted() => - s_logAggregator.IncreaseCount(ActionInfo.AddParameterDialogCommitted); + s_countLogAggregator.IncreaseCount(ActionInfo.AddParameterDialogCommitted); internal static void LogTransformationInformation(int numOriginalParameters, int numParametersAdded, int numParametersRemoved, bool anyParametersReordered) { LogTransformationCombination(numParametersAdded > 0, numParametersRemoved > 0, anyParametersReordered); - s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSession_OriginalParameterCount, numOriginalParameters); + s_countLogAggregator.IncreaseCountBy(ActionInfo.CommittedSession_OriginalParameterCount, numOriginalParameters); if (numParametersAdded > 0) { - s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionWithAdded_NumberAdded, numParametersAdded); + s_countLogAggregator.IncreaseCountBy(ActionInfo.CommittedSessionWithAdded_NumberAdded, numParametersAdded); } if (numParametersRemoved > 0) { - s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionWithRemoved_NumberRemoved, numParametersRemoved); + s_countLogAggregator.IncreaseCountBy(ActionInfo.CommittedSessionWithRemoved_NumberRemoved, numParametersRemoved); } } @@ -96,55 +96,55 @@ private static void LogTransformationCombination(bool parametersAdded, bool para // All three transformations if (parametersAdded && parametersRemoved && parametersReordered) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedRemovedReordered); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedRemovedReordered); return; } // Two transformations if (parametersAdded && parametersRemoved) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedRemovedOnly); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedRemovedOnly); return; } if (parametersAdded && parametersReordered) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedReorderedOnly); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedReorderedOnly); return; } if (parametersRemoved && parametersReordered) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionRemovedReorderedOnly); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionRemovedReorderedOnly); return; } // One transformation if (parametersAdded) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedOnly); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionAddedOnly); return; } if (parametersRemoved) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionRemovedOnly); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionRemovedOnly); return; } if (parametersReordered) { - s_logAggregator.IncreaseCount(ActionInfo.CommittedSessionReorderedOnly); + s_countLogAggregator.IncreaseCount(ActionInfo.CommittedSessionReorderedOnly); return; } } internal static void LogCommitInformation(int numDeclarationsUpdated, int numCallSitesUpdated, TimeSpan elapsedTime) { - s_logAggregator.IncreaseCount(ActionInfo.ChangeSignatureCommitCompleted); + s_countLogAggregator.IncreaseCount(ActionInfo.ChangeSignatureCommitCompleted); - s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfDeclarationsUpdated, numDeclarationsUpdated); - s_logAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfCallSitesUpdated, numCallSitesUpdated); + s_countLogAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfDeclarationsUpdated, numDeclarationsUpdated); + s_countLogAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfCallSitesUpdated, numCallSitesUpdated); s_statisticLogAggregator.AddDataPoint(ActionInfo.CommittedSessionCommitElapsedMS, (int)elapsedTime.TotalMilliseconds); s_histogramLogAggregator.IncreaseCount(ActionInfo.CommittedSessionCommitElapsedMS, elapsedTime); @@ -152,39 +152,39 @@ internal static void LogCommitInformation(int numDeclarationsUpdated, int numCal internal static void LogAddedParameterTypeBinds() { - s_logAggregator.IncreaseCount(ActionInfo.AddedParameterTypeBinds); + s_countLogAggregator.IncreaseCount(ActionInfo.AddedParameterTypeBinds); } internal static void LogAddedParameterRequired() { - s_logAggregator.IncreaseCount(ActionInfo.AddedParameterRequired); + s_countLogAggregator.IncreaseCount(ActionInfo.AddedParameterRequired); } internal static void LogAddedParameter_ValueExplicit() { - s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueExplicit); + s_countLogAggregator.IncreaseCount(ActionInfo.AddedParameterValueExplicit); } internal static void LogAddedParameter_ValueExplicitNamed() { - s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueExplicitNamed); + s_countLogAggregator.IncreaseCount(ActionInfo.AddedParameterValueExplicitNamed); } internal static void LogAddedParameter_ValueTODO() { - s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueTODO); + s_countLogAggregator.IncreaseCount(ActionInfo.AddedParameterValueTODO); } internal static void LogAddedParameter_ValueOmitted() { - s_logAggregator.IncreaseCount(ActionInfo.AddedParameterValueOmitted); + s_countLogAggregator.IncreaseCount(ActionInfo.AddedParameterValueOmitted); } internal static void ReportTelemetry() { Logger.Log(FunctionId.ChangeSignature_Data, KeyValueLogMessage.Create(m => { - foreach (var kv in s_logAggregator) + foreach (var kv in s_countLogAggregator) { var info = kv.Key.ToString("f"); m[info] = kv.Value.GetCount(); diff --git a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs index c001419ddad92..2bdf26380135a 100644 --- a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs +++ b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs @@ -10,7 +10,7 @@ namespace Microsoft.CodeAnalysis.Completion.Log internal static class CompletionProvidersLogger { private static readonly StatisticLogAggregator s_statisticLogAggregator = new(); - private static readonly LogAggregator s_logAggregator = new(); + private static readonly CountLogAggregator s_countLogAggregator = new(); private static readonly HistogramLogAggregator s_histogramLogAggregator = new(bucketSize: 50, maxBucketValue: 1000); @@ -47,10 +47,10 @@ internal static void LogTypeImportCompletionReferenceCountDataPoint(int count) = s_statisticLogAggregator.AddDataPoint(ActionInfo.TypeImportCompletionReferenceCount, count); internal static void LogTypeImportCompletionCacheMiss() => - s_logAggregator.IncreaseCount(ActionInfo.TypeImportCompletionCacheMissCount); + s_countLogAggregator.IncreaseCount(ActionInfo.TypeImportCompletionCacheMissCount); internal static void LogCommitOfTypeImportCompletionItem() => - s_logAggregator.IncreaseCount(ActionInfo.CommitsOfTypeImportCompletionItem); + s_countLogAggregator.IncreaseCount(ActionInfo.CommitsOfTypeImportCompletionItem); internal static void LogExtensionMethodCompletionTicksDataPoint(TimeSpan total, TimeSpan getSymbols, TimeSpan createItems, bool isRemote) { @@ -70,16 +70,16 @@ internal static void LogExtensionMethodCompletionMethodsProvidedDataPoint(int co s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionMethodsProvided, count); internal static void LogCommitOfExtensionMethodImportCompletionItem() => - s_logAggregator.IncreaseCount(ActionInfo.CommitsOfExtensionMethodImportCompletionItem); + s_countLogAggregator.IncreaseCount(ActionInfo.CommitsOfExtensionMethodImportCompletionItem); internal static void LogExtensionMethodCompletionPartialResultCount() => - s_logAggregator.IncreaseCount(ActionInfo.ExtensionMethodCompletionPartialResultCount); + s_countLogAggregator.IncreaseCount(ActionInfo.ExtensionMethodCompletionPartialResultCount); internal static void LogCommitUsingSemicolonToAddParenthesis() => - s_logAggregator.IncreaseCount(ActionInfo.CommitUsingSemicolonToAddParenthesis); + s_countLogAggregator.IncreaseCount(ActionInfo.CommitUsingSemicolonToAddParenthesis); internal static void LogCommitUsingDotToAddParenthesis() => - s_logAggregator.IncreaseCount(ActionInfo.CommitUsingDotToAddParenthesis); + s_countLogAggregator.IncreaseCount(ActionInfo.CommitUsingDotToAddParenthesis); internal static void LogCustomizedCommitToAddParenthesis(char? commitChar) { @@ -110,7 +110,7 @@ internal static void ReportTelemetry() m[CreateProperty(info, nameof(statistics.Count))] = statistics.Count; } - foreach (var kv in s_logAggregator) + foreach (var kv in s_countLogAggregator) { var info = ((ActionInfo)kv.Key).ToString("f"); m[info] = kv.Value.GetCount(); diff --git a/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs b/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs index 401dc3b8feab8..e52921095ebab 100644 --- a/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs +++ b/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs @@ -1042,7 +1042,7 @@ async Task GetTaskAsync(ProjectId projectId) private static void ReportTelemetry(DebuggingSessionTelemetry.Data data) { // report telemetry (fire and forget): - _ = Task.Run(() => DebuggingSessionTelemetry.Log(data, Logger.Log, LogAggregator.GetNextId)); + _ = Task.Run(() => DebuggingSessionTelemetry.Log(data, Logger.Log, CountLogAggregator.GetNextId)); } internal TestAccessor GetTestAccessor() diff --git a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs index df6c28bd75de4..16351c4979471 100644 --- a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs +++ b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs @@ -134,10 +134,10 @@ public static void LogWorkCoordinatorShutdownTimeout(int correlationId) })); } - public static void LogWorkspaceEvent(LogAggregator logAggregator, WorkspaceChangeKind kind) + public static void LogWorkspaceEvent(CountLogAggregator logAggregator, WorkspaceChangeKind kind) => logAggregator.IncreaseCount(kind); - public static void LogWorkCoordinatorShutdown(int correlationId, LogAggregator logAggregator) + public static void LogWorkCoordinatorShutdown(int correlationId, CountLogAggregator logAggregator) { Logger.Log(FunctionId.WorkCoordinator_Shutdown, KeyValueLogMessage.Create(m => { @@ -151,17 +151,17 @@ public static void LogWorkCoordinatorShutdown(int correlationId, LogAggregator logAggregator) + public static void LogGlobalOperation(CountLogAggregator logAggregator) => logAggregator.IncreaseCount(GlobalOperation); - public static void LogActiveFileEnqueue(LogAggregator logAggregator) + public static void LogActiveFileEnqueue(CountLogAggregator logAggregator) => logAggregator.IncreaseCount(ActiveFileEnqueue); - public static void LogWorkItemEnqueue(LogAggregator logAggregator, ProjectId _) + public static void LogWorkItemEnqueue(CountLogAggregator logAggregator, ProjectId _) => logAggregator.IncreaseCount(ProjectEnqueue); public static void LogWorkItemEnqueue( - LogAggregator logAggregator, string language, DocumentId? documentId, InvocationReasons reasons, bool lowPriority, SyntaxPath? activeMember, bool added) + CountLogAggregator logAggregator, string language, DocumentId? documentId, InvocationReasons reasons, bool lowPriority, SyntaxPath? activeMember, bool added) { logAggregator.IncreaseCount(language); logAggregator.IncreaseCount(added ? NewWorkItem : UpdateWorkItem); @@ -183,16 +183,16 @@ public static void LogWorkItemEnqueue( } } - public static void LogHigherPriority(LogAggregator logAggregator, Guid documentId) + public static void LogHigherPriority(CountLogAggregator logAggregator, Guid documentId) { logAggregator.IncreaseCount(HigherPriority); logAggregator.IncreaseCount(ValueTuple.Create(HigherPriority, documentId)); } - public static void LogResetStates(LogAggregator logAggregator) + public static void LogResetStates(CountLogAggregator logAggregator) => logAggregator.IncreaseCount(ResetStates); - public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, Solution solution, LogAggregator logAggregator, ImmutableArray analyzers) + public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, Solution solution, CountLogAggregator logAggregator, ImmutableArray analyzers) { Logger.Log(FunctionId.IncrementalAnalyzerProcessor_Shutdown, KeyValueLogMessage.Create(m => { @@ -221,7 +221,7 @@ public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, foreach (var (propertyName, propertyValues) in statMap) { - var result = LogAggregator.GetStatistics(propertyValues); + var result = CountLogAggregator.GetStatistics(propertyValues); m[CreateProperty(propertyName, Max)] = result.Maximum; m[CreateProperty(propertyName, Min)] = result.Minimum; @@ -252,19 +252,19 @@ private static int GetSolutionHash(Solution solution) private static string CreateProperty(string parent, string child) => parent + "." + child; - public static void LogProcessCloseDocument(LogAggregator logAggregator, Guid documentId) + public static void LogProcessCloseDocument(CountLogAggregator logAggregator, Guid documentId) { logAggregator.IncreaseCount(CloseDocument); logAggregator.IncreaseCount(ValueTuple.Create(CloseDocument, documentId)); } - public static void LogProcessOpenDocument(LogAggregator logAggregator, Guid documentId) + public static void LogProcessOpenDocument(CountLogAggregator logAggregator, Guid documentId) { logAggregator.IncreaseCount(OpenDocument); logAggregator.IncreaseCount(ValueTuple.Create(OpenDocument, documentId)); } - public static void LogProcessActiveFileDocument(LogAggregator logAggregator, Guid _, bool processed) + public static void LogProcessActiveFileDocument(CountLogAggregator logAggregator, Guid _, bool processed) { if (processed) { @@ -276,7 +276,7 @@ public static void LogProcessActiveFileDocument(LogAggregator logAggrega } } - public static void LogProcessDocument(LogAggregator logAggregator, Guid documentId, bool processed) + public static void LogProcessDocument(CountLogAggregator logAggregator, Guid documentId, bool processed) { if (processed) { @@ -290,10 +290,10 @@ public static void LogProcessDocument(LogAggregator logAggregator, Guid logAggregator.IncreaseCount(ValueTuple.Create(ProcessDocument, documentId)); } - public static void LogProcessDocumentNotExist(LogAggregator logAggregator) + public static void LogProcessDocumentNotExist(CountLogAggregator logAggregator) => logAggregator.IncreaseCount(DocumentNotExist); - public static void LogProcessProject(LogAggregator logAggregator, Guid projectId, bool processed) + public static void LogProcessProject(CountLogAggregator logAggregator, Guid projectId, bool processed) { if (processed) { @@ -307,7 +307,7 @@ public static void LogProcessProject(LogAggregator logAggregator, Guid p logAggregator.IncreaseCount(ValueTuple.Create(ProcessProject, projectId)); } - public static void LogProcessProjectNotExist(LogAggregator logAggregator) + public static void LogProcessProjectNotExist(CountLogAggregator logAggregator) => logAggregator.IncreaseCount(ProjectNotExist); } } diff --git a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs index f0be197426342..aeccb3e2082ec 100644 --- a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs +++ b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs @@ -62,7 +62,7 @@ public void EnsureRegistration(Workspace workspace, bool initializeLazily) { Contract.ThrowIfNull(workspace.Kind); - var correlationId = LogAggregator.GetNextId(); + var correlationId = CountLogAggregator.GetNextId(); lock (_gate) { diff --git a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs index fdd00d4b09d14..2412aed423528 100644 --- a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs +++ b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.IncrementalAnalyzerProcessor.cs @@ -46,7 +46,7 @@ private partial class IncrementalAnalyzerProcessor /// The keys in this are either a string or a (string, Guid) tuple. See /// for what is writing this out. /// - private LogAggregator _logAggregator = new(); + private CountLogAggregator _logAggregator = new(); public IncrementalAnalyzerProcessor( IAsynchronousOperationListener listener, @@ -154,7 +154,7 @@ private IEnumerable GetOpenDocumentIds() => _registration.Workspace.GetOpenDocumentIds(); private void ResetLogAggregator() - => _logAggregator = new LogAggregator(); + => _logAggregator = new CountLogAggregator(); private void ReportPendingWorkItemCount() { diff --git a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs index 56cc2553d27c1..9484183220b3e 100644 --- a/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs +++ b/src/Features/Core/Portable/SolutionCrawler/WorkCoordinator.cs @@ -24,7 +24,7 @@ internal sealed partial class WorkCoordinator private readonly Registration _registration; private readonly object _gate = new(); - private readonly LogAggregator _logAggregator = new(); + private readonly CountLogAggregator _logAggregator = new(); private readonly IAsynchronousOperationListener _listener; private readonly IDocumentTrackingService _documentTrackingService; private readonly IWorkspaceConfigurationService? _workspaceConfigurationService; diff --git a/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs b/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs index fa0cfce888a92..f107aa05a990d 100644 --- a/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs +++ b/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs @@ -49,7 +49,7 @@ private DiagnosticIncrementalAnalyzer CreateIncrementalAnalyzerCallback(Workspac // subscribe to active context changed event for new workspace workspace.DocumentActiveContextChanged += OnDocumentActiveContextChanged; - return new DiagnosticIncrementalAnalyzer(this, LogAggregator.GetNextId(), workspace, AnalyzerInfoCache); + return new DiagnosticIncrementalAnalyzer(this, CountLogAggregator.GetNextId(), workspace, AnalyzerInfoCache); } private void OnDocumentActiveContextChanged(object? sender, DocumentActiveContextChangedEventArgs e) diff --git a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs index 742e7fde95117..8a74043c4b9c7 100644 --- a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs +++ b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs @@ -42,9 +42,9 @@ internal sealed class RequestTelemetryLogger : IDisposable, ILspService /// private readonly ConcurrentDictionary _requestCounters; - private readonly LogAggregator _findDocumentResults; + private readonly CountLogAggregator _findDocumentResults; - private readonly LogAggregator _usedForkedSolutionCounter; + private readonly CountLogAggregator _usedForkedSolutionCounter; private int _disposed; diff --git a/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs b/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs index 5e520fb5a3228..fde6a312f0e04 100644 --- a/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs +++ b/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs @@ -13,7 +13,7 @@ internal abstract partial class CommonFixAllState { - public int CorrelationId { get; } = LogAggregator.GetNextId(); + public int CorrelationId { get; } = CountLogAggregator.GetNextId(); public TFixAllProvider FixAllProvider { get; } public string? CodeActionEquivalenceKey { get; } public TProvider Provider { get; } diff --git a/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs b/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs index 6cc780a7ac2b6..161afc1205301 100644 --- a/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs +++ b/src/Workspaces/Core/Portable/Workspace/Solution/SolutionLogger.cs @@ -10,7 +10,7 @@ namespace Microsoft.CodeAnalysis.Logging { internal static class SolutionLogger { - private static readonly LogAggregator s_logAggregator = new(); + private static readonly CountLogAggregator s_logAggregator = new(); public static void UseExistingPartialProjectState() => s_logAggregator.IncreaseCount(nameof(UseExistingPartialProjectState)); diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/CountLogAggregator.cs similarity index 94% rename from src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs rename to src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/CountLogAggregator.cs index 7e1a6669b7765..dd948593ad580 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/LogAggregator.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/CountLogAggregator.cs @@ -8,7 +8,7 @@ namespace Microsoft.CodeAnalysis.Internal.Log { - internal class LogAggregator : AbstractLogAggregator.Counter> + internal class CountLogAggregator : AbstractLogAggregator.Counter> { protected override Counter CreateCounter() => new(); diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/WorkspaceExtensions.projitems b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/WorkspaceExtensions.projitems index e126f5c79a839..f7e95fb1757ee 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/WorkspaceExtensions.projitems +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/WorkspaceExtensions.projitems @@ -54,7 +54,7 @@ - + From fcfa678a3e21d06d4d87d790ac93ff2c07cbf0c5 Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Tue, 7 Jun 2022 16:48:11 -0700 Subject: [PATCH 09/16] Move the GetNextId method to it's own class --- .../EditAndContinue/DebuggingSession.cs | 2 +- .../SolutionCrawlerRegistrationService.cs | 2 +- ...sticAnalyzerService_IncrementalAnalyzer.cs | 2 +- .../CommonFixAllState.cs | 2 +- .../Core/Portable/Log/CorrelationIdFactory.cs | 19 +++++++++++++++++++ .../Core/Log/AbstractLogAggregator.cs | 5 ----- 6 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 src/Workspaces/Core/Portable/Log/CorrelationIdFactory.cs diff --git a/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs b/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs index e52921095ebab..7ff73722dc34e 100644 --- a/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs +++ b/src/Features/Core/Portable/EditAndContinue/DebuggingSession.cs @@ -1042,7 +1042,7 @@ async Task GetTaskAsync(ProjectId projectId) private static void ReportTelemetry(DebuggingSessionTelemetry.Data data) { // report telemetry (fire and forget): - _ = Task.Run(() => DebuggingSessionTelemetry.Log(data, Logger.Log, CountLogAggregator.GetNextId)); + _ = Task.Run(() => DebuggingSessionTelemetry.Log(data, Logger.Log, CorrelationIdFactory.GetNextId)); } internal TestAccessor GetTestAccessor() diff --git a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs index aeccb3e2082ec..18a1e2e3aba98 100644 --- a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs +++ b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerRegistrationService.cs @@ -62,7 +62,7 @@ public void EnsureRegistration(Workspace workspace, bool initializeLazily) { Contract.ThrowIfNull(workspace.Kind); - var correlationId = CountLogAggregator.GetNextId(); + var correlationId = CorrelationIdFactory.GetNextId(); lock (_gate) { diff --git a/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs b/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs index f107aa05a990d..4bb863a34fdbd 100644 --- a/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs +++ b/src/Features/LanguageServer/Protocol/Features/Diagnostics/DiagnosticAnalyzerService_IncrementalAnalyzer.cs @@ -49,7 +49,7 @@ private DiagnosticIncrementalAnalyzer CreateIncrementalAnalyzerCallback(Workspac // subscribe to active context changed event for new workspace workspace.DocumentActiveContextChanged += OnDocumentActiveContextChanged; - return new DiagnosticIncrementalAnalyzer(this, CountLogAggregator.GetNextId(), workspace, AnalyzerInfoCache); + return new DiagnosticIncrementalAnalyzer(this, CorrelationIdFactory.GetNextId(), workspace, AnalyzerInfoCache); } private void OnDocumentActiveContextChanged(object? sender, DocumentActiveContextChangedEventArgs e) diff --git a/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs b/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs index fde6a312f0e04..28ea1c9e3d971 100644 --- a/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs +++ b/src/Workspaces/Core/Portable/CodeFixesAndRefactorings/CommonFixAllState.cs @@ -13,7 +13,7 @@ internal abstract partial class CommonFixAllState { - public int CorrelationId { get; } = CountLogAggregator.GetNextId(); + public int CorrelationId { get; } = CorrelationIdFactory.GetNextId(); public TFixAllProvider FixAllProvider { get; } public string? CodeActionEquivalenceKey { get; } public TProvider Provider { get; } diff --git a/src/Workspaces/Core/Portable/Log/CorrelationIdFactory.cs b/src/Workspaces/Core/Portable/Log/CorrelationIdFactory.cs new file mode 100644 index 0000000000000..702f148c1574c --- /dev/null +++ b/src/Workspaces/Core/Portable/Log/CorrelationIdFactory.cs @@ -0,0 +1,19 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; + +namespace Microsoft.CodeAnalysis.Internal.Log +{ + internal static class CorrelationIdFactory + { + private static int s_globalId; + + public static int GetNextId() + => Interlocked.Increment(ref s_globalId); + } +} diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs index e000a1c7e74ab..c0898de5e24bf 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs @@ -19,8 +19,6 @@ namespace Microsoft.CodeAnalysis.Internal.Log /// internal abstract class AbstractLogAggregator : IEnumerable> { - private static int s_globalId; - private readonly ConcurrentDictionary _map = new(concurrencyLevel: 2, capacity: 2); private readonly Func _createCounter; @@ -31,9 +29,6 @@ protected AbstractLogAggregator() protected abstract TValue CreateCounter(); - public static int GetNextId() - => Interlocked.Increment(ref s_globalId); - public static StatisticResult GetStatistics(List values) { if (values.Count == 0) From 2ce3ef97be0a1772026a78c24940ccfe891a642c Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Tue, 7 Jun 2022 17:10:07 -0700 Subject: [PATCH 10/16] Move the helper for computing StatisticResults inside the type --- .../SolutionCrawler/SolutionCrawlerLogger.cs | 2 +- .../Core/Portable/Log/StatisticResult.cs | 90 +++++++++++++++++++ .../Core/Log/AbstractLogAggregator.cs | 78 ---------------- 3 files changed, 91 insertions(+), 79 deletions(-) create mode 100644 src/Workspaces/Core/Portable/Log/StatisticResult.cs diff --git a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs index 16351c4979471..c1e248b062b22 100644 --- a/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs +++ b/src/Features/Core/Portable/SolutionCrawler/SolutionCrawlerLogger.cs @@ -221,7 +221,7 @@ public static void LogIncrementalAnalyzerProcessorStatistics(int correlationId, foreach (var (propertyName, propertyValues) in statMap) { - var result = CountLogAggregator.GetStatistics(propertyValues); + var result = StatisticResult.FromList(propertyValues); m[CreateProperty(propertyName, Max)] = result.Maximum; m[CreateProperty(propertyName, Min)] = result.Minimum; diff --git a/src/Workspaces/Core/Portable/Log/StatisticResult.cs b/src/Workspaces/Core/Portable/Log/StatisticResult.cs new file mode 100644 index 0000000000000..0c69d2bb708f9 --- /dev/null +++ b/src/Workspaces/Core/Portable/Log/StatisticResult.cs @@ -0,0 +1,90 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +#nullable disable + +using System.Collections.Generic; +using System.Linq; +using Roslyn.Utilities; + +namespace Microsoft.CodeAnalysis.Internal.Log +{ + internal struct StatisticResult + { + public static StatisticResult FromList(List values) + { + if (values.Count == 0) + { + return default; + } + + var max = int.MinValue; + var min = int.MaxValue; + + var total = 0; + for (var i = 0; i < values.Count; i++) + { + var current = values[i]; + max = max < current ? current : max; + min = min > current ? current : min; + + total += current; + } + + var mean = total / values.Count; + var median = values[values.Count / 2]; + + var range = max - min; + var mode = values.GroupBy(i => i).OrderByDescending(g => g.Count()).FirstOrDefault().Key; + + return new StatisticResult(max, min, median, mean, range, mode, values.Count); + } + + /// + /// maximum value + /// + public readonly int Maximum; + + /// + /// minimum value + /// + public readonly int Minimum; + + /// + /// middle value of the total data set + /// + public readonly int? Median; + + /// + /// average value of the total data set + /// + public readonly int Mean; + + /// + /// most frequent value in the total data set + /// + public readonly int? Mode; + + /// + /// difference between max and min value + /// + public readonly int Range; + + /// + /// number of data points in the total data set + /// + public readonly int Count; + + public StatisticResult(int max, int min, int? median, int mean, int range, int? mode, int count) + { + this.Maximum = max; + this.Minimum = min; + this.Median = median; + this.Mean = mean; + this.Range = range; + this.Mode = mode; + this.Count = count; + } + } +} diff --git a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs index c0898de5e24bf..0d4173983a3e6 100644 --- a/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs +++ b/src/Workspaces/SharedUtilitiesAndExtensions/Workspace/Core/Log/AbstractLogAggregator.cs @@ -29,35 +29,6 @@ protected AbstractLogAggregator() protected abstract TValue CreateCounter(); - public static StatisticResult GetStatistics(List values) - { - if (values.Count == 0) - { - return default; - } - - var max = int.MinValue; - var min = int.MaxValue; - - var total = 0; - for (var i = 0; i < values.Count; i++) - { - var current = values[i]; - max = max < current ? current : max; - min = min > current ? current : min; - - total += current; - } - - var mean = total / values.Count; - var median = values[values.Count / 2]; - - var range = max - min; - var mode = values.GroupBy(i => i).OrderByDescending(g => g.Count()).FirstOrDefault().Key; - - return new StatisticResult(max, min, median, mean, range, mode, values.Count); - } - public bool IsEmpty => _map.IsEmpty; public IEnumerator> GetEnumerator() @@ -80,53 +51,4 @@ protected bool TryGetCounter(TKey key, out TValue counter) return false; } } - - internal struct StatisticResult - { - /// - /// maximum value - /// - public readonly int Maximum; - - /// - /// minimum value - /// - public readonly int Minimum; - - /// - /// middle value of the total data set - /// - public readonly int? Median; - - /// - /// average value of the total data set - /// - public readonly int Mean; - - /// - /// most frequent value in the total data set - /// - public readonly int? Mode; - - /// - /// difference between max and min value - /// - public readonly int Range; - - /// - /// number of data points in the total data set - /// - public readonly int Count; - - public StatisticResult(int max, int min, int? median, int mean, int range, int? mode, int count) - { - this.Maximum = max; - this.Minimum = min; - this.Median = median; - this.Mean = mean; - this.Range = range; - this.Mode = mode; - this.Count = count; - } - } } From 42c5e0ae6d8f2776a548e4eb19fdfaf69eacd123 Mon Sep 17 00:00:00 2001 From: Jason Malinowski Date: Mon, 13 Jun 2022 17:54:58 -0700 Subject: [PATCH 11/16] Rename the common IncreaseCount method to something more sensible --- .../AsyncCompletion/AsyncCompletionLogger.cs | 10 +++++----- .../ChangeSignature/ChangeSignatureTelemetryLogger.cs | 2 +- .../Completion/Log/CompletionProvidersLogger.cs | 4 ++-- .../Protocol/Handler/RequestTelemetryLogger.cs | 2 +- .../Def/InheritanceMargin/InheritanceMarginLogger.cs | 2 +- .../Core/Portable/Log/HistogramLogAggregator.cs | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs index 003f96f6d042e..8bc051446a7d6 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/AsyncCompletionLogger.cs @@ -58,7 +58,7 @@ internal static void LogSessionWithDelayedImportCompletionIncludedInUpdate() => s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithDelayedImportCompletionIncludedInUpdate); internal static void LogAdditionalTicksToCompleteDelayedImportCompletionDataPoint(TimeSpan timeSpan) => - s_histogramLogAggregator.IncreaseCount(ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, timeSpan); + s_histogramLogAggregator.LogTime(ActionInfo.AdditionalTicksToCompleteDelayedImportCompletion, timeSpan); internal static void LogDelayedImportCompletionIncluded() => s_countLogAggregator.IncreaseCount(ActionInfo.SessionWithTypeImportCompletionEnabled); @@ -72,7 +72,7 @@ internal static void LogGetDefaultsMatchTicksDataPoint(int count) => internal static void LogSourceInitializationTicksDataPoint(TimeSpan elapsed) { s_statisticLogAggregator.AddDataPoint(ActionInfo.SourceInitializationTicks, elapsed); - s_histogramLogAggregator.IncreaseCount(ActionInfo.SourceInitializationTicks, elapsed); + s_histogramLogAggregator.LogTime(ActionInfo.SourceInitializationTicks, elapsed); } internal static void LogSourceGetContextTicksDataPoint(TimeSpan elapsed, bool isCanceled) @@ -82,13 +82,13 @@ internal static void LogSourceGetContextTicksDataPoint(TimeSpan elapsed, bool is : ActionInfo.SourceGetContextCompletedTicks; s_statisticLogAggregator.AddDataPoint(key, elapsed); - s_histogramLogAggregator.IncreaseCount(key, elapsed); + s_histogramLogAggregator.LogTime(key, elapsed); } internal static void LogItemManagerSortTicksDataPoint(TimeSpan elapsed) { s_statisticLogAggregator.AddDataPoint(ActionInfo.ItemManagerSortTicks, elapsed); - s_histogramLogAggregator.IncreaseCount(ActionInfo.ItemManagerSortTicks, elapsed); + s_histogramLogAggregator.LogTime(ActionInfo.ItemManagerSortTicks, elapsed); } internal static void LogItemManagerUpdateDataPoint(TimeSpan elapsed, bool isCanceled) @@ -98,7 +98,7 @@ internal static void LogItemManagerUpdateDataPoint(TimeSpan elapsed, bool isCanc : ActionInfo.ItemManagerUpdateCompletedTicks; s_statisticLogAggregator.AddDataPoint(key, elapsed); - s_histogramLogAggregator.IncreaseCount(key, elapsed); + s_histogramLogAggregator.LogTime(key, elapsed); } internal static void ReportTelemetry() diff --git a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs index c03fe028988dc..634980d055b5b 100644 --- a/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs +++ b/src/Features/Core/Portable/ChangeSignature/ChangeSignatureTelemetryLogger.cs @@ -147,7 +147,7 @@ internal static void LogCommitInformation(int numDeclarationsUpdated, int numCal s_countLogAggregator.IncreaseCountBy(ActionInfo.CommittedSessionNumberOfCallSitesUpdated, numCallSitesUpdated); s_statisticLogAggregator.AddDataPoint(ActionInfo.CommittedSessionCommitElapsedMS, (int)elapsedTime.TotalMilliseconds); - s_histogramLogAggregator.IncreaseCount(ActionInfo.CommittedSessionCommitElapsedMS, elapsedTime); + s_histogramLogAggregator.LogTime(ActionInfo.CommittedSessionCommitElapsedMS, elapsedTime); } internal static void LogAddedParameterTypeBinds() diff --git a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs index 2bdf26380135a..eab198df2b957 100644 --- a/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs +++ b/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs @@ -36,7 +36,7 @@ internal enum ActionInfo internal static void LogTypeImportCompletionTicksDataPoint(TimeSpan elapsed) { - s_histogramLogAggregator.IncreaseCount(ActionInfo.TypeImportCompletionTicks, elapsed); + s_histogramLogAggregator.LogTime(ActionInfo.TypeImportCompletionTicks, elapsed); s_statisticLogAggregator.AddDataPoint(ActionInfo.TypeImportCompletionTicks, elapsed); } @@ -54,7 +54,7 @@ internal static void LogCommitOfTypeImportCompletionItem() => internal static void LogExtensionMethodCompletionTicksDataPoint(TimeSpan total, TimeSpan getSymbols, TimeSpan createItems, bool isRemote) { - s_histogramLogAggregator.IncreaseCount(ActionInfo.ExtensionMethodCompletionTicks, total); + s_histogramLogAggregator.LogTime(ActionInfo.ExtensionMethodCompletionTicks, total); s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionTicks, total); if (isRemote) diff --git a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs index 8a74043c4b9c7..1f6cd5520feb6 100644 --- a/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs +++ b/src/Features/LanguageServer/Protocol/Handler/RequestTelemetryLogger.cs @@ -87,7 +87,7 @@ public void UpdateTelemetryData( { // Find the bucket corresponding to the queued duration and update the count of durations in that bucket. // This is not broken down per method as time in queue is not specific to an LSP method. - _queuedDurationLogAggregator.IncreaseCount(QueuedDurationKey, queuedDuration); + _queuedDurationLogAggregator.LogTime(QueuedDurationKey, queuedDuration); // Store the request time metrics per LSP method. _requestDurationLogAggregator.IncreaseCount(methodName, (int)ComputeLogValue(requestDuration.TotalMilliseconds)); diff --git a/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs b/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs index 9d192e939f2fe..0b38743b65005 100644 --- a/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs +++ b/src/VisualStudio/Core/Def/InheritanceMargin/InheritanceMarginLogger.cs @@ -18,7 +18,7 @@ private enum ActionInfo } public static void LogGenerateBackgroundInheritanceInfo(TimeSpan elapsedTime) - => s_histogramLogAggregator.IncreaseCount( + => s_histogramLogAggregator.LogTime( ActionInfo.GetInheritanceMarginMembers, elapsedTime); public static void LogInheritanceTargetsMenuOpen() diff --git a/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs b/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs index 670fa554761c0..9f04d3098f021 100644 --- a/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs +++ b/src/Workspaces/Core/Portable/Log/HistogramLogAggregator.cs @@ -38,7 +38,7 @@ public void IncreaseCount(TKey key, int value) counter.IncreaseCount(value); } - public void IncreaseCount(TKey key, TimeSpan timeSpan) + public void LogTime(TKey key, TimeSpan timeSpan) { var counter = GetCounter(key); counter.IncreaseCount((int)timeSpan.TotalMilliseconds); From 68d551157db2a99839f59086869a8891d6d15172 Mon Sep 17 00:00:00 2001 From: DoctorKrolic <70431552+DoctorKrolic@users.noreply.github.com> Date: Tue, 14 Jun 2022 10:27:29 +0300 Subject: [PATCH 12/16] Static lambda Co-authored-by: Sam Harwell --- .../AbstractRecommendationServiceBasedCompletionProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Features/Core/Portable/Completion/Providers/AbstractRecommendationServiceBasedCompletionProvider.cs b/src/Features/Core/Portable/Completion/Providers/AbstractRecommendationServiceBasedCompletionProvider.cs index 074a5608db391..29f67ce539802 100644 --- a/src/Features/Core/Portable/Completion/Providers/AbstractRecommendationServiceBasedCompletionProvider.cs +++ b/src/Features/Core/Portable/Completion/Providers/AbstractRecommendationServiceBasedCompletionProvider.cs @@ -93,7 +93,7 @@ private static bool IsValidForTaskLikeTypeOnlyContext(ISymbol symbol, TSyntaxCon } return namedType.IsAwaitableNonDynamic(context.SemanticModel, context.Position) || - namedType.GetTypeMembers().Any(m => IsValidForTaskLikeTypeOnlyContext(m, context)); + namedType.GetTypeMembers().Any(static (m, context) => IsValidForTaskLikeTypeOnlyContext(m, context), context); } private static bool IsValidForGenericConstraintContext(ISymbol symbol) From 1f7235ffcbf0b469f95c06902dac2b7580e416bb Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 14 Jun 2022 15:35:53 +0800 Subject: [PATCH 13/16] Fix Rune access issue on AspNetCoreVirtualChar --- .../AspNetCoreVirtualChar.cs | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs b/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs index 7b18884493f2f..ed48f84575b8d 100644 --- a/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs +++ b/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs @@ -2,13 +2,14 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Text; using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.ExternalAccess.AspNetCore.EmbeddedLanguages { - internal readonly struct AspNetCoreVirtualChar + internal readonly struct AspNetCoreVirtualChar : IEquatable { private readonly VirtualChar _virtualChar; @@ -17,8 +18,15 @@ internal AspNetCoreVirtualChar(VirtualChar virtualChar) _virtualChar = virtualChar; } - /// - public Rune Rune => _virtualChar.Rune; + /// + /// Returns the Unicode scalar value as an integer. + /// + public int RuneValue + { + // Rune is an internal shim with netstandard2.0 and accessing it throws an internal access exception. + // Expose integer value. Can be converted back to Rune by caller. + get => _virtualChar.Rune.Value; + } /// public char SurrogateChar => _virtualChar.SurrogateChar; @@ -31,5 +39,14 @@ internal AspNetCoreVirtualChar(VirtualChar virtualChar) /// public override string ToString() => _virtualChar.ToString(); + + /// + public override bool Equals(object? obj) => _virtualChar.Equals(obj); + + /// + public bool Equals(AspNetCoreVirtualChar other) => _virtualChar.Equals(other._virtualChar); + + /// + public override int GetHashCode() => _virtualChar.GetHashCode(); } } From 8427645c7b89265148d9df35af5fe59a8dd3c6ca Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Tue, 14 Jun 2022 19:09:24 +0800 Subject: [PATCH 14/16] PR feedback --- .../AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs b/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs index ed48f84575b8d..713f86869d74f 100644 --- a/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs +++ b/src/Tools/ExternalAccess/AspNetCore/EmbeddedLanguages/AspNetCoreVirtualChar.cs @@ -41,7 +41,7 @@ public int RuneValue public override string ToString() => _virtualChar.ToString(); /// - public override bool Equals(object? obj) => _virtualChar.Equals(obj); + public override bool Equals(object? obj) => obj is AspNetCoreVirtualChar vc && Equals(vc); /// public bool Equals(AspNetCoreVirtualChar other) => _virtualChar.Equals(other._virtualChar); From f1293619f3ef4b38565b845a49f97bd8f3392c5e Mon Sep 17 00:00:00 2001 From: Alireza Habibi Date: Tue, 14 Jun 2022 21:54:46 +0430 Subject: [PATCH 15/16] Use auto-properties for PropertyOverrides (#61107) --- .../Generated/BoundNodes.xml.Generated.cs | 1071 +++++------------ .../BoundNodeClassWriter.cs | 23 +- 2 files changed, 281 insertions(+), 813 deletions(-) diff --git a/src/Compilers/CSharp/Portable/Generated/BoundNodes.xml.Generated.cs b/src/Compilers/CSharp/Portable/Generated/BoundNodes.xml.Generated.cs index fa66d8df9f0b5..3c941d6c2c27f 100644 --- a/src/Compilers/CSharp/Portable/Generated/BoundNodes.xml.Generated.cs +++ b/src/Compilers/CSharp/Portable/Generated/BoundNodes.xml.Generated.cs @@ -282,9 +282,7 @@ protected BoundEqualsValue(BoundKind kind, SyntaxNode syntax, ImmutableArray Locals { get; } - public BoundExpression Value { get; } } @@ -301,8 +299,8 @@ public BoundFieldEqualsValue(SyntaxNode syntax, FieldSymbol field, ImmutableArra this.Field = field; } - public FieldSymbol Field { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFieldEqualsValue(this); @@ -331,8 +329,8 @@ public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, Immu this.Property = property; } - public PropertySymbol Property { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPropertyEqualsValue(this); @@ -361,8 +359,8 @@ public BoundParameterEqualsValue(SyntaxNode syntax, ParameterSymbol parameter, I this.Parameter = parameter; } - public ParameterSymbol Parameter { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitParameterEqualsValue(this); @@ -389,8 +387,8 @@ public BoundGlobalStatementInitializer(SyntaxNode syntax, BoundStatement stateme this.Statement = statement; } - public BoundStatement Statement { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitGlobalStatementInitializer(this); @@ -420,7 +418,6 @@ protected BoundExpression(BoundKind kind, SyntaxNode syntax, TypeSymbol? type) this.Type = type; } - public TypeSymbol? Type { get; } } @@ -464,6 +461,7 @@ public BoundValuePlaceholder(SyntaxNode syntax, TypeSymbol? type) { } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitValuePlaceholder(this); @@ -499,10 +497,9 @@ public BoundDeconstructValuePlaceholder(SyntaxNode syntax, uint valEscape, TypeS this.ValEscape = valEscape; } - public new TypeSymbol Type => base.Type!; - public uint ValEscape { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDeconstructValuePlaceholder(this); @@ -536,8 +533,8 @@ public BoundTupleOperandPlaceholder(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTupleOperandPlaceholder(this); @@ -567,10 +564,9 @@ public BoundAwaitableValuePlaceholder(SyntaxNode syntax, uint valEscape, TypeSym this.ValEscape = valEscape; } - public new TypeSymbol? Type => base.Type; - public uint ValEscape { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAwaitableValuePlaceholder(this); @@ -604,8 +600,8 @@ public BoundDisposableValuePlaceholder(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDisposableValuePlaceholder(this); @@ -641,10 +637,9 @@ public BoundObjectOrCollectionValuePlaceholder(SyntaxNode syntax, bool isNewInst this.IsNewInstance = isNewInstance; } - public new TypeSymbol Type => base.Type!; - public bool IsNewInstance { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitObjectOrCollectionValuePlaceholder(this); @@ -678,8 +673,8 @@ public BoundImplicitIndexerValuePlaceholder(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitImplicitIndexerValuePlaceholder(this); @@ -704,7 +699,7 @@ public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, uint valEscape RoslynDebug.Assert(type is object, "Field 'type' cannot be null (make the type nullable in BoundNodes.xml to remove this check)"); this.ValEscape = valEscape; - this._IsEquivalentToThisReference = isEquivalentToThisReference; + this.IsEquivalentToThisReference = isEquivalentToThisReference; } public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, uint valEscape, bool isEquivalentToThisReference, TypeSymbol type) @@ -714,16 +709,13 @@ public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, uint valEscape RoslynDebug.Assert(type is object, "Field 'type' cannot be null (make the type nullable in BoundNodes.xml to remove this check)"); this.ValEscape = valEscape; - this._IsEquivalentToThisReference = isEquivalentToThisReference; + this.IsEquivalentToThisReference = isEquivalentToThisReference; } - public new TypeSymbol Type => base.Type!; - public uint ValEscape { get; } + public override bool IsEquivalentToThisReference { get; } - private readonly bool _IsEquivalentToThisReference; - public override bool IsEquivalentToThisReference { get { return _IsEquivalentToThisReference; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitImplicitIndexerReceiverPlaceholder(this); @@ -759,10 +751,9 @@ public BoundListPatternReceiverPlaceholder(SyntaxNode syntax, uint valEscape, Ty this.ValEscape = valEscape; } - public new TypeSymbol Type => base.Type!; - public uint ValEscape { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitListPatternReceiverPlaceholder(this); @@ -796,8 +787,8 @@ public BoundListPatternIndexPlaceholder(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitListPatternIndexPlaceholder(this); @@ -833,10 +824,9 @@ public BoundSlicePatternReceiverPlaceholder(SyntaxNode syntax, uint valEscape, T this.ValEscape = valEscape; } - public new TypeSymbol Type => base.Type!; - public uint ValEscape { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSlicePatternReceiverPlaceholder(this); @@ -870,8 +860,8 @@ public BoundSlicePatternRangePlaceholder(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSlicePatternRangePlaceholder(this); @@ -901,8 +891,8 @@ public BoundDup(SyntaxNode syntax, RefKind refKind, TypeSymbol? type) this.RefKind = refKind; } - public RefKind RefKind { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDup(this); @@ -929,8 +919,8 @@ public BoundPassByCopy(SyntaxNode syntax, BoundExpression expression, TypeSymbol this.Expression = expression; } - public BoundExpression Expression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPassByCopy(this); @@ -955,18 +945,15 @@ public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, Immuta RoslynDebug.Assert(!symbols.IsDefault, "Field 'symbols' cannot be null (use Null=\"allow\" in BoundNodes.xml to remove this check)"); RoslynDebug.Assert(!childBoundNodes.IsDefault, "Field 'childBoundNodes' cannot be null (use Null=\"allow\" in BoundNodes.xml to remove this check)"); - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.Symbols = symbols; this.ChildBoundNodes = childBoundNodes; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public ImmutableArray Symbols { get; } - public ImmutableArray ChildBoundNodes { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBadExpression(this); @@ -993,8 +980,8 @@ public BoundBadStatement(SyntaxNode syntax, ImmutableArray childBound this.ChildBoundNodes = childBoundNodes; } - public ImmutableArray ChildBoundNodes { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBadStatement(this); @@ -1021,8 +1008,8 @@ public BoundExtractedFinallyBlock(SyntaxNode syntax, BoundBlock finallyBlock, bo this.FinallyBlock = finallyBlock; } - public BoundBlock FinallyBlock { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitExtractedFinallyBlock(this); @@ -1052,16 +1039,12 @@ public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeEx this.TypeWithAnnotations = typeWithAnnotations; } - public AliasSymbol? AliasOpt { get; } - public BoundTypeExpression? BoundContainingTypeOpt { get; } - public ImmutableArray BoundDimensionsOpt { get; } - public new TypeSymbol Type => base.Type!; - public TypeWithAnnotations TypeWithAnnotations { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTypeExpression(this); @@ -1097,10 +1080,9 @@ public BoundTypeOrValueExpression(SyntaxNode syntax, BoundTypeOrValueData data, this.Data = data; } - public new TypeSymbol Type => base.Type!; - public BoundTypeOrValueData Data { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTypeOrValueExpression(this); @@ -1138,12 +1120,10 @@ public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymb this.AliasOpt = aliasOpt; } - public new TypeSymbol? Type => base.Type; - public NamespaceSymbol NamespaceSymbol { get; } - public AliasSymbol? AliasOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNamespaceExpression(this); @@ -1173,27 +1153,19 @@ public BoundUnaryOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, Bou this.ConstantValueOpt = constantValueOpt; this.MethodOpt = methodOpt; this.ConstrainedToTypeOpt = constrainedToTypeOpt; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.OriginalUserDefinedOperatorsOpt = originalUserDefinedOperatorsOpt; } - public new TypeSymbol Type => base.Type!; - public UnaryOperatorKind OperatorKind { get; } - public BoundExpression Operand { get; } - public ConstantValue? ConstantValueOpt { get; } - public MethodSymbol? MethodOpt { get; } - public TypeSymbol? ConstrainedToTypeOpt { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public ImmutableArray OriginalUserDefinedOperatorsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUnaryOperator(this); @@ -1226,33 +1198,22 @@ public BoundIncrementOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, this.OperandConversion = operandConversion; this.ResultPlaceholder = resultPlaceholder; this.ResultConversion = resultConversion; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.OriginalUserDefinedOperatorsOpt = originalUserDefinedOperatorsOpt; } - public new TypeSymbol Type => base.Type!; - public UnaryOperatorKind OperatorKind { get; } - public BoundExpression Operand { get; } - public MethodSymbol? MethodOpt { get; } - public TypeSymbol? ConstrainedToTypeOpt { get; } - public BoundValuePlaceholder? OperandPlaceholder { get; } - public BoundExpression? OperandConversion { get; } - public BoundValuePlaceholder? ResultPlaceholder { get; } - public BoundExpression? ResultConversion { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public ImmutableArray OriginalUserDefinedOperatorsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitIncrementOperator(this); @@ -1281,12 +1242,10 @@ public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression operand, bool i this.IsManaged = isManaged; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public bool IsManaged { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAddressOfOperator(this); @@ -1313,10 +1272,9 @@ public BoundUnconvertedAddressOfOperator(SyntaxNode syntax, BoundMethodGroup ope this.Operand = operand; } - public BoundMethodGroup Operand { get; } - public new TypeSymbol? Type => base.Type; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUnconvertedAddressOfOperator(this); @@ -1356,12 +1314,10 @@ public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, Ty this.ConstrainedToTypeOpt = constrainedToTypeOpt; } - public MethodSymbol TargetMethod { get; } - public TypeSymbol? ConstrainedToTypeOpt { get; } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFunctionPointerLoad(this); @@ -1390,12 +1346,10 @@ public BoundPointerIndirectionOperator(SyntaxNode syntax, BoundExpression operan this.RefersToLocation = refersToLocation; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public bool RefersToLocation { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPointerIndirectionOperator(this); @@ -1427,16 +1381,12 @@ public BoundPointerElementAccess(SyntaxNode syntax, BoundExpression expression, this.RefersToLocation = refersToLocation; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Expression { get; } - public BoundExpression Index { get; } - public bool Checked { get; } - public bool RefersToLocation { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPointerElementAccess(this); @@ -1465,20 +1415,15 @@ public BoundFunctionPointerInvocation(SyntaxNode syntax, BoundExpression invoked this.InvokedExpression = invokedExpression; this.Arguments = arguments; this.ArgumentRefKindsOpt = argumentRefKindsOpt; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public new TypeSymbol Type => base.Type!; - public BoundExpression InvokedExpression { get; } - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } + public override LookupResultKind ResultKind { get; } - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFunctionPointerInvocation(this); @@ -1507,12 +1452,10 @@ public BoundRefTypeOperator(SyntaxNode syntax, BoundExpression operand, MethodSy this.GetTypeFromHandle = getTypeFromHandle; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public MethodSymbol? GetTypeFromHandle { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRefTypeOperator(this); @@ -1540,10 +1483,9 @@ public BoundMakeRefOperator(SyntaxNode syntax, BoundExpression operand, TypeSymb this.Operand = operand; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitMakeRefOperator(this); @@ -1572,12 +1514,10 @@ public BoundRefValueOperator(SyntaxNode syntax, NullableAnnotation nullableAnnot this.Operand = operand; } - public new TypeSymbol Type => base.Type!; - public NullableAnnotation NullableAnnotation { get; } - public BoundExpression Operand { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRefValueOperator(this); @@ -1606,12 +1546,10 @@ public BoundFromEndIndexExpression(SyntaxNode syntax, BoundExpression operand, M this.MethodOpt = methodOpt; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public MethodSymbol? MethodOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFromEndIndexExpression(this); @@ -1640,14 +1578,11 @@ public BoundRangeExpression(SyntaxNode syntax, BoundExpression? leftOperandOpt, this.MethodOpt = methodOpt; } - public new TypeSymbol Type => base.Type!; - public BoundExpression? LeftOperandOpt { get; } - public BoundExpression? RightOperandOpt { get; } - public MethodSymbol? MethodOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRangeExpression(this); @@ -1677,11 +1612,8 @@ protected BoundBinaryOperatorBase(BoundKind kind, SyntaxNode syntax, BoundExpres this.Right = right; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Left { get; } - public BoundExpression Right { get; } } @@ -1697,16 +1629,13 @@ public BoundBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, B this.OperatorKind = operatorKind; this.Data = data; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public BinaryOperatorKind OperatorKind { get; } - public BoundBinaryOperator.UncommonData? Data { get; } + public override LookupResultKind ResultKind { get; } - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBinaryOperator(this); @@ -1739,16 +1668,12 @@ public BoundTupleBinaryOperator(SyntaxNode syntax, BoundExpression left, BoundEx this.Operators = operators; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Left { get; } - public BoundExpression Right { get; } - public BinaryOperatorKind OperatorKind { get; } - public TupleBinaryOperatorInfo.Multiple Operators { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTupleBinaryOperator(this); @@ -1782,25 +1707,18 @@ public BoundUserDefinedConditionalLogicalOperator(SyntaxNode syntax, BinaryOpera this.TrueOperator = trueOperator; this.FalseOperator = falseOperator; this.ConstrainedToTypeOpt = constrainedToTypeOpt; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.OriginalUserDefinedOperatorsOpt = originalUserDefinedOperatorsOpt; } - public BinaryOperatorKind OperatorKind { get; } - public MethodSymbol LogicalOperator { get; } - public MethodSymbol TrueOperator { get; } - public MethodSymbol FalseOperator { get; } - public TypeSymbol? ConstrainedToTypeOpt { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public ImmutableArray OriginalUserDefinedOperatorsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUserDefinedConditionalLogicalOperator(this); @@ -1833,31 +1751,21 @@ public BoundCompoundAssignmentOperator(SyntaxNode syntax, BinaryOperatorSignatur this.LeftConversion = leftConversion; this.FinalPlaceholder = finalPlaceholder; this.FinalConversion = finalConversion; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.OriginalUserDefinedOperatorsOpt = originalUserDefinedOperatorsOpt; } - public new TypeSymbol Type => base.Type!; - public BinaryOperatorSignature Operator { get; } - public BoundExpression Left { get; } - public BoundExpression Right { get; } - public BoundValuePlaceholder? LeftPlaceholder { get; } - public BoundExpression? LeftConversion { get; } - public BoundValuePlaceholder? FinalPlaceholder { get; } - public BoundExpression? FinalConversion { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public ImmutableArray OriginalUserDefinedOperatorsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitCompoundAssignmentOperator(this); @@ -1887,14 +1795,11 @@ public BoundAssignmentOperator(SyntaxNode syntax, BoundExpression left, BoundExp this.IsRef = isRef; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Left { get; } - public BoundExpression Right { get; } - public bool IsRef { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAssignmentOperator(this); @@ -1925,14 +1830,11 @@ public BoundDeconstructionAssignmentOperator(SyntaxNode syntax, BoundTupleExpres this.IsUsed = isUsed; } - public new TypeSymbol Type => base.Type!; - public BoundTupleExpression Left { get; } - public BoundConversion Right { get; } - public bool IsUsed { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDeconstructionAssignmentOperator(this); @@ -1966,20 +1868,14 @@ public BoundNullCoalescingOperator(SyntaxNode syntax, BoundExpression leftOperan this.Checked = @checked; } - public new TypeSymbol Type => base.Type!; - public BoundExpression LeftOperand { get; } - public BoundExpression RightOperand { get; } - public BoundValuePlaceholder? LeftPlaceholder { get; } - public BoundExpression? LeftConversion { get; } - public BoundNullCoalescingOperatorResultKind OperatorResultKind { get; } - public bool Checked { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNullCoalescingOperator(this); @@ -2008,10 +1904,9 @@ public BoundNullCoalescingAssignmentOperator(SyntaxNode syntax, BoundExpression this.RightOperand = rightOperand; } - public BoundExpression LeftOperand { get; } - public BoundExpression RightOperand { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNullCoalescingAssignmentOperator(this); @@ -2044,18 +1939,13 @@ public BoundUnconvertedConditionalOperator(SyntaxNode syntax, BoundExpression co this.NoCommonTypeError = noCommonTypeError; } - public new TypeSymbol? Type => base.Type; - public BoundExpression Condition { get; } - public BoundExpression Consequence { get; } - public BoundExpression Alternative { get; } - public ConstantValue? ConstantValueOpt { get; } - public ErrorCode NoCommonTypeError { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUnconvertedConditionalOperator(this); @@ -2091,22 +1981,15 @@ public BoundConditionalOperator(SyntaxNode syntax, bool isRef, BoundExpression c this.WasTargetTyped = wasTargetTyped; } - public new TypeSymbol Type => base.Type!; - public bool IsRef { get; } - public BoundExpression Condition { get; } - public BoundExpression Consequence { get; } - public BoundExpression Alternative { get; } - public ConstantValue? ConstantValueOpt { get; } - public TypeSymbol? NaturalTypeOpt { get; } - public bool WasTargetTyped { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConditionalOperator(this); @@ -2136,12 +2019,10 @@ public BoundArrayAccess(SyntaxNode syntax, BoundExpression expression, Immutable this.Indices = indices; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Expression { get; } - public ImmutableArray Indices { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitArrayAccess(this); @@ -2169,10 +2050,9 @@ public BoundArrayLength(SyntaxNode syntax, BoundExpression expression, TypeSymbo this.Expression = expression; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Expression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitArrayLength(this); @@ -2200,16 +2080,12 @@ public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awa this.GetResult = getResult; } - public BoundAwaitableValuePlaceholder? AwaitableInstancePlaceholder { get; } - public bool IsDynamic { get; } - public BoundExpression? GetAwaiter { get; } - public PropertySymbol? IsCompleted { get; } - public MethodSymbol? GetResult { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAwaitableInfo(this); @@ -2239,12 +2115,10 @@ public BoundAwaitExpression(SyntaxNode syntax, BoundExpression expression, Bound this.AwaitableInfo = awaitableInfo; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Expression { get; } - public BoundAwaitableInfo AwaitableInfo { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAwaitExpression(this); @@ -2280,9 +2154,7 @@ protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFr this.GetTypeFromHandle = getTypeFromHandle; } - public new TypeSymbol Type => base.Type!; - public MethodSymbol? GetTypeFromHandle { get; } } @@ -2298,8 +2170,8 @@ public BoundTypeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, Me this.SourceType = sourceType; } - public BoundTypeExpression SourceType { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTypeOfOperator(this); @@ -2337,10 +2209,9 @@ public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol ty this.Method = method; } - public new TypeSymbol Type => base.Type!; - public MethodSymbol Method { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitMethodDefIndex(this); @@ -2374,8 +2245,8 @@ public BoundMaximumMethodDefIndex(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitMaximumMethodDefIndex(this); @@ -2411,10 +2282,9 @@ public BoundInstrumentationPayloadRoot(SyntaxNode syntax, int analysisKind, Type this.AnalysisKind = analysisKind; } - public int AnalysisKind { get; } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitInstrumentationPayloadRoot(this); @@ -2448,8 +2318,8 @@ public BoundModuleVersionId(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitModuleVersionId(this); @@ -2483,8 +2353,8 @@ public BoundModuleVersionIdString(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitModuleVersionIdString(this); @@ -2522,10 +2392,9 @@ public BoundSourceDocumentIndex(SyntaxNode syntax, Cci.DebugSourceDocument docum this.Document = document; } - public new TypeSymbol Type => base.Type!; - public Cci.DebugSourceDocument Document { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSourceDocumentIndex(this); @@ -2565,12 +2434,10 @@ public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? get this.GetMethodFromHandle = getMethodFromHandle; } - public new TypeSymbol Type => base.Type!; - public MethodSymbol Method { get; } - public MethodSymbol? GetMethodFromHandle { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitMethodInfo(this); @@ -2610,12 +2477,10 @@ public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFie this.GetFieldFromHandle = getFieldFromHandle; } - public new TypeSymbol Type => base.Type!; - public FieldSymbol Field { get; } - public MethodSymbol? GetFieldFromHandle { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFieldInfo(this); @@ -2643,8 +2508,8 @@ public BoundDefaultLiteral(SyntaxNode syntax) { } - public new TypeSymbol? Type => base.Type; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDefaultLiteral(this); @@ -2666,12 +2531,10 @@ public BoundDefaultExpression(SyntaxNode syntax, BoundTypeExpression? targetType this.ConstantValueOpt = constantValueOpt; } - public new TypeSymbol Type => base.Type!; - public BoundTypeExpression? TargetType { get; } - public ConstantValue? ConstantValueOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDefaultExpression(this); @@ -2702,14 +2565,11 @@ public BoundIsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpr this.ConversionKind = conversionKind; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public BoundTypeExpression TargetType { get; } - public ConversionKind ConversionKind { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitIsOperator(this); @@ -2741,16 +2601,12 @@ public BoundAsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpr this.OperandConversion = operandConversion; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public BoundTypeExpression TargetType { get; } - public BoundValuePlaceholder? OperandPlaceholder { get; } - public BoundExpression? OperandConversion { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAsOperator(this); @@ -2779,12 +2635,10 @@ public BoundSizeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, Co this.ConstantValueOpt = constantValueOpt; } - public new TypeSymbol Type => base.Type!; - public BoundTypeExpression SourceType { get; } - public ConstantValue? ConstantValueOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSizeOfOperator(this); @@ -2819,24 +2673,16 @@ public BoundConversion(SyntaxNode syntax, BoundExpression operand, Conversion co this.OriginalUserDefinedConversionsOpt = originalUserDefinedConversionsOpt; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public Conversion Conversion { get; } - public bool IsBaseConversion { get; } - public bool Checked { get; } - public bool ExplicitCastInCode { get; } - public ConstantValue? ConstantValueOpt { get; } - public ConversionGroup? ConversionGroupOpt { get; } - public ImmutableArray OriginalUserDefinedConversionsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConversion(this); @@ -2866,12 +2712,10 @@ public BoundReadOnlySpanFromArray(SyntaxNode syntax, BoundExpression operand, Me this.ConversionMethod = conversionMethod; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Operand { get; } - public MethodSymbol ConversionMethod { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitReadOnlySpanFromArray(this); @@ -2905,8 +2749,8 @@ public BoundArgList(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitArgList(this); @@ -2934,12 +2778,10 @@ public BoundArgListOperator(SyntaxNode syntax, ImmutableArray a this.ArgumentRefKindsOpt = argumentRefKindsOpt; } - public new TypeSymbol? Type => base.Type; - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitArgListOperator(this); @@ -2972,18 +2814,13 @@ public BoundFixedLocalCollectionInitializer(SyntaxNode syntax, TypeSymbol elemen this.GetPinnableOpt = getPinnableOpt; } - public new TypeSymbol Type => base.Type!; - public TypeSymbol ElementPointerType { get; } - public BoundValuePlaceholder? ElementPointerPlaceholder { get; } - public BoundExpression? ElementPointerConversion { get; } - public BoundExpression Expression { get; } - public MethodSymbol? GetPinnableOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFixedLocalCollectionInitializer(this); @@ -3021,8 +2858,8 @@ public BoundSequencePoint(SyntaxNode syntax, BoundStatement? statementOpt, bool this.StatementOpt = statementOpt; } - public BoundStatement? StatementOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSequencePoint(this); @@ -3047,10 +2884,9 @@ public BoundSequencePointWithSpan(SyntaxNode syntax, BoundStatement? statementOp this.Span = span; } - public BoundStatement? StatementOpt { get; } - public TextSpan Span { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSequencePointWithSpan(this); @@ -3086,8 +2922,8 @@ public BoundSavePreviousSequencePoint(SyntaxNode syntax, object identifier) this.Identifier = identifier; } - public object Identifier { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSavePreviousSequencePoint(this); @@ -3123,8 +2959,8 @@ public BoundRestorePreviousSequencePoint(SyntaxNode syntax, object identifier) this.Identifier = identifier; } - public object Identifier { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRestorePreviousSequencePoint(this); @@ -3154,8 +2990,8 @@ public BoundStepThroughSequencePoint(SyntaxNode syntax, TextSpan span) this.Span = span; } - public TextSpan Span { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitStepThroughSequencePoint(this); @@ -3185,10 +3021,9 @@ public BoundBlock(SyntaxNode syntax, ImmutableArray locals, Immutab this.LocalFunctions = localFunctions; } - public ImmutableArray Locals { get; } - public ImmutableArray LocalFunctions { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBlock(this); @@ -3216,8 +3051,8 @@ public BoundScope(SyntaxNode syntax, ImmutableArray locals, Immutab this.Locals = locals; } - public ImmutableArray Locals { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitScope(this); @@ -3246,10 +3081,9 @@ public BoundStateMachineScope(SyntaxNode syntax, ImmutableArray Fields { get; } - public BoundStatement Statement { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitStateMachineScope(this); @@ -3280,16 +3114,12 @@ public BoundLocalDeclaration(SyntaxNode syntax, LocalSymbol localSymbol, BoundTy this.InferredType = inferredType; } - public LocalSymbol LocalSymbol { get; } - public BoundTypeExpression? DeclaredTypeOpt { get; } - public BoundExpression? InitializerOpt { get; } - public ImmutableArray ArgumentsOpt { get; } - public bool InferredType { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLocalDeclaration(this); @@ -3316,7 +3146,6 @@ protected BoundMultipleLocalDeclarationsBase(BoundKind kind, SyntaxNode syntax, this.LocalDeclarations = localDeclarations; } - public ImmutableArray LocalDeclarations { get; } } @@ -3330,6 +3159,7 @@ public BoundMultipleLocalDeclarations(SyntaxNode syntax, ImmutableArray visitor.VisitMultipleLocalDeclarations(this); @@ -3357,10 +3187,9 @@ public BoundUsingLocalDeclarations(SyntaxNode syntax, MethodArgumentInfo? patter this.AwaitOpt = awaitOpt; } - public MethodArgumentInfo? PatternDisposeInfoOpt { get; } - public BoundAwaitableInfo? AwaitOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUsingLocalDeclarations(this); @@ -3389,12 +3218,10 @@ public BoundLocalFunctionStatement(SyntaxNode syntax, LocalFunctionSymbol symbol this.ExpressionBody = expressionBody; } - public LocalFunctionSymbol Symbol { get; } - public BoundBlock? BlockBody { get; } - public BoundBlock? ExpressionBody { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLocalFunctionStatement(this); @@ -3424,8 +3251,8 @@ public BoundNoOpStatement(SyntaxNode syntax, NoOpStatementFlavor flavor) this.Flavor = flavor; } - public NoOpStatementFlavor Flavor { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNoOpStatement(this); @@ -3451,12 +3278,10 @@ public BoundReturnStatement(SyntaxNode syntax, RefKind refKind, BoundExpression? this.Checked = @checked; } - public RefKind RefKind { get; } - public BoundExpression? ExpressionOpt { get; } - public bool Checked { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitReturnStatement(this); @@ -3483,8 +3308,8 @@ public BoundYieldReturnStatement(SyntaxNode syntax, BoundExpression expression, this.Expression = expression; } - public BoundExpression Expression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitYieldReturnStatement(this); @@ -3512,6 +3337,7 @@ public BoundYieldBreakStatement(SyntaxNode syntax) { } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitYieldBreakStatement(this); } @@ -3524,8 +3350,8 @@ public BoundThrowStatement(SyntaxNode syntax, BoundExpression? expressionOpt, bo this.ExpressionOpt = expressionOpt; } - public BoundExpression? ExpressionOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitThrowStatement(this); @@ -3552,8 +3378,8 @@ public BoundExpressionStatement(SyntaxNode syntax, BoundExpression expression, b this.Expression = expression; } - public BoundExpression Expression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitExpressionStatement(this); @@ -3589,8 +3415,8 @@ public BoundBreakStatement(SyntaxNode syntax, GeneratedLabelSymbol label) this.Label = label; } - public GeneratedLabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBreakStatement(this); @@ -3626,8 +3452,8 @@ public BoundContinueStatement(SyntaxNode syntax, GeneratedLabelSymbol label) this.Label = label; } - public GeneratedLabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitContinueStatement(this); @@ -3665,20 +3491,14 @@ public BoundSwitchStatement(SyntaxNode syntax, BoundExpression expression, Immut this.BreakLabel = breakLabel; } - public BoundExpression Expression { get; } - public ImmutableArray InnerLocals { get; } - public ImmutableArray InnerLocalFunctions { get; } - public ImmutableArray SwitchSections { get; } - public BoundDecisionDag ReachabilityDecisionDag { get; } - public BoundSwitchLabel? DefaultLabel { get; } - public GeneratedLabelSymbol BreakLabel { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSwitchStatement(this); @@ -3709,12 +3529,10 @@ public BoundSwitchDispatch(SyntaxNode syntax, BoundExpression expression, Immuta this.DefaultLabel = defaultLabel; } - public BoundExpression Expression { get; } - public ImmutableArray<(ConstantValue value, LabelSymbol label)> Cases { get; } - public LabelSymbol DefaultLabel { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSwitchDispatch(this); @@ -3744,12 +3562,10 @@ public BoundIfStatement(SyntaxNode syntax, BoundExpression condition, BoundState this.AlternativeOpt = alternativeOpt; } - public BoundExpression Condition { get; } - public BoundStatement Consequence { get; } - public BoundStatement? AlternativeOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitIfStatement(this); @@ -3789,9 +3605,7 @@ protected BoundLoopStatement(BoundKind kind, SyntaxNode syntax, GeneratedLabelSy this.ContinueLabel = continueLabel; } - public GeneratedLabelSymbol BreakLabel { get; } - public GeneratedLabelSymbol ContinueLabel { get; } } @@ -3812,11 +3626,8 @@ protected BoundConditionalLoopStatement(BoundKind kind, SyntaxNode syntax, Immut this.Body = body; } - public ImmutableArray Locals { get; } - public BoundExpression Condition { get; } - public BoundStatement Body { get; } } @@ -3834,6 +3645,7 @@ public BoundDoStatement(SyntaxNode syntax, ImmutableArray locals, B } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDoStatement(this); @@ -3863,6 +3675,7 @@ public BoundWhileStatement(SyntaxNode syntax, ImmutableArray locals } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitWhileStatement(this); @@ -3898,18 +3711,13 @@ public BoundForStatement(SyntaxNode syntax, ImmutableArray outerLoc this.Body = body; } - public ImmutableArray OuterLocals { get; } - public BoundStatement? Initializer { get; } - public ImmutableArray InnerLocals { get; } - public BoundExpression? Condition { get; } - public BoundStatement? Increment { get; } - public BoundStatement Body { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitForStatement(this); @@ -3950,26 +3758,17 @@ public BoundForEachStatement(SyntaxNode syntax, ForEachEnumeratorInfo? enumerato this.Body = body; } - public ForEachEnumeratorInfo? EnumeratorInfoOpt { get; } - public BoundValuePlaceholder? ElementPlaceholder { get; } - public BoundExpression? ElementConversion { get; } - public BoundTypeExpression IterationVariableType { get; } - public ImmutableArray IterationVariables { get; } - public BoundExpression? IterationErrorExpressionOpt { get; } - public BoundExpression Expression { get; } - public BoundForEachDeconstructStep? DeconstructionOpt { get; } - public BoundAwaitableInfo? AwaitOpt { get; } - public BoundStatement Body { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitForEachStatement(this); @@ -3998,10 +3797,9 @@ public BoundForEachDeconstructStep(SyntaxNode syntax, BoundDeconstructionAssignm this.TargetPlaceholder = targetPlaceholder; } - public BoundDeconstructionAssignmentOperator DeconstructionAssignment { get; } - public BoundDeconstructValuePlaceholder TargetPlaceholder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitForEachDeconstructStep(this); @@ -4034,18 +3832,13 @@ public BoundUsingStatement(SyntaxNode syntax, ImmutableArray locals this.PatternDisposeInfoOpt = patternDisposeInfoOpt; } - public ImmutableArray Locals { get; } - public BoundMultipleLocalDeclarations? DeclarationsOpt { get; } - public BoundExpression? ExpressionOpt { get; } - public BoundStatement Body { get; } - public BoundAwaitableInfo? AwaitOpt { get; } - public MethodArgumentInfo? PatternDisposeInfoOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUsingStatement(this); @@ -4076,12 +3869,10 @@ public BoundFixedStatement(SyntaxNode syntax, ImmutableArray locals this.Body = body; } - public ImmutableArray Locals { get; } - public BoundMultipleLocalDeclarations Declarations { get; } - public BoundStatement Body { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFixedStatement(this); @@ -4110,10 +3901,9 @@ public BoundLockStatement(SyntaxNode syntax, BoundExpression argument, BoundStat this.Body = body; } - public BoundExpression Argument { get; } - public BoundStatement Body { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLockStatement(this); @@ -4145,16 +3935,12 @@ public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray< this.PreferFaultHandler = preferFaultHandler; } - public BoundBlock TryBlock { get; } - public ImmutableArray CatchBlocks { get; } - public BoundBlock? FinallyBlockOpt { get; } - public LabelSymbol? FinallyLabelOpt { get; } - public bool PreferFaultHandler { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTryStatement(this); @@ -4188,20 +3974,14 @@ public BoundCatchBlock(SyntaxNode syntax, ImmutableArray locals, Bo this.IsSynthesizedAsyncCatchAll = isSynthesizedAsyncCatchAll; } - public ImmutableArray Locals { get; } - public BoundExpression? ExceptionSourceOpt { get; } - public TypeSymbol? ExceptionTypeOpt { get; } - public BoundStatementList? ExceptionFilterPrologueOpt { get; } - public BoundExpression? ExceptionFilterOpt { get; } - public BoundBlock Body { get; } - public bool IsSynthesizedAsyncCatchAll { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitCatchBlock(this); @@ -4231,8 +4011,8 @@ public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymb this.ConstantValueOpt = constantValueOpt; } - public ConstantValue? ConstantValueOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLiteral(this); @@ -4270,10 +4050,9 @@ public BoundUTF8String(SyntaxNode syntax, string value, TypeSymbol type) this.Value = value; } - public new TypeSymbol Type => base.Type!; - public string Value { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUTF8String(this); @@ -4307,8 +4086,8 @@ public BoundThisReference(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitThisReference(this); @@ -4342,8 +4121,8 @@ public BoundPreviousSubmissionReference(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPreviousSubmissionReference(this); @@ -4377,8 +4156,8 @@ public BoundHostObjectMemberReference(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitHostObjectMemberReference(this); @@ -4406,8 +4185,8 @@ public BoundBaseReference(SyntaxNode syntax, TypeSymbol? type) { } - public new TypeSymbol? Type => base.Type; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBaseReference(this); @@ -4451,16 +4230,12 @@ public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarat this.IsNullableUnknown = isNullableUnknown; } - public new TypeSymbol Type => base.Type!; - public LocalSymbol LocalSymbol { get; } - public BoundLocalDeclarationKind DeclarationKind { get; } - public ConstantValue? ConstantValueOpt { get; } - public bool IsNullableUnknown { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLocal(this); @@ -4502,12 +4277,10 @@ public BoundPseudoVariable(SyntaxNode syntax, LocalSymbol localSymbol, PseudoVar this.EmitExpressions = emitExpressions; } - public new TypeSymbol Type => base.Type!; - public LocalSymbol LocalSymbol { get; } - public PseudoVariableExpressions EmitExpressions { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPseudoVariable(this); @@ -4537,12 +4310,10 @@ public BoundRangeVariable(SyntaxNode syntax, RangeVariableSymbol rangeVariableSy this.Value = value; } - public new TypeSymbol Type => base.Type!; - public RangeVariableSymbol RangeVariableSymbol { get; } - public BoundExpression Value { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRangeVariable(this); @@ -4580,10 +4351,9 @@ public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, TypeSy this.ParameterSymbol = parameterSymbol; } - public new TypeSymbol Type => base.Type!; - public ParameterSymbol ParameterSymbol { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitParameter(this); @@ -4619,8 +4389,8 @@ public BoundLabelStatement(SyntaxNode syntax, LabelSymbol label) this.Label = label; } - public LabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLabelStatement(this); @@ -4649,12 +4419,10 @@ public BoundGotoStatement(SyntaxNode syntax, LabelSymbol label, BoundExpression? this.LabelExpressionOpt = labelExpressionOpt; } - public LabelSymbol Label { get; } - public BoundExpression? CaseExpressionOpt { get; } - public BoundLabel? LabelExpressionOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitGotoStatement(this); @@ -4683,10 +4451,9 @@ public BoundLabeledStatement(SyntaxNode syntax, LabelSymbol label, BoundStatemen this.Body = body; } - public LabelSymbol Label { get; } - public BoundStatement Body { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLabeledStatement(this); @@ -4722,8 +4489,8 @@ public BoundLabel(SyntaxNode syntax, LabelSymbol label, TypeSymbol? type) this.Label = label; } - public LabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLabel(this); @@ -4759,8 +4526,8 @@ public BoundStatementList(SyntaxNode syntax, ImmutableArray stat this.Statements = statements; } - public ImmutableArray Statements { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitStatementList(this); @@ -4790,12 +4557,10 @@ public BoundConditionalGoto(SyntaxNode syntax, BoundExpression condition, bool j this.Label = label; } - public BoundExpression Condition { get; } - public bool JumpIfTrue { get; } - public LabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConditionalGoto(this); @@ -4828,15 +4593,10 @@ protected BoundSwitchExpression(BoundKind kind, SyntaxNode syntax, BoundExpressi this.ReportedNotExhaustive = reportedNotExhaustive; } - public BoundExpression Expression { get; } - public ImmutableArray SwitchArms { get; } - public BoundDecisionDag ReachabilityDecisionDag { get; } - public LabelSymbol? DefaultLabel { get; } - public bool ReportedNotExhaustive { get; } } @@ -4858,16 +4618,12 @@ public BoundSwitchExpressionArm(SyntaxNode syntax, ImmutableArray l this.Label = label; } - public ImmutableArray Locals { get; } - public BoundPattern Pattern { get; } - public BoundExpression? WhenClause { get; } - public BoundExpression Value { get; } - public LabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSwitchExpressionArm(this); @@ -4895,6 +4651,7 @@ public BoundUnconvertedSwitchExpression(SyntaxNode syntax, BoundExpression expre } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUnconvertedSwitchExpression(this); @@ -4925,12 +4682,10 @@ public BoundConvertedSwitchExpression(SyntaxNode syntax, TypeSymbol? naturalType this.WasTargetTyped = wasTargetTyped; } - public new TypeSymbol Type => base.Type!; - public TypeSymbol? NaturalTypeOpt { get; } - public bool WasTargetTyped { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConvertedSwitchExpression(this); @@ -4957,8 +4712,8 @@ public BoundDecisionDag(SyntaxNode syntax, BoundDecisionDagNode rootNode, bool h this.RootNode = rootNode; } - public BoundDecisionDagNode RootNode { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDecisionDag(this); @@ -5001,10 +4756,9 @@ public BoundEvaluationDecisionDagNode(SyntaxNode syntax, BoundDagEvaluation eval this.Next = next; } - public BoundDagEvaluation Evaluation { get; } - public BoundDecisionDagNode Next { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitEvaluationDecisionDagNode(this); @@ -5035,12 +4789,10 @@ public BoundTestDecisionDagNode(SyntaxNode syntax, BoundDagTest test, BoundDecis this.WhenFalse = whenFalse; } - public BoundDagTest Test { get; } - public BoundDecisionDagNode WhenTrue { get; } - public BoundDecisionDagNode WhenFalse { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTestDecisionDagNode(this); @@ -5071,14 +4823,11 @@ public BoundWhenDecisionDagNode(SyntaxNode syntax, ImmutableArray Bindings { get; } - public BoundExpression? WhenExpression { get; } - public BoundDecisionDagNode WhenTrue { get; } - public BoundDecisionDagNode? WhenFalse { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitWhenDecisionDagNode(this); @@ -5114,8 +4863,8 @@ public BoundLeafDecisionDagNode(SyntaxNode syntax, LabelSymbol label) this.Label = label; } - public LabelSymbol Label { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLeafDecisionDagNode(this); @@ -5142,7 +4891,6 @@ protected BoundDagTest(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bo this.Input = input; } - public BoundDagTemp Input { get; } } @@ -5159,12 +4907,10 @@ public BoundDagTemp(SyntaxNode syntax, TypeSymbol type, BoundDagEvaluation? sour this.Index = index; } - public TypeSymbol Type { get; } - public BoundDagEvaluation? Source { get; } - public int Index { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagTemp(this); @@ -5192,8 +4938,8 @@ public BoundDagTypeTest(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, this.Type = type; } - public TypeSymbol Type { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagTypeTest(this); @@ -5220,8 +4966,8 @@ public BoundDagNonNullTest(SyntaxNode syntax, bool isExplicitTest, BoundDagTemp this.IsExplicitTest = isExplicitTest; } - public bool IsExplicitTest { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagNonNullTest(this); @@ -5247,6 +4993,7 @@ public BoundDagExplicitNullTest(SyntaxNode syntax, BoundDagTemp input, bool hasE } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagExplicitNullTest(this); @@ -5274,8 +5021,8 @@ public BoundDagValueTest(SyntaxNode syntax, ConstantValue value, BoundDagTemp in this.Value = value; } - public ConstantValue Value { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagValueTest(this); @@ -5304,10 +5051,9 @@ public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind this.Value = value; } - public BinaryOperatorKind OperatorKind { get; } - public ConstantValue Value { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagRelationalTest(this); @@ -5347,8 +5093,8 @@ public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstruct this.DeconstructMethod = deconstructMethod; } - public MethodSymbol DeconstructMethod { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagDeconstructEvaluation(this); @@ -5376,8 +5122,8 @@ public BoundDagTypeEvaluation(SyntaxNode syntax, TypeSymbol type, BoundDagTemp i this.Type = type; } - public TypeSymbol Type { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagTypeEvaluation(this); @@ -5405,8 +5151,8 @@ public BoundDagFieldEvaluation(SyntaxNode syntax, FieldSymbol field, BoundDagTem this.Field = field; } - public FieldSymbol Field { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagFieldEvaluation(this); @@ -5435,10 +5181,9 @@ public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bo this.IsLengthOrCount = isLengthOrCount; } - public PropertySymbol Property { get; } - public bool IsLengthOrCount { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagPropertyEvaluation(this); @@ -5467,10 +5212,9 @@ public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int i this.Index = index; } - public PropertySymbol Property { get; } - public int Index { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagIndexEvaluation(this); @@ -5511,18 +5255,13 @@ public BoundDagIndexerEvaluation(SyntaxNode syntax, TypeSymbol indexerType, Boun [Conditional("DEBUG")] private partial void Validate(); - public TypeSymbol IndexerType { get; } - public BoundDagTemp LengthTemp { get; } - public int Index { get; } - public BoundExpression IndexerAccess { get; } - public BoundListPatternReceiverPlaceholder ReceiverPlaceholder { get; } - public BoundListPatternIndexPlaceholder ArgumentPlaceholder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagIndexerEvaluation(this); @@ -5564,20 +5303,14 @@ public BoundDagSliceEvaluation(SyntaxNode syntax, TypeSymbol sliceType, BoundDag [Conditional("DEBUG")] private partial void Validate(); - public TypeSymbol SliceType { get; } - public BoundDagTemp LengthTemp { get; } - public int StartIndex { get; } - public int EndIndex { get; } - public BoundExpression IndexerAccess { get; } - public BoundSlicePatternReceiverPlaceholder ReceiverPlaceholder { get; } - public BoundSlicePatternRangePlaceholder ArgumentPlaceholder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagSliceEvaluation(this); @@ -5605,8 +5338,8 @@ public BoundDagAssignmentEvaluation(SyntaxNode syntax, BoundDagTemp target, Boun this.Target = target; } - public BoundDagTemp Target { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDagAssignmentEvaluation(this); @@ -5636,10 +5369,9 @@ public BoundSwitchSection(SyntaxNode syntax, ImmutableArray locals, this.SwitchLabels = switchLabels; } - public ImmutableArray Locals { get; } - public ImmutableArray SwitchLabels { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSwitchSection(this); @@ -5669,12 +5401,10 @@ public BoundSwitchLabel(SyntaxNode syntax, LabelSymbol label, BoundPattern patte this.WhenClause = whenClause; } - public LabelSymbol Label { get; } - public BoundPattern Pattern { get; } - public BoundExpression? WhenClause { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSwitchLabel(this); @@ -5696,16 +5426,12 @@ protected BoundMethodOrPropertyGroup(BoundKind kind, SyntaxNode syntax, BoundExp : base(kind, syntax, null, hasErrors) { this.ReceiverOpt = receiverOpt; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public new TypeSymbol? Type => base.Type; - public BoundExpression? ReceiverOpt { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } + public override LookupResultKind ResultKind { get; } } internal sealed partial class BoundSequencePointExpression : BoundExpression @@ -5719,8 +5445,8 @@ public BoundSequencePointExpression(SyntaxNode syntax, BoundExpression expressio this.Expression = expression; } - public BoundExpression Expression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSequencePointExpression(this); @@ -5752,14 +5478,11 @@ public BoundSequence(SyntaxNode syntax, ImmutableArray locals, Immu this.Value = value; } - public new TypeSymbol Type => base.Type!; - public ImmutableArray Locals { get; } - public ImmutableArray SideEffects { get; } - public BoundExpression Value { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSequence(this); @@ -5791,14 +5514,11 @@ public BoundSpillSequence(SyntaxNode syntax, ImmutableArray locals, this.Value = value; } - public new TypeSymbol Type => base.Type!; - public ImmutableArray Locals { get; } - public ImmutableArray SideEffects { get; } - public BoundExpression Value { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSpillSequence(this); @@ -5831,18 +5551,13 @@ public BoundDynamicMemberAccess(SyntaxNode syntax, BoundExpression receiver, Imm this.Indexed = indexed; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Receiver { get; } - public ImmutableArray TypeArgumentsOpt { get; } - public string Name { get; } - public bool Invoked { get; } - public bool Indexed { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDynamicMemberAccess(this); @@ -5871,9 +5586,7 @@ protected BoundDynamicInvocableBase(BoundKind kind, SyntaxNode syntax, BoundExpr this.Arguments = arguments; } - public BoundExpression Expression { get; } - public ImmutableArray Arguments { get; } } @@ -5893,14 +5606,11 @@ public BoundDynamicInvocation(SyntaxNode syntax, ImmutableArray argument this.ApplicableMethods = applicableMethods; } - public new TypeSymbol Type => base.Type!; - public ImmutableArray ArgumentNamesOpt { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } - public ImmutableArray ApplicableMethods { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDynamicInvocation(this); @@ -5930,12 +5640,10 @@ public BoundConditionalAccess(SyntaxNode syntax, BoundExpression receiver, Bound this.AccessExpression = accessExpression; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Receiver { get; } - public BoundExpression AccessExpression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConditionalAccess(this); @@ -5968,18 +5676,13 @@ public BoundLoweredConditionalAccess(SyntaxNode syntax, BoundExpression receiver this.Id = id; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Receiver { get; } - public MethodSymbol? HasValueMethodOpt { get; } - public BoundExpression WhenNotNull { get; } - public BoundExpression? WhenNullOpt { get; } - public int Id { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLoweredConditionalAccess(this); @@ -6015,10 +5718,9 @@ public BoundConditionalReceiver(SyntaxNode syntax, int id, TypeSymbol type) this.Id = id; } - public new TypeSymbol Type => base.Type!; - public int Id { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConditionalReceiver(this); @@ -6048,12 +5750,10 @@ public BoundComplexConditionalReceiver(SyntaxNode syntax, BoundExpression valueT this.ReferenceTypeReceiver = referenceTypeReceiver; } - public new TypeSymbol Type => base.Type!; - public BoundExpression ValueTypeReceiver { get; } - public BoundExpression ReferenceTypeReceiver { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitComplexConditionalReceiver(this); @@ -6087,20 +5787,14 @@ public BoundMethodGroup(SyntaxNode syntax, ImmutableArray t this.FunctionType = functionType; } - public ImmutableArray TypeArgumentsOpt { get; } - public string Name { get; } - public ImmutableArray Methods { get; } - public Symbol? LookupSymbolOpt { get; } - public DiagnosticInfo? LookupError { get; } - public BoundMethodGroupFlags? Flags { get; } - public FunctionTypeSymbol? FunctionType { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitMethodGroup(this); @@ -6127,8 +5821,8 @@ public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray prop this.Properties = properties; } - public ImmutableArray Properties { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPropertyGroup(this); @@ -6164,37 +5858,24 @@ public BoundCall(SyntaxNode syntax, BoundExpression? receiverOpt, MethodSymbol m this.InvokedAsExtensionMethod = invokedAsExtensionMethod; this.ArgsToParamsOpt = argsToParamsOpt; this.DefaultArguments = defaultArguments; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.OriginalMethodsOpt = originalMethodsOpt; } - public new TypeSymbol Type => base.Type!; - public BoundExpression? ReceiverOpt { get; } - public MethodSymbol Method { get; } - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentNamesOpt { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } - public bool IsDelegateCall { get; } - public bool Expanded { get; } - public bool InvokedAsExtensionMethod { get; } - public ImmutableArray ArgsToParamsOpt { get; } - public BitVector DefaultArguments { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public ImmutableArray OriginalMethodsOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitCall(this); @@ -6227,18 +5908,13 @@ public BoundEventAssignmentOperator(SyntaxNode syntax, EventSymbol @event, bool this.Argument = argument; } - public new TypeSymbol Type => base.Type!; - public EventSymbol Event { get; } - public bool IsAddition { get; } - public bool IsDynamic { get; } - public BoundExpression? ReceiverOpt { get; } - public BoundExpression Argument { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitEventAssignmentOperator(this); @@ -6271,28 +5947,19 @@ public BoundAttribute(SyntaxNode syntax, MethodSymbol? constructor, ImmutableArr this.ConstructorExpanded = constructorExpanded; this.ConstructorDefaultArguments = constructorDefaultArguments; this.NamedArguments = namedArguments; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public new TypeSymbol Type => base.Type!; - public MethodSymbol? Constructor { get; } - public ImmutableArray ConstructorArguments { get; } - public ImmutableArray ConstructorArgumentNamesOpt { get; } - public ImmutableArray ConstructorArgumentsToParamsOpt { get; } - public bool ConstructorExpanded { get; } - public BitVector ConstructorDefaultArguments { get; } - public ImmutableArray NamedArguments { get; } + public override LookupResultKind ResultKind { get; } - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAttribute(this); @@ -6324,18 +5991,13 @@ public BoundUnconvertedObjectCreationExpression(SyntaxNode syntax, ImmutableArra this.Binder = binder; } - public new TypeSymbol? Type => base.Type; - public ImmutableArray Arguments { get; } - public ImmutableArray<(string Name, Location Location)?> ArgumentNamesOpt { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } - public InitializerExpressionSyntax? InitializerOpt { get; } - public Binder Binder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUnconvertedObjectCreationExpression(this); @@ -6369,7 +6031,6 @@ protected BoundObjectCreationExpressionBase(BoundKind kind, SyntaxNode syntax, T } - public new TypeSymbol Type => base.Type!; } @@ -6384,50 +6045,31 @@ public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor RoslynDebug.Assert(!arguments.IsDefault, "Field 'arguments' cannot be null (use Null=\"allow\" in BoundNodes.xml to remove this check)"); RoslynDebug.Assert(type is object, "Field 'type' cannot be null (make the type nullable in BoundNodes.xml to remove this check)"); - this._Constructor = constructor; + this.Constructor = constructor; this.ConstructorsGroup = constructorsGroup; - this._Arguments = arguments; - this._ArgumentNamesOpt = argumentNamesOpt; - this._ArgumentRefKindsOpt = argumentRefKindsOpt; - this._Expanded = expanded; - this._ArgsToParamsOpt = argsToParamsOpt; - this._DefaultArguments = defaultArguments; + this.Arguments = arguments; + this.ArgumentNamesOpt = argumentNamesOpt; + this.ArgumentRefKindsOpt = argumentRefKindsOpt; + this.Expanded = expanded; + this.ArgsToParamsOpt = argsToParamsOpt; + this.DefaultArguments = defaultArguments; this.ConstantValueOpt = constantValueOpt; - this._InitializerExpressionOpt = initializerExpressionOpt; - this._WasTargetTyped = wasTargetTyped; + this.InitializerExpressionOpt = initializerExpressionOpt; + this.WasTargetTyped = wasTargetTyped; } - - private readonly MethodSymbol _Constructor; - public override MethodSymbol Constructor { get { return _Constructor; } } - + public override MethodSymbol Constructor { get; } public ImmutableArray ConstructorsGroup { get; } - - private readonly ImmutableArray _Arguments; - public override ImmutableArray Arguments { get { return _Arguments; } } - - private readonly ImmutableArray _ArgumentNamesOpt; - public override ImmutableArray ArgumentNamesOpt { get { return _ArgumentNamesOpt; } } - - private readonly ImmutableArray _ArgumentRefKindsOpt; - public override ImmutableArray ArgumentRefKindsOpt { get { return _ArgumentRefKindsOpt; } } - - private readonly bool _Expanded; - public override bool Expanded { get { return _Expanded; } } - - private readonly ImmutableArray _ArgsToParamsOpt; - public override ImmutableArray ArgsToParamsOpt { get { return _ArgsToParamsOpt; } } - - private readonly BitVector _DefaultArguments; - public override BitVector DefaultArguments { get { return _DefaultArguments; } } - + public override ImmutableArray Arguments { get; } + public override ImmutableArray ArgumentNamesOpt { get; } + public override ImmutableArray ArgumentRefKindsOpt { get; } + public override bool Expanded { get; } + public override ImmutableArray ArgsToParamsOpt { get; } + public override BitVector DefaultArguments { get; } public ConstantValue? ConstantValueOpt { get; } + public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get; } + public override bool WasTargetTyped { get; } - private readonly BoundObjectInitializerExpressionBase? _InitializerExpressionOpt; - public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get { return _InitializerExpressionOpt; } } - - private readonly bool _WasTargetTyped; - public override bool WasTargetTyped { get { return _WasTargetTyped; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitObjectCreationExpression(this); @@ -6456,11 +6098,8 @@ protected BoundTupleExpression(BoundKind kind, SyntaxNode syntax, ImmutableArray this.InferredNamesOpt = inferredNamesOpt; } - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentNamesOpt { get; } - public ImmutableArray InferredNamesOpt { get; } } @@ -6474,8 +6113,8 @@ public BoundTupleLiteral(SyntaxNode syntax, ImmutableArray argu } - public new TypeSymbol? Type => base.Type; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTupleLiteral(this); @@ -6503,10 +6142,9 @@ public BoundConvertedTupleLiteral(SyntaxNode syntax, BoundTupleLiteral? sourceTu this.WasTargetTyped = wasTargetTyped; } - public BoundTupleLiteral? SourceTuple { get; } - public bool WasTargetTyped { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConvertedTupleLiteral(this); @@ -6534,33 +6172,22 @@ public BoundDynamicObjectCreationExpression(SyntaxNode syntax, string name, Immu RoslynDebug.Assert(type is object, "Field 'type' cannot be null (make the type nullable in BoundNodes.xml to remove this check)"); this.Name = name; - this._Arguments = arguments; - this._ArgumentNamesOpt = argumentNamesOpt; - this._ArgumentRefKindsOpt = argumentRefKindsOpt; - this._InitializerExpressionOpt = initializerExpressionOpt; + this.Arguments = arguments; + this.ArgumentNamesOpt = argumentNamesOpt; + this.ArgumentRefKindsOpt = argumentRefKindsOpt; + this.InitializerExpressionOpt = initializerExpressionOpt; this.ApplicableMethods = applicableMethods; - this._WasTargetTyped = wasTargetTyped; + this.WasTargetTyped = wasTargetTyped; } - public string Name { get; } - - private readonly ImmutableArray _Arguments; - public override ImmutableArray Arguments { get { return _Arguments; } } - - private readonly ImmutableArray _ArgumentNamesOpt; - public override ImmutableArray ArgumentNamesOpt { get { return _ArgumentNamesOpt; } } - - private readonly ImmutableArray _ArgumentRefKindsOpt; - public override ImmutableArray ArgumentRefKindsOpt { get { return _ArgumentRefKindsOpt; } } - - private readonly BoundObjectInitializerExpressionBase? _InitializerExpressionOpt; - public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get { return _InitializerExpressionOpt; } } - + public override ImmutableArray Arguments { get; } + public override ImmutableArray ArgumentNamesOpt { get; } + public override ImmutableArray ArgumentRefKindsOpt { get; } + public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get; } public ImmutableArray ApplicableMethods { get; } + public override bool WasTargetTyped { get; } - private readonly bool _WasTargetTyped; - public override bool WasTargetTyped { get { return _WasTargetTyped; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDynamicObjectCreationExpression(this); @@ -6585,18 +6212,14 @@ public BoundNoPiaObjectCreationExpression(SyntaxNode syntax, string? guidString, RoslynDebug.Assert(type is object, "Field 'type' cannot be null (make the type nullable in BoundNodes.xml to remove this check)"); this.GuidString = guidString; - this._InitializerExpressionOpt = initializerExpressionOpt; - this._WasTargetTyped = wasTargetTyped; + this.InitializerExpressionOpt = initializerExpressionOpt; + this.WasTargetTyped = wasTargetTyped; } - public string? GuidString { get; } + public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get; } + public override bool WasTargetTyped { get; } - private readonly BoundObjectInitializerExpressionBase? _InitializerExpressionOpt; - public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get { return _InitializerExpressionOpt; } } - - private readonly bool _WasTargetTyped; - public override bool WasTargetTyped { get { return _WasTargetTyped; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNoPiaObjectCreationExpression(this); @@ -6626,11 +6249,8 @@ protected BoundObjectInitializerExpressionBase(BoundKind kind, SyntaxNode syntax this.Initializers = initializers; } - public new TypeSymbol Type => base.Type!; - public BoundObjectOrCollectionValuePlaceholder Placeholder { get; } - public ImmutableArray Initializers { get; } } @@ -6646,6 +6266,7 @@ public BoundObjectInitializerExpression(SyntaxNode syntax, BoundObjectOrCollecti } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitObjectInitializerExpression(this); @@ -6678,31 +6299,21 @@ public BoundObjectInitializerMember(SyntaxNode syntax, Symbol? memberSymbol, Imm this.Expanded = expanded; this.ArgsToParamsOpt = argsToParamsOpt; this.DefaultArguments = defaultArguments; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.ReceiverType = receiverType; } - public new TypeSymbol Type => base.Type!; - public Symbol? MemberSymbol { get; } - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentNamesOpt { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } - public bool Expanded { get; } - public ImmutableArray ArgsToParamsOpt { get; } - public BitVector DefaultArguments { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public TypeSymbol ReceiverType { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitObjectInitializerMember(this); @@ -6744,12 +6355,10 @@ public BoundDynamicObjectInitializerMember(SyntaxNode syntax, string memberName, this.ReceiverType = receiverType; } - public new TypeSymbol Type => base.Type!; - public string MemberName { get; } - public TypeSymbol ReceiverType { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDynamicObjectInitializerMember(this); @@ -6777,6 +6386,7 @@ public BoundCollectionInitializerExpression(SyntaxNode syntax, BoundObjectOrColl } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitCollectionInitializerExpression(this); @@ -6809,28 +6419,19 @@ public BoundCollectionElementInitializer(SyntaxNode syntax, MethodSymbol addMeth this.ArgsToParamsOpt = argsToParamsOpt; this.DefaultArguments = defaultArguments; this.InvokedAsExtensionMethod = invokedAsExtensionMethod; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public new TypeSymbol Type => base.Type!; - public MethodSymbol AddMethod { get; } - public ImmutableArray Arguments { get; } - public BoundExpression? ImplicitReceiverOpt { get; } - public bool Expanded { get; } - public ImmutableArray ArgsToParamsOpt { get; } - public BitVector DefaultArguments { get; } - public bool InvokedAsExtensionMethod { get; } + public override LookupResultKind ResultKind { get; } - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitCollectionElementInitializer(this); @@ -6860,10 +6461,9 @@ public BoundDynamicCollectionElementInitializer(SyntaxNode syntax, ImmutableArra this.ApplicableMethods = applicableMethods; } - public new TypeSymbol Type => base.Type!; - public ImmutableArray ApplicableMethods { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDynamicCollectionElementInitializer(this); @@ -6897,8 +6497,8 @@ public BoundImplicitReceiver(SyntaxNode syntax, TypeSymbol type) } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitImplicitReceiver(this); @@ -6930,14 +6530,11 @@ public BoundAnonymousObjectCreationExpression(SyntaxNode syntax, MethodSymbol co this.Declarations = declarations; } - public new TypeSymbol Type => base.Type!; - public MethodSymbol Constructor { get; } - public ImmutableArray Arguments { get; } - public ImmutableArray Declarations { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAnonymousObjectCreationExpression(this); @@ -6975,10 +6572,9 @@ public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol prope this.Property = property; } - public new TypeSymbol Type => base.Type!; - public PropertySymbol Property { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitAnonymousPropertyDeclaration(this); @@ -7002,16 +6598,13 @@ public BoundNewT(SyntaxNode syntax, BoundObjectInitializerExpressionBase? initia RoslynDebug.Assert(type is object, "Field 'type' cannot be null (make the type nullable in BoundNodes.xml to remove this check)"); - this._InitializerExpressionOpt = initializerExpressionOpt; - this._WasTargetTyped = wasTargetTyped; + this.InitializerExpressionOpt = initializerExpressionOpt; + this.WasTargetTyped = wasTargetTyped; } + public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get; } + public override bool WasTargetTyped { get; } - private readonly BoundObjectInitializerExpressionBase? _InitializerExpressionOpt; - public override BoundObjectInitializerExpressionBase? InitializerExpressionOpt { get { return _InitializerExpressionOpt; } } - - private readonly bool _WasTargetTyped; - public override bool WasTargetTyped { get { return _WasTargetTyped; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNewT(this); @@ -7042,16 +6635,12 @@ public BoundDelegateCreationExpression(SyntaxNode syntax, BoundExpression argume this.WasTargetTyped = wasTargetTyped; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Argument { get; } - public MethodSymbol? MethodOpt { get; } - public bool IsExtensionMethod { get; } - public bool WasTargetTyped { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDelegateCreationExpression(this); @@ -7080,12 +6669,10 @@ public BoundArrayCreation(SyntaxNode syntax, ImmutableArray bou this.InitializerOpt = initializerOpt; } - public new TypeSymbol Type => base.Type!; - public ImmutableArray Bounds { get; } - public BoundArrayInitialization? InitializerOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitArrayCreation(this); @@ -7113,12 +6700,10 @@ public BoundArrayInitialization(SyntaxNode syntax, bool isInferred, ImmutableArr this.Initializers = initializers; } - public new TypeSymbol? Type => base.Type; - public bool IsInferred { get; } - public ImmutableArray Initializers { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitArrayInitialization(this); @@ -7148,11 +6733,8 @@ protected BoundStackAllocArrayCreationBase(BoundKind kind, SyntaxNode syntax, Ty this.InitializerOpt = initializerOpt; } - public TypeSymbol ElementType { get; } - public BoundExpression Count { get; } - public BoundArrayInitialization? InitializerOpt { get; } } @@ -7167,6 +6749,7 @@ public BoundStackAllocArrayCreation(SyntaxNode syntax, TypeSymbol elementType, B } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitStackAllocArrayCreation(this); @@ -7194,8 +6777,8 @@ public BoundConvertedStackAllocExpression(SyntaxNode syntax, TypeSymbol elementT } - public new TypeSymbol Type => base.Type!; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConvertedStackAllocExpression(this); @@ -7223,26 +6806,19 @@ public BoundFieldAccess(SyntaxNode syntax, BoundExpression? receiverOpt, FieldSy this.ReceiverOpt = receiverOpt; this.FieldSymbol = fieldSymbol; this.ConstantValueOpt = constantValueOpt; - this._ResultKind = resultKind; + this.ResultKind = resultKind; this.IsByValue = isByValue; this.IsDeclaration = isDeclaration; } - public new TypeSymbol Type => base.Type!; - public BoundExpression? ReceiverOpt { get; } - public FieldSymbol FieldSymbol { get; } - public ConstantValue? ConstantValueOpt { get; } - - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } - + public override LookupResultKind ResultKind { get; } public bool IsByValue { get; } - public bool IsDeclaration { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitFieldAccess(this); @@ -7280,10 +6856,9 @@ public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeS this.FieldSymbol = fieldSymbol; } - public new TypeSymbol Type => base.Type!; - public FieldSymbol FieldSymbol { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitHoistedFieldAccess(this); @@ -7310,18 +6885,14 @@ public BoundPropertyAccess(SyntaxNode syntax, BoundExpression? receiverOpt, Prop this.ReceiverOpt = receiverOpt; this.PropertySymbol = propertySymbol; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public new TypeSymbol Type => base.Type!; - public BoundExpression? ReceiverOpt { get; } - public PropertySymbol PropertySymbol { get; } + public override LookupResultKind ResultKind { get; } - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPropertyAccess(this); @@ -7349,20 +6920,15 @@ public BoundEventAccess(SyntaxNode syntax, BoundExpression? receiverOpt, EventSy this.ReceiverOpt = receiverOpt; this.EventSymbol = eventSymbol; this.IsUsableAsField = isUsableAsField; - this._ResultKind = resultKind; + this.ResultKind = resultKind; } - public new TypeSymbol Type => base.Type!; - public BoundExpression? ReceiverOpt { get; } - public EventSymbol EventSymbol { get; } - public bool IsUsableAsField { get; } + public override LookupResultKind ResultKind { get; } - private readonly LookupResultKind _ResultKind; - public override LookupResultKind ResultKind { get { return _ResultKind; } } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitEventAccess(this); @@ -7399,26 +6965,17 @@ public BoundIndexerAccess(SyntaxNode syntax, BoundExpression? receiverOpt, Prope this.OriginalIndexersOpt = originalIndexersOpt; } - public new TypeSymbol Type => base.Type!; - public BoundExpression? ReceiverOpt { get; } - public PropertySymbol Indexer { get; } - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentNamesOpt { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } - public bool Expanded { get; } - public ImmutableArray ArgsToParamsOpt { get; } - public BitVector DefaultArguments { get; } - public ImmutableArray OriginalIndexersOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitIndexerAccess(this); @@ -7460,20 +7017,14 @@ public BoundImplicitIndexerAccess(SyntaxNode syntax, BoundExpression receiver, B [Conditional("DEBUG")] private partial void Validate(); - public new TypeSymbol Type => base.Type!; - public BoundExpression Receiver { get; } - public BoundExpression Argument { get; } - public BoundExpression LengthOrCountAccess { get; } - public BoundImplicitIndexerReceiverPlaceholder ReceiverPlaceholder { get; } - public BoundExpression IndexerOrSliceAccess { get; } - public ImmutableArray ArgumentPlaceholders { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitImplicitIndexerAccess(this); @@ -7507,18 +7058,13 @@ public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, Im this.ApplicableIndexers = applicableIndexers; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Receiver { get; } - public ImmutableArray Arguments { get; } - public ImmutableArray ArgumentNamesOpt { get; } - public ImmutableArray ArgumentRefKindsOpt { get; } - public ImmutableArray ApplicableIndexers { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDynamicIndexerAccess(this); @@ -7552,18 +7098,13 @@ public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, LambdaSymbol this.Binder = binder; } - public UnboundLambda UnboundLambda { get; } - public LambdaSymbol Symbol { get; } - public new TypeSymbol? Type => base.Type; - public BoundBlock Body { get; } - public ImmutableBindingDiagnostic Diagnostics { get; } - public Binder Binder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitLambda(this); @@ -7603,14 +7144,11 @@ public UnboundLambda(SyntaxNode syntax, UnboundLambdaState data, FunctionTypeSym this.WithDependencies = withDependencies; } - public new TypeSymbol? Type => base.Type; - public UnboundLambdaState Data { get; } - public FunctionTypeSymbol? FunctionType { get; } - public Boolean WithDependencies { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitUnboundLambda(this); @@ -7644,20 +7182,14 @@ public BoundQueryClause(SyntaxNode syntax, BoundExpression value, RangeVariableS this.UnoptimizedForm = unoptimizedForm; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Value { get; } - public RangeVariableSymbol? DefinedSymbol { get; } - public BoundExpression? Operation { get; } - public BoundExpression? Cast { get; } - public Binder Binder { get; } - public BoundExpression? UnoptimizedForm { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitQueryClause(this); @@ -7683,6 +7215,7 @@ public BoundTypeOrInstanceInitializers(SyntaxNode syntax, ImmutableArray visitor.VisitTypeOrInstanceInitializers(this); @@ -7712,12 +7245,10 @@ public BoundNameOfOperator(SyntaxNode syntax, BoundExpression argument, Constant this.ConstantValueOpt = constantValueOpt; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Argument { get; } - public ConstantValue ConstantValueOpt { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNameOfOperator(this); @@ -7745,9 +7276,7 @@ protected BoundInterpolatedStringBase(BoundKind kind, SyntaxNode syntax, Immutab this.ConstantValueOpt = constantValueOpt; } - public ImmutableArray Parts { get; } - public ConstantValue? ConstantValueOpt { get; } } @@ -7761,6 +7290,7 @@ public BoundUnconvertedInterpolatedString(SyntaxNode syntax, ImmutableArray visitor.VisitUnconvertedInterpolatedString(this); @@ -7787,8 +7317,8 @@ public BoundInterpolatedString(SyntaxNode syntax, InterpolatedStringHandlerData? this.InterpolationData = interpolationData; } - public InterpolatedStringHandlerData? InterpolationData { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitInterpolatedString(this); @@ -7816,6 +7346,7 @@ public BoundInterpolatedStringHandlerPlaceholder(SyntaxNode syntax, TypeSymbol? { } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitInterpolatedStringHandlerPlaceholder(this); @@ -7853,12 +7384,10 @@ public BoundInterpolatedStringArgumentPlaceholder(SyntaxNode syntax, int argumen this.ValSafeToEscape = valSafeToEscape; } - public new TypeSymbol Type => base.Type!; - public int ArgumentIndex { get; } - public uint ValSafeToEscape { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitInterpolatedStringArgumentPlaceholder(this); @@ -7888,16 +7417,12 @@ public BoundStringInsert(SyntaxNode syntax, BoundExpression value, BoundExpressi this.IsInterpolatedStringHandlerAppendCall = isInterpolatedStringHandlerAppendCall; } - public new TypeSymbol? Type => base.Type; - public BoundExpression Value { get; } - public BoundExpression? Alignment { get; } - public BoundLiteral? Format { get; } - public bool IsInterpolatedStringHandlerAppendCall { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitStringInsert(this); @@ -7933,18 +7458,13 @@ public BoundIsPatternExpression(SyntaxNode syntax, BoundExpression expression, B this.WhenFalseLabel = whenFalseLabel; } - public BoundExpression Expression { get; } - public BoundPattern Pattern { get; } - public bool IsNegated { get; } - public BoundDecisionDag ReachabilityDecisionDag { get; } - public LabelSymbol WhenTrueLabel { get; } - public LabelSymbol WhenFalseLabel { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitIsPatternExpression(this); @@ -7984,9 +7504,7 @@ protected BoundPattern(BoundKind kind, SyntaxNode syntax, TypeSymbol inputType, this.NarrowedType = narrowedType; } - public TypeSymbol InputType { get; } - public TypeSymbol NarrowedType { get; } } @@ -8005,10 +7523,9 @@ public BoundConstantPattern(SyntaxNode syntax, BoundExpression value, ConstantVa this.ConstantValue = constantValue; } - public BoundExpression Value { get; } - public ConstantValue ConstantValue { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConstantPattern(this); @@ -8044,6 +7561,7 @@ public BoundDiscardPattern(SyntaxNode syntax, TypeSymbol inputType, TypeSymbol n } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDiscardPattern(this); @@ -8072,9 +7590,7 @@ protected BoundObjectPattern(BoundKind kind, SyntaxNode syntax, Symbol? variable this.VariableAccess = variableAccess; } - public Symbol? Variable { get; } - public BoundExpression? VariableAccess { get; } } @@ -8092,10 +7608,9 @@ public BoundDeclarationPattern(SyntaxNode syntax, BoundTypeExpression declaredTy this.IsVar = isVar; } - public BoundTypeExpression DeclaredType { get; } - public bool IsVar { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDeclarationPattern(this); @@ -8127,16 +7642,12 @@ public BoundRecursivePattern(SyntaxNode syntax, BoundTypeExpression? declaredTyp this.IsExplicitNotNullTest = isExplicitNotNullTest; } - public BoundTypeExpression? DeclaredType { get; } - public MethodSymbol? DeconstructMethod { get; } - public ImmutableArray Deconstruction { get; } - public ImmutableArray Properties { get; } - public bool IsExplicitNotNullTest { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRecursivePattern(this); @@ -8174,18 +7685,13 @@ public BoundListPattern(SyntaxNode syntax, ImmutableArray subpatte [Conditional("DEBUG")] private partial void Validate(); - public ImmutableArray Subpatterns { get; } - public bool HasSlice { get; } - public BoundExpression? LengthAccess { get; } - public BoundExpression? IndexerAccess { get; } - public BoundListPatternReceiverPlaceholder? ReceiverPlaceholder { get; } - public BoundListPatternIndexPlaceholder? ArgumentPlaceholder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitListPattern(this); @@ -8220,14 +7726,11 @@ public BoundSlicePattern(SyntaxNode syntax, BoundPattern? pattern, BoundExpressi [Conditional("DEBUG")] private partial void Validate(); - public BoundPattern? Pattern { get; } - public BoundExpression? IndexerAccess { get; } - public BoundSlicePatternReceiverPlaceholder? ReceiverPlaceholder { get; } - public BoundSlicePatternRangePlaceholder? ArgumentPlaceholder { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitSlicePattern(this); @@ -8260,12 +7763,10 @@ public BoundITuplePattern(SyntaxNode syntax, MethodSymbol getLengthMethod, Metho this.Subpatterns = subpatterns; } - public MethodSymbol GetLengthMethod { get; } - public MethodSymbol GetItemMethod { get; } - public ImmutableArray Subpatterns { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitITuplePattern(this); @@ -8292,7 +7793,6 @@ protected BoundSubpattern(BoundKind kind, SyntaxNode syntax, BoundPattern patter this.Pattern = pattern; } - public BoundPattern Pattern { get; } } @@ -8307,8 +7807,8 @@ public BoundPositionalSubpattern(SyntaxNode syntax, Symbol? symbol, BoundPattern this.Symbol = symbol; } - public Symbol? Symbol { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPositionalSubpattern(this); @@ -8336,10 +7836,9 @@ public BoundPropertySubpattern(SyntaxNode syntax, BoundPropertySubpatternMember? this.IsLengthOrCount = isLengthOrCount; } - public BoundPropertySubpatternMember? Member { get; } - public bool IsLengthOrCount { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPropertySubpattern(this); @@ -8368,12 +7867,10 @@ public BoundPropertySubpatternMember(SyntaxNode syntax, BoundPropertySubpatternM this.Type = type; } - public BoundPropertySubpatternMember? Receiver { get; } - public Symbol? Symbol { get; } - public TypeSymbol Type { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitPropertySubpatternMember(this); @@ -8403,10 +7900,9 @@ public BoundTypePattern(SyntaxNode syntax, BoundTypeExpression declaredType, boo this.IsExplicitNotNullTest = isExplicitNotNullTest; } - public BoundTypeExpression DeclaredType { get; } - public bool IsExplicitNotNullTest { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitTypePattern(this); @@ -8438,12 +7934,10 @@ public BoundBinaryPattern(SyntaxNode syntax, bool disjunction, BoundPattern left this.Right = right; } - public bool Disjunction { get; } - public BoundPattern Left { get; } - public BoundPattern Right { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitBinaryPattern(this); @@ -8472,8 +7966,8 @@ public BoundNegatedPattern(SyntaxNode syntax, BoundPattern negated, TypeSymbol i this.Negated = negated; } - public BoundPattern Negated { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNegatedPattern(this); @@ -8505,12 +7999,10 @@ public BoundRelationalPattern(SyntaxNode syntax, BinaryOperatorKind relation, Bo this.ConstantValue = constantValue; } - public BinaryOperatorKind Relation { get; } - public BoundExpression Value { get; } - public ConstantValue ConstantValue { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitRelationalPattern(this); @@ -8540,10 +8032,9 @@ public BoundDiscardExpression(SyntaxNode syntax, uint valEscape, TypeSymbol? typ this.ValEscape = valEscape; } - public new TypeSymbol? Type => base.Type; - public uint ValEscape { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDiscardExpression(this); @@ -8570,8 +8061,8 @@ public BoundThrowExpression(SyntaxNode syntax, BoundExpression expression, TypeS this.Expression = expression; } - public BoundExpression Expression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitThrowExpression(this); @@ -8599,11 +8090,8 @@ protected VariablePendingInference(BoundKind kind, SyntaxNode syntax, Symbol var this.ReceiverOpt = receiverOpt; } - public new TypeSymbol? Type => base.Type; - public Symbol VariableSymbol { get; } - public BoundExpression? ReceiverOpt { get; } } @@ -8617,6 +8105,7 @@ public OutVariablePendingInference(SyntaxNode syntax, Symbol variableSymbol, Bou } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitOutVariablePendingInference(this); @@ -8642,6 +8131,7 @@ public DeconstructionVariablePendingInference(SyntaxNode syntax, Symbol variable } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitDeconstructionVariablePendingInference(this); @@ -8669,8 +8159,8 @@ public OutDeconstructVarPendingInference(SyntaxNode syntax) { } - public new TypeSymbol? Type => base.Type; + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitOutDeconstructVarPendingInference(this); @@ -8689,9 +8179,7 @@ protected BoundMethodBodyBase(BoundKind kind, SyntaxNode syntax, BoundBlock? blo this.ExpressionBody = expressionBody; } - public BoundBlock? BlockBody { get; } - public BoundBlock? ExpressionBody { get; } } @@ -8702,6 +8190,7 @@ public BoundNonConstructorMethodBody(SyntaxNode syntax, BoundBlock? blockBody, B { } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitNonConstructorMethodBody(this); @@ -8729,10 +8218,9 @@ public BoundConstructorMethodBody(SyntaxNode syntax, ImmutableArray this.Initializer = initializer; } - public ImmutableArray Locals { get; } - public BoundStatement? Initializer { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitConstructorMethodBody(this); @@ -8760,12 +8248,10 @@ public BoundExpressionWithNullability(SyntaxNode syntax, BoundExpression express this.NullableAnnotation = nullableAnnotation; } - public BoundExpression Expression { get; } - public new TypeSymbol? Type => base.Type; - public NullableAnnotation NullableAnnotation { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitExpressionWithNullability(this); @@ -8796,14 +8282,11 @@ public BoundWithExpression(SyntaxNode syntax, BoundExpression receiver, MethodSy this.InitializerExpression = initializerExpression; } - public new TypeSymbol Type => base.Type!; - public BoundExpression Receiver { get; } - public MethodSymbol? CloneMethod { get; } - public BoundObjectInitializerExpressionBase InitializerExpression { get; } + [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.VisitWithExpression(this); diff --git a/src/Tools/Source/CompilerGeneratorTools/Source/BoundTreeGenerator/BoundNodeClassWriter.cs b/src/Tools/Source/CompilerGeneratorTools/Source/BoundTreeGenerator/BoundNodeClassWriter.cs index e4612add8b8d6..eeb7d410a1862 100644 --- a/src/Tools/Source/CompilerGeneratorTools/Source/BoundTreeGenerator/BoundNodeClassWriter.cs +++ b/src/Tools/Source/CompilerGeneratorTools/Source/BoundTreeGenerator/BoundNodeClassWriter.cs @@ -462,14 +462,7 @@ private void WriteConstructorWithHasErrors(TreeType node, bool isPublic, bool ha foreach (var field in Fields(node)) { - if (IsPropertyOverrides(field)) - { - WriteLine("this._{0} = {1};", field.Name, FieldNullHandling(node, field.Name) == NullHandling.Always ? "null" : ToCamelCase(field.Name)); - } - else - { - WriteLine("this.{0} = {1};", field.Name, FieldNullHandling(node, field.Name) == NullHandling.Always ? "null" : ToCamelCase(field.Name)); - } + WriteLine("this.{0} = {1};", field.Name, FieldNullHandling(node, field.Name) == NullHandling.Always ? "null" : ToCamelCase(field.Name)); } bool hasValidate = HasValidate(node); @@ -605,14 +598,7 @@ private void WriteConstructorWithoutHasErrors(TreeType node, bool isPublic) foreach (var field in Fields(node)) { - if (IsPropertyOverrides(field)) - { - WriteLine("this._{0} = {1};", field.Name, FieldNullHandling(node, field.Name) == NullHandling.Always ? "null" : ToCamelCase(field.Name)); - } - else - { - WriteLine("this.{0} = {1};", field.Name, FieldNullHandling(node, field.Name) == NullHandling.Always ? "null" : ToCamelCase(field.Name)); - } + WriteLine("this.{0} = {1};", field.Name, FieldNullHandling(node, field.Name) == NullHandling.Always ? "null" : ToCamelCase(field.Name)); } Unbrace(); Blank(); @@ -843,11 +829,9 @@ private void WriteField(TreeType node, Field field) switch (_targetLang) { case TargetLanguage.CSharp: - Blank(); if (IsPropertyOverrides(field)) { - WriteLine("private readonly {0} _{1};", field.Type, field.Name); - WriteLine("public override {0}{1} {2} {{ get {{ return _{2}; }} }}", (IsNew(field) ? "new " : ""), field.Type, field.Name); + WriteLine("public override {0}{1} {2} {{ get; }}", (IsNew(field) ? "new " : ""), field.Type, field.Name); } else if (field.Override) { @@ -891,6 +875,7 @@ private void WriteAccept(string name) switch (_targetLang) { case TargetLanguage.CSharp: + Blank(); WriteLine("[DebuggerStepThrough]"); WriteLine("public override BoundNode? Accept(BoundTreeVisitor visitor) => visitor.Visit{0}(this);", StripBound(name)); break; From 1ee15272e4cd09259ba5e5b657ac9281e5748e80 Mon Sep 17 00:00:00 2001 From: "Gen Lu (HE/HIM)" Date: Tue, 14 Jun 2022 11:42:57 -0700 Subject: [PATCH 16/16] Fix merge conflict --- .../Core/IntelliSense/AsyncCompletion/ItemManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs index 86f4f3dad6f18..c0f9325d8622f 100644 --- a/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs +++ b/src/EditorFeatures/Core/IntelliSense/AsyncCompletion/ItemManager.cs @@ -39,7 +39,7 @@ public Task> SortCompletionListAsync( var stopwatch = SharedStopwatch.StartNew(); var items = SortCompletionitems(data, cancellationToken).ToImmutableArray(); - AsyncCompletionLogger.LogItemManagerSortTicksDataPoint((int)stopwatch.Elapsed.TotalMilliseconds); + AsyncCompletionLogger.LogItemManagerSortTicksDataPoint(stopwatch.Elapsed); return Task.FromResult(items); } @@ -51,7 +51,7 @@ public Task> SortCompletionItemListAsync( var stopwatch = SharedStopwatch.StartNew(); var itemList = session.CreateCompletionList(SortCompletionitems(data, cancellationToken)); - AsyncCompletionLogger.LogItemManagerSortTicksDataPoint((int)stopwatch.Elapsed.TotalMilliseconds); + AsyncCompletionLogger.LogItemManagerSortTicksDataPoint(stopwatch.Elapsed); return Task.FromResult(itemList); }