Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
932f16f
Filter closed-derived registrations that don't match the base special…
eiriktsarpalis Jun 10, 2026
c5e3059
Address PR review feedback
eiriktsarpalis Jun 12, 2026
9875420
Switch open-generics polymorphism to universal-applicability rule
eiriktsarpalis Jun 12, 2026
1ab6387
Dedupe SYSLIB1229 source-gen diagnostic across base specializations
eiriktsarpalis Jun 12, 2026
1f20012
Replace constraint subsumption with exact-match equivalence
eiriktsarpalis Jun 12, 2026
1f9794d
Extract tuple-comparer combinator into RoslynExtensions
eiriktsarpalis Jun 12, 2026
d09e5d3
Rename comparer to s_typePairComparer
eiriktsarpalis Jun 12, 2026
7e0ae81
Convert ReportOpenGenericDerivedTypeDiagnostic to a local function
eiriktsarpalis Jun 12, 2026
6cfcb33
Lazily allocate dedup set behind a property
eiriktsarpalis Jun 12, 2026
c2aa07d
Remove redundant comment on s_typePairComparer
eiriktsarpalis Jun 12, 2026
ae3ab09
Group s_typePairComparer with other Parser statics
eiriktsarpalis Jun 12, 2026
45e3ff8
Collapse DiagnosedOpenDerivedRegistrations property to one line
eiriktsarpalis Jun 12, 2026
2bfc384
Integrate non-generic-base guard into TryResolveOpenGenericDerivedType
eiriktsarpalis Jun 12, 2026
1f227eb
Fold closed-derived-on-generic-base check into the resolver
eiriktsarpalis Jun 12, 2026
d989e82
Inline ReportOpenGenericDerivedTypeDiagnostic at its sole call site
eiriktsarpalis Jun 12, 2026
3d0059e
Comment closed-derived-on-generic-base early-out with example
eiriktsarpalis Jun 12, 2026
b3a0af5
Comment the closed-derived/non-generic-base pass-through arm
eiriktsarpalis Jun 12, 2026
aa3b636
Extract open-generic-derived unification core to RoslynExtensions
eiriktsarpalis Jun 12, 2026
ea5cd85
Rename Universal terminology to Uniform and split NonUniformUnification
eiriktsarpalis Jun 12, 2026
dff0e43
Add post-condition assignability check to TryResolveDerivedType
eiriktsarpalis Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions src/libraries/System.Text.Json/gen/Helpers/RoslynExtensions.cs

Large diffs are not rendered by default.

274 changes: 87 additions & 187 deletions src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions src/libraries/System.Text.Json/gen/Resources/Strings.resx
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,13 +231,25 @@
<data name="Polymorphism_OpenGeneric_Reason_UnificationFailed" xml:space="preserve">
<value>the base type's arguments do not match the derived type's base specification</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformUnification" xml:space="preserve">
<value>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_NonUniformPinning" xml:space="preserve">
<value>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_UnboundParameter" xml:space="preserve">
<value>the type parameter '{0}' of the derived type is not bound by the base type's arguments</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintViolation" xml:space="preserve">
<value>the constraint on type parameter '{0}' is not satisfied by '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ConstraintMismatch" xml:space="preserve">
<value>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_AmbiguousMatch" xml:space="preserve">
<value>the derived type matches the base type through multiple ancestors</value>
</data>
<data name="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase" xml:space="preserve">
<value>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</value>
</data>
</root>
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.cs.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="cs" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.de.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.es.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.fr.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.it.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
22 changes: 21 additions & 1 deletion src/libraries/System.Text.Json/gen/Resources/xlf/Strings.ja.xlf
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ja" original="../Strings.resx">
<body>
Expand DownExpand Up@@ -142,11 +142,31 @@
<target state="new">the derived type matches the base type through multiple ancestors</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ClosedDerivedOnGenericBase">
<source>a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</source>
<target state="new">a closed derived type cannot serve a generic base type uniformly; the registration pins a specific specialization of the base</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintMismatch">
<source>the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</source>
<target state="new">the derived type's type parameter '{0}' declares constraints that differ from the constraints on the corresponding base type parameter '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_ConstraintViolation">
<source>the constraint on type parameter '{0}' is not satisfied by '{1}'</source>
<target state="new">the constraint on type parameter '{0}' is not satisfied by '{1}'</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformUnification">
<source>the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</source>
<target state="new">the unification of the derived type with the base type binds a derived type parameter to a target other than a base type parameter</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NonUniformPinning">
<source>the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</source>
<target state="new">the derived type does not apply uniformly to every specialization of the base type because it pins one or more base type arguments</target>
<note />
</trans-unit>
<trans-unit id="Polymorphism_OpenGeneric_Reason_NotAssignable">
<source>the derived type is not assignable to the base type</source>
<target state="new">the derived type is not assignable to the base type</target>
Expand Down
Loading
Loading