Skip to content

Commit aef3f55

Browse files
Introduce a class library Microsoft.DotNet.ApiSymbolExtensions (#28855)
* Introduce a shared project Microsoft.DotNet.ApiSymbolExtension * Rename ApiSymbolExtension to ApiSymbolExtension(s) * Add Extensions\SymbolExtensions to ApiSymbolExtensions * Change Microsoft.DotNet.ApiSymbolExtensions project type to Class library. Added Microsoft.DotNet.ApiSymbolExtensions.Tests test project * Fix code review's issues. * Code clean-up and revert of DiagnosticId move Co-authored-by: Viktor Hofer <[email protected]>
1 parent 6e95bf9 commit aef3f55

File tree

81 files changed

+886
-576
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+886
-576
lines changed

sdk.sln

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Assets", "Assets", "{06260D
397397
EndProject
398398
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dotnet-new", "dotnet-new", "{81003712-2EF6-47D0-904A-64E4DDD75BF7}"
399399
EndProject
400+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.ApiSymbolExtensions", "src\Microsoft.DotNet.ApiSymbolExtensions\Microsoft.DotNet.ApiSymbolExtensions.csproj", "{08238DE9-701B-4581-A414-51F94C99E44D}"
401+
EndProject
402+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.DotNet.ApiSymbolExtensions.Tests", "src\Tests\Microsoft.DotNet.ApiSymbolExtensions.Tests\Microsoft.DotNet.ApiSymbolExtensions.Tests.csproj", "{E2BC296E-2660-4692-B471-F6FCD4C19F6E}"
403+
EndProject
400404
Global
401405
GlobalSection(SolutionConfigurationPlatforms) = preSolution
402406
Debug|Any CPU = Debug|Any CPU
@@ -755,6 +759,14 @@ Global
755759
{C37EC61D-6A88-4C15-B371-A61F23EF9072}.Debug|Any CPU.Build.0 = Debug|Any CPU
756760
{C37EC61D-6A88-4C15-B371-A61F23EF9072}.Release|Any CPU.ActiveCfg = Release|Any CPU
757761
{C37EC61D-6A88-4C15-B371-A61F23EF9072}.Release|Any CPU.Build.0 = Release|Any CPU
762+
{08238DE9-701B-4581-A414-51F94C99E44D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
763+
{08238DE9-701B-4581-A414-51F94C99E44D}.Debug|Any CPU.Build.0 = Debug|Any CPU
764+
{08238DE9-701B-4581-A414-51F94C99E44D}.Release|Any CPU.ActiveCfg = Release|Any CPU
765+
{08238DE9-701B-4581-A414-51F94C99E44D}.Release|Any CPU.Build.0 = Release|Any CPU
766+
{E2BC296E-2660-4692-B471-F6FCD4C19F6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
767+
{E2BC296E-2660-4692-B471-F6FCD4C19F6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
768+
{E2BC296E-2660-4692-B471-F6FCD4C19F6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
769+
{E2BC296E-2660-4692-B471-F6FCD4C19F6E}.Release|Any CPU.Build.0 = Release|Any CPU
758770
EndGlobalSection
759771
GlobalSection(SolutionProperties) = preSolution
760772
HideSolutionNode = FALSE
@@ -892,6 +904,8 @@ Global
892904
{C37EC61D-6A88-4C15-B371-A61F23EF9072} = {81003712-2EF6-47D0-904A-64E4DDD75BF7}
893905
{06260DC7-BA64-42BE-B99C-6069A1C3E70E} = {580D1AE7-AA8F-4912-8B76-105594E00B3B}
894906
{81003712-2EF6-47D0-904A-64E4DDD75BF7} = {06260DC7-BA64-42BE-B99C-6069A1C3E70E}
907+
{08238DE9-701B-4581-A414-51F94C99E44D} = {22AB674F-ED91-4FBC-BFEE-8A1E82F9F05E}
908+
{E2BC296E-2660-4692-B471-F6FCD4C19F6E} = {580D1AE7-AA8F-4912-8B76-105594E00B3B}
895909
EndGlobalSection
896910
GlobalSection(ExtensibilityGlobals) = postSolution
897911
SolutionGuid = {FB8F26CE-4DE6-433F-B32A-79183020BBD6}

src/ApiCompat/Microsoft.DotNet.ApiCompat.Shared/ApiCompatServiceProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.DotNet.ApiCompatibility.Logging;
77
using Microsoft.DotNet.ApiCompatibility.Rules;
88
using Microsoft.DotNet.ApiCompatibility.Runner;
9+
using Microsoft.DotNet.ApiSymbolExtensions;
910

1011
namespace Microsoft.DotNet.ApiCompat
1112
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Abstractions/CompatDifference.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using Microsoft.CodeAnalysis;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
78

89
namespace Microsoft.DotNet.ApiCompatibility.Abstractions
910
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Abstractions/Mappers/TypeMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
using System.Collections.Generic;
55
using System.Diagnostics;
66
using Microsoft.CodeAnalysis;
7-
using Microsoft.DotNet.ApiCompatibility.Extensions;
87
using Microsoft.DotNet.ApiCompatibility.Rules;
8+
using Microsoft.DotNet.ApiSymbolExtensions;
99

1010
namespace Microsoft.DotNet.ApiCompatibility.Abstractions
1111
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/DefaultSymbolsEqualityComparer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// Copyright (c) .NET Foundation and contributors. All rights reserved.
22
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
33

4-
using Microsoft.CodeAnalysis;
5-
using Microsoft.DotNet.ApiCompatibility.Extensions;
64
using System;
75
using System.Collections.Generic;
6+
using Microsoft.CodeAnalysis;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
88

99
namespace Microsoft.DotNet.ApiCompatibility
1010
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/DiagnosticIds.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ public static class DiagnosticIds
3030
public const string CannotExpandVisibility = "CP0020";
3131

3232
// Assembly loading ids
33-
public const string AssemblyNotFound = "CP1001";
3433
public const string AssemblyReferenceNotFound = "CP1002";
3534
}
3635
}

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/MapperSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections;
55
using System.Collections.Generic;
66
using Microsoft.CodeAnalysis;
7-
using Microsoft.DotNet.ApiCompatibility.Abstractions;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
88

99
namespace Microsoft.DotNet.ApiCompatibility
1010
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Microsoft.DotNet.ApiCompatibility.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
<_MicrosoftCodeAnalysisVersion Condition="'$(DotNetBuildFromSource)' == 'true'">$(MicrosoftCodeAnalysisPackageVersion)</_MicrosoftCodeAnalysisVersion>
1414
</PropertyGroup>
1515

16+
<ItemGroup>
17+
<ProjectReference Include="..\..\Microsoft.DotNet.ApiSymbolExtensions\Microsoft.DotNet.ApiSymbolExtensions.csproj" />
18+
</ItemGroup>
19+
1620
<ItemGroup>
1721
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="$(_MicrosoftCodeAnalysisVersion)" />
1822
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="$(_MicrosoftCodeAnalysisVersion)" />
@@ -25,5 +29,4 @@
2529
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
2630
<Reference Include="System.IO.Compression" />
2731
</ItemGroup>
28-
2932
</Project>

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Resources.resx

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -141,15 +141,9 @@
141141
<data name="AssemblyVersionIsNotCompatible" xml:space="preserve">
142142
<value>{2} assembly version '{0}' should be equal to or higher than {3} version '{1}'.</value>
143143
</data>
144-
<data name="CouldNotResolveReference" xml:space="preserve">
145-
<value>Could not resolve reference '{0}' in any of the provided search directories.</value>
146-
</data>
147144
<data name="ElementShouldNotBeNullAtIndex" xml:space="preserve">
148145
<value>Element should not be null. Found null at index: {0}.</value>
149146
</data>
150-
<data name="FileDoesNotExist" xml:space="preserve">
151-
<value>File '{0}' does not exist.</value>
152-
</data>
153147
<data name="IndexShouldBeWithinSetSizeRange" xml:space="preserve">
154148
<value>The index should be within the right set size range.</value>
155149
</data>
@@ -162,27 +156,12 @@
162156
<data name="MemberExistsOnRight" xml:space="preserve">
163157
<value>Member '{0}' exists on {2} but not on {1}</value>
164158
</data>
165-
<data name="ProvidedPathToLoadBinariesFromNotFound" xml:space="preserve">
166-
<value>Could not find the provided path '{0}' to load binaries from.</value>
167-
</data>
168-
<data name="ProvidedStreamDoesNotHaveMetadata" xml:space="preserve">
169-
<value>Provided stream for assembly '{0}' doesn't have any metadata to read. from.</value>
170-
</data>
171159
<data name="RightNamesAtLeastOne" xml:space="preserve">
172160
<value>Should at least contain one right name.</value>
173161
</data>
174162
<data name="ShouldBeGreaterThanZero" xml:space="preserve">
175163
<value>Value should be greater than 0.</value>
176164
</data>
177-
<data name="ShouldNotBeNullAndContainAtLeastOneElement" xml:space="preserve">
178-
<value>Should not be null and contain at least one element.</value>
179-
</data>
180-
<data name="ShouldProvideValidAssemblyName" xml:space="preserve">
181-
<value>Should provide a valid assembly name.</value>
182-
</data>
183-
<data name="StreamPositionGreaterThanLength" xml:space="preserve">
184-
<value>Stream position is greater than it's length, so there are no contents available to read.</value>
185-
</data>
186165
<data name="TypeMissingOnSide" xml:space="preserve">
187166
<value>Type '{0}' exists on {1} but not on {2}</value>
188167
</data>

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/AttributesMustMatch.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
using System.Linq;
1010
using Microsoft.CodeAnalysis;
1111
using Microsoft.DotNet.ApiCompatibility.Abstractions;
12-
using Microsoft.DotNet.ApiCompatibility.Extensions;
12+
using Microsoft.DotNet.ApiSymbolExtensions;
1313

1414
namespace Microsoft.DotNet.ApiCompatibility.Rules
1515
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/CannotAddAbstractMember.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections.Generic;
55
using Microsoft.CodeAnalysis;
66
using Microsoft.DotNet.ApiCompatibility.Abstractions;
7-
using Microsoft.DotNet.ApiCompatibility.Extensions;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
88

99
namespace Microsoft.DotNet.ApiCompatibility.Rules
1010
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/CannotAddOrRemoveVirtualKeyword.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections.Generic;
55
using Microsoft.CodeAnalysis;
66
using Microsoft.DotNet.ApiCompatibility.Abstractions;
7-
using Microsoft.DotNet.ApiCompatibility.Extensions;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
88

99
namespace Microsoft.DotNet.ApiCompatibility.Rules
1010
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/CannotChangeVisibility.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.Runtime;
77
using Microsoft.CodeAnalysis;
88
using Microsoft.DotNet.ApiCompatibility.Abstractions;
9-
using Microsoft.DotNet.ApiCompatibility.Extensions;
109

1110
namespace Microsoft.DotNet.ApiCompatibility.Rules
1211
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/CannotRemoveBaseTypeOrInterface.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections.Generic;
55
using Microsoft.CodeAnalysis;
66
using Microsoft.DotNet.ApiCompatibility.Abstractions;
7-
using Microsoft.DotNet.ApiCompatibility.Extensions;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
88

99
namespace Microsoft.DotNet.ApiCompatibility.Rules
1010
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/CannotSealType.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Collections.Generic;
55
using Microsoft.CodeAnalysis;
66
using Microsoft.DotNet.ApiCompatibility.Abstractions;
7-
using Microsoft.DotNet.ApiCompatibility.Extensions;
7+
using Microsoft.DotNet.ApiSymbolExtensions;
88

99
namespace Microsoft.DotNet.ApiCompatibility.Rules
1010
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Rules/MembersMustExist.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using System.IO;
66
using Microsoft.CodeAnalysis;
77
using Microsoft.DotNet.ApiCompatibility.Abstractions;
8-
using Microsoft.DotNet.ApiCompatibility.Extensions;
8+
using Microsoft.DotNet.ApiSymbolExtensions;
99

1010
namespace Microsoft.DotNet.ApiCompatibility.Rules
1111
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/Runner/ApiCompatRunner.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.CodeAnalysis;
99
using Microsoft.DotNet.ApiCompatibility.Abstractions;
1010
using Microsoft.DotNet.ApiCompatibility.Logging;
11+
using Microsoft.DotNet.ApiSymbolExtensions;
1112

1213
namespace Microsoft.DotNet.ApiCompatibility.Runner
1314
{

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/xlf/Resources.cs.xlf

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,6 @@
117117
<target state="translated">Nelze odebrat virtuální klíčové slovo ze člena {0}.</target>
118118
<note />
119119
</trans-unit>
120-
<trans-unit id="CouldNotResolveReference">
121-
<source>Could not resolve reference '{0}' in any of the provided search directories.</source>
122-
<target state="translated">V žádném z uvedených adresářů vyhledávání se nepovedlo přeložit odkaz {0}.</target>
123-
<note />
124-
</trans-unit>
125120
<trans-unit id="ElementShouldNotBeNullAtIndex">
126121
<source>Element should not be null. Found null at index: {0}.</source>
127122
<target state="translated">Element by neměl mít hodnotu null. V indexu byla nalezena hodnota null: {0}.</target>
@@ -137,11 +132,6 @@
137132
<target state="translated">Hodnota pole {1} ve výčtu {0} se změnila z {2} na {3}.</target>
138133
<note />
139134
</trans-unit>
140-
<trans-unit id="FileDoesNotExist">
141-
<source>File '{0}' does not exist.</source>
142-
<target state="translated">Soubor {0} neexistuje.</target>
143-
<note />
144-
</trans-unit>
145135
<trans-unit id="IndexShouldBeWithinSetSizeRange">
146136
<source>The index should be within the right set size range.</source>
147137
<target state="translated">Index by měl být ve správném rozsahu velikosti sady.</target>
@@ -162,16 +152,6 @@
162152
<target state="translated">Člen {0} existuje v {2}, ale ne v {1}.</target>
163153
<note />
164154
</trans-unit>
165-
<trans-unit id="ProvidedPathToLoadBinariesFromNotFound">
166-
<source>Could not find the provided path '{0}' to load binaries from.</source>
167-
<target state="translated">Nepovedlo se najít zadanou cestu {0}, ze které se mají načíst binární soubory.</target>
168-
<note />
169-
</trans-unit>
170-
<trans-unit id="ProvidedStreamDoesNotHaveMetadata">
171-
<source>Provided stream for assembly '{0}' doesn't have any metadata to read. from.</source>
172-
<target state="translated">Poskytnutý datový proud pro sestavení {0} nemá žádná metadata pro čtení.</target>
173-
<note />
174-
</trans-unit>
175155
<trans-unit id="RightNamesAtLeastOne">
176156
<source>Should at least contain one right name.</source>
177157
<target state="translated">Měl by obsahovat alespoň jeden správný název.</target>
@@ -182,21 +162,6 @@
182162
<target state="translated">Hodnota by měla být větší než 0.</target>
183163
<note />
184164
</trans-unit>
185-
<trans-unit id="ShouldNotBeNullAndContainAtLeastOneElement">
186-
<source>Should not be null and contain at least one element.</source>
187-
<target state="translated">Nesmí být null a obsahovat alespoň jeden element.</target>
188-
<note />
189-
</trans-unit>
190-
<trans-unit id="ShouldProvideValidAssemblyName">
191-
<source>Should provide a valid assembly name.</source>
192-
<target state="translated">Zadejte platný název sestavení.</target>
193-
<note />
194-
</trans-unit>
195-
<trans-unit id="StreamPositionGreaterThanLength">
196-
<source>Stream position is greater than it's length, so there are no contents available to read.</source>
197-
<target state="translated">Pozice streamu je větší než jeho délka, proto není k dispozici žádný obsah pro čtení.</target>
198-
<note />
199-
</trans-unit>
200165
<trans-unit id="TypeIsActuallySealed">
201166
<source>Type '{0}' has the sealed modifier on {1} but not on {2}</source>
202167
<target state="translated">Typ {0} má zapečetěný modifikátor na {1} ale ne na {2}.</target>

src/ApiCompat/Microsoft.DotNet.ApiCompatibility/xlf/Resources.de.xlf

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,6 @@
117117
<target state="translated">Das virtuelle Schlüsselwort kann nicht aus dem Member „{0}“ entfernt werden.</target>
118118
<note />
119119
</trans-unit>
120-
<trans-unit id="CouldNotResolveReference">
121-
<source>Could not resolve reference '{0}' in any of the provided search directories.</source>
122-
<target state="translated">Der Verweis "{0}" konnte in keinem der angegebenen Suchverzeichnisse aufgelöst werden.</target>
123-
<note />
124-
</trans-unit>
125120
<trans-unit id="ElementShouldNotBeNullAtIndex">
126121
<source>Element should not be null. Found null at index: {0}.</source>
127122
<target state="translated">Das Element darf nicht NULL sein. NULL gefunden bei Index: {0}.</target>
@@ -137,11 +132,6 @@
137132
<target state="translated">Wert des Felds „{1}2 in der Enumeration „{0}2 wurde von „{2}“ in „{3}“ geändert.</target>
138133
<note />
139134
</trans-unit>
140-
<trans-unit id="FileDoesNotExist">
141-
<source>File '{0}' does not exist.</source>
142-
<target state="translated">Die Datei '{0}' ist nicht vorhanden.</target>
143-
<note />
144-
</trans-unit>
145135
<trans-unit id="IndexShouldBeWithinSetSizeRange">
146136
<source>The index should be within the right set size range.</source>
147137
<target state="translated">Der Index muss innerhalb des Größenbereichs für den Rechtesatz liegen.</target>
@@ -162,16 +152,6 @@
162152
<target state="translated">Das Element „{0}“ ist auf {2} vorhanden, aber nicht auf {1}.</target>
163153
<note />
164154
</trans-unit>
165-
<trans-unit id="ProvidedPathToLoadBinariesFromNotFound">
166-
<source>Could not find the provided path '{0}' to load binaries from.</source>
167-
<target state="translated">Der angegebene Pfad "{0}" zum Laden von Binärdateien wurde nicht gefunden.</target>
168-
<note />
169-
</trans-unit>
170-
<trans-unit id="ProvidedStreamDoesNotHaveMetadata">
171-
<source>Provided stream for assembly '{0}' doesn't have any metadata to read. from.</source>
172-
<target state="translated">Der angegebene Datenstrom für die Assembly "{0}" enthält keine Metadaten, aus denen gelesen werden kann.</target>
173-
<note />
174-
</trans-unit>
175155
<trans-unit id="RightNamesAtLeastOne">
176156
<source>Should at least contain one right name.</source>
177157
<target state="translated">Sollte mindestens einen richtigen Namen enthalten.</target>
@@ -182,21 +162,6 @@
182162
<target state="translated">Der Wert muss größer als 0 sein.</target>
183163
<note />
184164
</trans-unit>
185-
<trans-unit id="ShouldNotBeNullAndContainAtLeastOneElement">
186-
<source>Should not be null and contain at least one element.</source>
187-
<target state="translated">Darf nicht NULL sein und muss mindestens ein Element enthalten.</target>
188-
<note />
189-
</trans-unit>
190-
<trans-unit id="ShouldProvideValidAssemblyName">
191-
<source>Should provide a valid assembly name.</source>
192-
<target state="translated">Geben Sie einen gültigen Assemblynamen an.</target>
193-
<note />
194-
</trans-unit>
195-
<trans-unit id="StreamPositionGreaterThanLength">
196-
<source>Stream position is greater than it's length, so there are no contents available to read.</source>
197-
<target state="translated">Die Datenstromposition ist größer als die Länge, daher sind keine Inhalte zum Lesen verfügbar.</target>
198-
<note />
199-
</trans-unit>
200165
<trans-unit id="TypeIsActuallySealed">
201166
<source>Type '{0}' has the sealed modifier on {1} but not on {2}</source>
202167
<target state="translated">Der Typ „{0}“ verfügt über den versiegelten Modifizierer auf {1}, auf {2} aber nicht.</target>

0 commit comments

Comments
 (0)