summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@friendly-machines.com>2026-04-08 17:05:03 +0200
committerDanny Milosavljevic <dannym@friendly-machines.com>2026-07-17 01:41:57 +0200
commitce5aae4199f0cbd08b6460f568fcbcdef58d9160 (patch)
tree24865770c59d7355ae359db80b5d8958378be3a4 /gnu
parenta0a9240d0aaaab6067fbe6464f20d3942c0657cc (diff)
gnu: Add roslyn@2.8.2.
* gnu/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch: New file. * gnu/local.mk (dist_patch_DATA): Add reference to it. * gnu/packages/dotnet.scm (roslyn-2.8): New variable. Change-Id: I91fc798164f00e51e8e02183f69e478a5e248466
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/dotnet.scm115
-rw-r--r--gnu/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch665
3 files changed, 781 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 46581dd441e..aca3d6cbef6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2426,6 +2426,7 @@ dist_patch_DATA = \
2426 %D%/packages/patches/rocprim-placement-new-delete.patch \ 2426 %D%/packages/patches/rocprim-placement-new-delete.patch \
2427 %D%/packages/patches/roslyn-2.0.0-bootstrap-with-mono.patch \ 2427 %D%/packages/patches/roslyn-2.0.0-bootstrap-with-mono.patch \
2428 %D%/packages/patches/roslyn-2.3.0-default-literal-for-csc-2.0.patch \ 2428 %D%/packages/patches/roslyn-2.3.0-default-literal-for-csc-2.0.patch \
2429 %D%/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch \
2429 %D%/packages/patches/rottlog-direntry.patch \ 2430 %D%/packages/patches/rottlog-direntry.patch \
2430 %D%/packages/patches/ruby-actionpack-remove-browser-tests.patch \ 2431 %D%/packages/patches/ruby-actionpack-remove-browser-tests.patch \
2431 %D%/packages/patches/ruby-activesupport-fix-deprecation-warning.patch \ 2432 %D%/packages/patches/ruby-activesupport-fix-deprecation-warning.patch \
diff --git a/gnu/packages/dotnet.scm b/gnu/packages/dotnet.scm
index e33eeddb981..2564dc2f33f 100644
--- a/gnu/packages/dotnet.scm
+++ b/gnu/packages/dotnet.scm
@@ -2668,6 +2668,121 @@ compiler that can be used to bootstrap newer Roslyn versions.")
2668from source using @code{roslyn-2.0} as the bootstrap compiler. It produces 2668from source using @code{roslyn-2.0} as the bootstrap compiler. It produces
2669a C# 7.1 compiler that supports default literals, which is needed to build 2669a C# 7.1 compiler that supports default literals, which is needed to build
2670newer Roslyn versions."))) 2670newer Roslyn versions.")))
2671
2672;;;
2673;;; roslyn-2.8: inherits roslyn-2.3, built with csc 2.3
2674;;;
2675
2676(define-public roslyn-2.8
2677 (package
2678 (inherit roslyn-2.3)
2679 (version "2.8.2")
2680 (source
2681 (origin
2682 (method git-fetch)
2683 (uri (git-reference
2684 (url "https://github.com/dotnet/roslyn")
2685 (commit (string-append "version-" version))))
2686 (file-name (git-file-name "roslyn" version))
2687 (sha256
2688 (base32
2689 "0xf30h91wf96gj7n2azqplzybzcllfni6cjkibyrr6pr7sv9an1x"))
2690 (patches
2691 (search-patches "roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch"))))
2692 (native-inputs (list roslyn-2.3))
2693 (arguments
2694 (substitute-keyword-arguments (package-arguments roslyn-2.3)
2695 ((#:phases phases '())
2696 #~(modify-phases #$phases
2697 ;; No compiler-compat fixes needed; the patch handles everything.
2698 (replace 'fix-compiler-compat (lambda _ #t))
2699
2700 ;; 2.8.2 also has DiaSymReader COM files to replace.
2701 (replace 'remove-stale-files
2702 (lambda _
2703 ;; Rename file with trailing space in its name.
2704 (rename-file
2705 "src/Compilers/Core/Portable/Operations/IConstructorBodyOperation .cs"
2706 "src/Compilers/Core/Portable/Operations/IConstructorBodyOperation.cs")
2707 (for-each
2708 (lambda (f) (when (file-exists? f) (delete-file f)))
2709 (append
2710 '#$%roslyn-stale-files
2711 '("src/Compilers/Core/Portable/DiaSymReader/Utilities/IUnsafeComStream.cs"
2712 "src/Compilers/Core/Portable/DiaSymReader/Utilities/ComMemoryStream.cs")))))
2713
2714 ;; 2.8.2 also needs DiaSymReader COM stubs.
2715 (add-after 'create-com-memory-stream-stub 'create-diasymreader-stubs
2716 (lambda _
2717 (call-with-output-file
2718 "src/Compilers/Core/Portable/DiaSymReader/Utilities/ComMemoryStream.cs"
2719 (lambda (port)
2720 (display
2721 "using System; using System.Collections.Generic; using System.IO;
2722namespace Microsoft.DiaSymReader
2723{
2724 internal sealed class ComMemoryStream : Stream
2725 {
2726 public override bool CanRead => false;
2727 public override bool CanSeek => true;
2728 public override bool CanWrite => true;
2729 public override long Length => _length;
2730 public override long Position { get; set; }
2731 private long _length;
2732 public override void Flush() {}
2733 public override int Read(byte[] b, int o, int c)
2734 => throw new NotSupportedException();
2735 public override long Seek(long o, SeekOrigin so) => 0;
2736 public override void SetLength(long v) { _length = v; }
2737 public override void Write(byte[] b, int o, int c) {}
2738 public IEnumerable<ArraySegment<byte>> GetChunks()
2739 => Array.Empty<ArraySegment<byte>>();
2740 }
2741}
2742" port)))
2743 (call-with-output-file
2744 "src/Compilers/Core/Portable/DiaSymReader/Utilities/IUnsafeComStream.cs"
2745 (lambda (port)
2746 (display
2747 "namespace Microsoft.DiaSymReader { internal interface IUnsafeComStream {} }\n"
2748 port)))))
2749
2750 ;; Not needed; 2.8.2 has generated files checked in.
2751 (delete 'delete-generated-files)
2752
2753 ;; Point at roslyn-2.3's csc explicitly.
2754 (replace 'create-csc-wrapper
2755 (lambda* (#:key inputs #:allow-other-keys)
2756 (mkdir-p "bootstrap-bin")
2757 (call-with-output-file "bootstrap-bin/csc"
2758 (lambda (port)
2759 (format port "#!~a~%exec mono ~a \"$@\"~%"
2760 (which "bash")
2761 (string-append (assoc-ref inputs "roslyn") "/lib/roslyn/csc.exe"))))
2762 (chmod "bootstrap-bin/csc" #o755)
2763 (setenv "PATH"
2764 (string-append (getcwd) "/bootstrap-bin:"
2765 (getenv "PATH")))))
2766
2767 ;; 2.8.2 source uses C# 7.1 features (default literals).
2768 ;; -d:NET46 selects Mono-compatible code paths in csc.exe.
2769 (replace 'create-csc-rsp
2770 (lambda _
2771 (call-with-output-file "csc.rsp"
2772 (lambda (port)
2773 (display "-langversion:7.1\n-d:NET46\n" port)))))
2774
2775 ;; 2.8.2 has generated files checked in; skip regeneration.
2776 (delete 'generate-source)
2777
2778 ;; prepare-srm-source, build, compile, and install are all
2779 ;; inherited from roslyn-2.3.
2780 ))))
2781 (synopsis "C# 7.2 compiler bootstrapped from source")
2782 (description
2783 "This package provides the Roslyn C# compiler (@command{csc}), built
2784from source using @code{roslyn-2.3} as the bootstrap compiler. It produces
2785a C# 7.2 compiler.")))
2671;; too new version: 15.9.21.664 2786;; too new version: 15.9.21.664
2672;; too old (no support for mono) version: 14.0 2787;; too old (no support for mono) version: 14.0
2673(define-public msbuild 2788(define-public msbuild
diff --git a/gnu/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch b/gnu/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch
new file mode 100644
index 00000000000..369367ca245
--- /dev/null
+++ b/gnu/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch
@@ -0,0 +1,665 @@
1Author: Danny Milosavljevic <dannym@friendly-machines.com>
2Date: 2026-04-08
3Subject: Avoid keyword arguments that come before positional arguments--except as first argument. Avoid readonly struct.
4
5diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs b/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs
6--- a/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs 2018-05-16 21:06:56.000000000 +0000
7+++ b/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs 2026-04-08 01:57:17.283148573 +0000
8@@ -380,7 +380,7 @@
9 var receiver = ((BoundPointerElementAccess)expr).Expression;
10 if (receiver is BoundFieldAccess fieldAccess && fieldAccess.FieldSymbol.IsFixed)
11 {
12- return CheckValueKind(node, fieldAccess.ReceiverOpt, valueKind, checkingReceiver: true, diagnostics);
13+ return CheckValueKind(node, fieldAccess.ReceiverOpt, valueKind, true, diagnostics);
14 }
15 }
16
17@@ -689,7 +689,7 @@
18 // Only ref-assigns produce LValues
19 if (assignment.IsRef)
20 {
21- return CheckValueKind(node, assignment.Left, valueKind, checkingReceiver: false, diagnostics);
22+ return CheckValueKind(node, assignment.Left, valueKind, false, diagnostics);
23 }
24
25 Error(diagnostics, GetStandardLvalueError(valueKind), node);
26@@ -2075,7 +2075,7 @@
27 assignment.Left,
28 escapeFrom,
29 escapeTo,
30- checkingReceiver: false,
31+ false,
32 diagnostics);
33 }
34
35diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder.WithQueryLambdaParametersBinder.cs b/src/Compilers/CSharp/Portable/Binder/Binder.WithQueryLambdaParametersBinder.cs
36--- a/src/Compilers/CSharp/Portable/Binder/Binder.WithQueryLambdaParametersBinder.cs 2018-05-16 21:06:56.000000000 +0000
37+++ b/src/Compilers/CSharp/Portable/Binder/Binder.WithQueryLambdaParametersBinder.cs 2026-04-08 01:57:17.286176376 +0000
38@@ -89,10 +89,10 @@
39 LookupResult lookupResult = LookupResult.GetInstance();
40 LookupOptions options = LookupOptions.MustBeInstance;
41 HashSet<DiagnosticInfo> useSiteDiagnostics = null;
42- LookupMembersWithFallback(lookupResult, receiver.Type, name, 0, ref useSiteDiagnostics, basesBeingResolved: null, options: options);
43+ LookupMembersWithFallback(lookupResult, receiver.Type, name, 0, ref useSiteDiagnostics, null, options);
44 diagnostics.Add(node, useSiteDiagnostics);
45
46- var result = BindMemberOfType(node, node, name, 0, indexed: false, receiver, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeSymbol>), lookupResult, BoundMethodGroupFlags.None, diagnostics);
47+ var result = BindMemberOfType(node, node, name, 0, false, receiver, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeSymbol>), lookupResult, BoundMethodGroupFlags.None, diagnostics);
48 lookupResult.Free();
49 return result;
50 }
51diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder_Await.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Await.cs
52--- a/src/Compilers/CSharp/Portable/Binder/Binder_Await.cs 2018-05-16 21:06:56.000000000 +0000
53+++ b/src/Compilers/CSharp/Portable/Binder/Binder_Await.cs 2026-04-08 01:57:17.281209149 +0000
54@@ -327,7 +327,7 @@
55 {
56 var receiver = new BoundLiteral(node, ConstantValue.Null, awaiterType);
57 var name = WellKnownMemberNames.IsCompleted;
58- var qualified = BindInstanceMemberAccess(node, node, receiver, name, 0, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeSymbol>), invoked: false, indexed: false, diagnostics);
59+ var qualified = BindInstanceMemberAccess(node, node, receiver, name, 0, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeSymbol>), false, false, diagnostics);
60 if (qualified.HasAnyErrors)
61 {
62 isCompletedProperty = null;
63diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs
64--- a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs 2018-05-16 21:06:56.000000000 +0000
65+++ b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs 2026-04-08 01:58:18.449827968 +0000
66@@ -712,15 +712,15 @@
67 // We will not check constraints at this point as this code path
68 // is failure-only and the caller is expected to produce a diagnostic.
69 var tupleType = TupleTypeSymbol.Create(
70- locationOpt: null,
71+ null,
72 subExpressions.SelectAsArray(e => e.Type),
73- elementLocations: default,
74+ default,
75 tupleNames,
76 Compilation,
77- shouldCheckConstraints: false,
78- errorPositions: disallowInferredNames ? inferredPositions : default);
79+ false,
80+ disallowInferredNames ? inferredPositions : default);
81
82- return new BoundTupleLiteral(syntax, argumentNamesOpt: default, inferredPositions, subExpressions, tupleType);
83+ return new BoundTupleLiteral(syntax, default, inferredPositions, subExpressions, tupleType);
84 }
85 default:
86 throw ExceptionUtilities.UnexpectedValue(node.Kind());
87@@ -2726,11 +2726,11 @@
88 return BindStackAllocWithInitializer(
89 node,
90 initializer,
91- type: GetStackAllocType(node, bestType, diagnostics, out bool hasErrors),
92- elementType: bestType,
93- sizeOpt: null,
94+ GetStackAllocType(node, bestType, diagnostics, out bool hasErrors),
95+ bestType,
96+ null,
97 diagnostics,
98- hasErrors: hasErrors,
99+ hasErrors,
100 boundInitializerExpressions);
101 }
102
103@@ -3132,7 +3132,7 @@
104 }
105
106 return node.Initializer == null
107- ? new BoundStackAllocArrayCreation(node, elementType, count, initializerOpt: null, type, hasErrors: hasErrors)
108+ ? new BoundStackAllocArrayCreation(node, elementType, count, null, type, hasErrors)
109 : BindStackAllocWithInitializer(node, node.Initializer, type, elementType, count, diagnostics, hasErrors);
110 }
111
112@@ -3929,13 +3929,13 @@
113
114 // Bind member initializer value, i.e. right part of assignment
115 BoundExpression boundRight = BindInitializerExpressionOrValue(
116- syntax: initializer.Right,
117- type: boundLeft.Type,
118- typeSyntax: boundLeft.Syntax,
119- diagnostics: diagnostics);
120+ initializer.Right,
121+ boundLeft.Type,
122+ boundLeft.Syntax,
123+ diagnostics);
124
125 // Bind member initializer assignment expression
126- return BindAssignment(initializer, boundLeft, boundRight, isRef: false, diagnostics);
127+ return BindAssignment(initializer, boundLeft, boundRight, false, diagnostics);
128 }
129 }
130
131@@ -4403,12 +4403,12 @@
132
133 if (implicitReceiver.Type.IsDynamic())
134 {
135- var hasErrors = ReportBadDynamicArguments(elementInitializer, boundElementInitializerExpressions, refKinds: default, diagnostics, queryClause: null);
136+ var hasErrors = ReportBadDynamicArguments(elementInitializer, boundElementInitializerExpressions, default, diagnostics, null);
137
138 return new BoundDynamicCollectionElementInitializer(
139 elementInitializer,
140- arguments: boundElementInitializerExpressions,
141- applicableMethods: ImmutableArray<MethodSymbol>.Empty,
142+ boundElementInitializerExpressions,
143+ ImmutableArray<MethodSymbol>.Empty,
144 type: GetSpecialType(SpecialType.System_Void, diagnostics, elementInitializer),
145 hasErrors: hasErrors);
146 }
147@@ -4996,9 +4996,9 @@
148 else
149 {
150 result.ReportDiagnostics(
151- binder: this, location: errorLocation, nodeOpt: null, diagnostics,
152- name: errorName, receiver: null, invokedExpression: null, analyzedArguments,
153- memberGroup: candidateConstructors, typeContainingConstructors, delegateTypeBeingInvoked: null);
154+ this, errorLocation, null, diagnostics,
155+ errorName, null, null, analyzedArguments,
156+ candidateConstructors, typeContainingConstructors, null);
157 }
158 }
159
160diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder_Invocation.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Invocation.cs
161--- a/src/Compilers/CSharp/Portable/Binder/Binder_Invocation.cs 2018-05-16 21:06:56.000000000 +0000
162+++ b/src/Compilers/CSharp/Portable/Binder/Binder_Invocation.cs 2026-04-08 01:57:17.284392483 +0000
163@@ -83,7 +83,7 @@
164 {
165 Debug.Assert(receiver != null);
166
167- var boundExpression = BindInstanceMemberAccess(node, node, receiver, methodName, typeArgs.NullToEmpty().Length, typeArgsSyntax, typeArgs, invoked: true, indexed: false, diagnostics);
168+ var boundExpression = BindInstanceMemberAccess(node, node, receiver, methodName, typeArgs.NullToEmpty().Length, typeArgsSyntax, typeArgs, true, false, diagnostics);
169
170 // The other consumers of this helper (await and collection initializers) require the target member to be a method.
171 if (!allowFieldsAndProperties && (boundExpression.Kind == BoundKind.FieldAccess || boundExpression.Kind == BoundKind.PropertyAccess))
172diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder_Operators.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Operators.cs
173--- a/src/Compilers/CSharp/Portable/Binder/Binder_Operators.cs 2018-05-16 21:06:56.000000000 +0000
174+++ b/src/Compilers/CSharp/Portable/Binder/Binder_Operators.cs 2026-04-08 01:57:17.288589747 +0000
175@@ -590,7 +590,7 @@
176
177 if (!best.HasValue)
178 {
179- resultSignature = new BinaryOperatorSignature(kind, leftType: null, rightType: null, CreateErrorType());
180+ resultSignature = new BinaryOperatorSignature(kind, null, null, CreateErrorType());
181 foundOperator = false;
182 }
183 else
184@@ -612,7 +612,7 @@
185
186 if (isNullableEquality)
187 {
188- resultSignature = new BinaryOperatorSignature(kind | BinaryOperatorKind.NullableNull, leftType: null, rightType: null,
189+ resultSignature = new BinaryOperatorSignature(kind | BinaryOperatorKind.NullableNull, null, null,
190 GetSpecialType(SpecialType.System_Boolean, diagnostics, node));
191
192 foundOperator = true;
193diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder_Statements.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Statements.cs
194--- a/src/Compilers/CSharp/Portable/Binder/Binder_Statements.cs 2018-05-16 21:06:56.000000000 +0000
195+++ b/src/Compilers/CSharp/Portable/Binder/Binder_Statements.cs 2026-04-08 01:57:17.284982789 +0000
196@@ -1166,11 +1166,11 @@
197 initializer.Syntax,
198 initializer,
199 methodName,
200- rightArity: 0,
201- typeArgumentsSyntax: default,
202- typeArguments: default,
203- invoked: true,
204- indexed: false,
205+ 0,
206+ default,
207+ default,
208+ true,
209+ false,
210 bindingDiagnostics);
211
212 if (boundAccess.Kind != BoundKind.MethodGroup)
213@@ -1387,7 +1387,7 @@
214 if (op1.Type.IsByRefLikeType)
215 {
216 var leftEscape = GetValEscape(op1, LocalScopeDepth);
217- op2 = ValidateEscape(op2, leftEscape, isByRef: false, diagnostics);
218+ op2 = ValidateEscape(op2, leftEscape, false, diagnostics);
219 }
220 }
221
222diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Binder_TupleOperators.cs b/src/Compilers/CSharp/Portable/Binder/Binder_TupleOperators.cs
223--- a/src/Compilers/CSharp/Portable/Binder/Binder_TupleOperators.cs 2018-05-16 21:06:56.000000000 +0000
224+++ b/src/Compilers/CSharp/Portable/Binder/Binder_TupleOperators.cs 2026-04-08 01:57:17.289303605 +0000
225@@ -25,8 +25,8 @@
226
227 // The converted types are only used for the semantic model, so we don't need the conversion diagnostics
228 DiagnosticBag discardDiagnostics = DiagnosticBag.GetInstance();
229- BoundExpression convertedLeft = ApplyConvertedTypes(left, operators, isRight: false, discardDiagnostics);
230- BoundExpression convertedRight = ApplyConvertedTypes(right, operators, isRight: true, discardDiagnostics);
231+ BoundExpression convertedLeft = ApplyConvertedTypes(left, operators, false, discardDiagnostics);
232+ BoundExpression convertedRight = ApplyConvertedTypes(right, operators, true, discardDiagnostics);
233 discardDiagnostics.Free();
234
235 TypeSymbol resultType = GetSpecialType(SpecialType.System_Boolean, diagnostics, node);
236@@ -60,7 +60,7 @@
237 builder.Add(ApplyConvertedTypes(arguments[i], multiple.Operators[i], isRight, diagnostics));
238 }
239
240- return tuple.Update(argumentNamesOpt: default, inferredNamesOpt: default, builder.ToImmutableAndFree(), tuple.Type);
241+ return tuple.Update(default, default, builder.ToImmutableAndFree(), tuple.Type);
242 }
243
244 // This element isn't getting a converted type
245@@ -103,7 +103,7 @@
246 BinaryOperatorAnalysisResult analysisResult;
247
248 bool foundOperator = BindSimpleBinaryOperatorParts(node, diagnostics, left, right, kind,
249- out resultKind, originalUserDefinedOperators: out _, out signature, out analysisResult);
250+ out resultKind, out _, out signature, out analysisResult);
251
252 if (!foundOperator)
253 {
254@@ -407,9 +407,9 @@
255
256 ImmutableArray<Location> elementLocations = elements.SelectAsArray(e => e.Syntax.Location);
257
258- var tuple = TupleTypeSymbol.Create(locationOpt: null, elementTypes: convertedTypes,
259- elementLocations, elementNames: names, compilation,
260- shouldCheckConstraints: true, errorPositions: default, syntax, diagnostics);
261+ var tuple = TupleTypeSymbol.Create(null, convertedTypes,
262+ elementLocations, names, compilation,
263+ true, default, syntax, diagnostics);
264
265 if (!isNullable)
266 {
267diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs b/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs
268--- a/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs 2018-05-16 21:06:56.000000000 +0000
269+++ b/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs 2026-04-08 01:57:17.280914487 +0000
270@@ -268,10 +268,10 @@
271
272 hasErrors |= !CheckMethodReturnValueKind(
273 builder.CurrentPropertyGetter,
274- callSyntaxOpt: null,
275+ null,
276 collectionExpr.Syntax,
277 requiredCurrentKind,
278- checkingReceiver: false,
279+ false,
280 diagnostics);
281 }
282
283diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversion.cs b/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversion.cs
284--- a/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversion.cs 2018-05-16 21:06:56.000000000 +0000
285+++ b/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversion.cs 2026-04-08 01:57:17.280225176 +0000
286@@ -72,7 +72,7 @@
287 private class DeconstructionUncommonData : UncommonData
288 {
289 internal DeconstructionUncommonData(DeconstructMethodInfo deconstructMethodInfoOpt, ImmutableArray<Conversion> nestedConversions)
290- : base(isExtensionMethod: false, isArrayIndex: false, conversionResult: default, conversionMethod: null, nestedConversions)
291+ : base(false, false, default, null, nestedConversions)
292 {
293 Debug.Assert(!nestedConversions.IsDefaultOrEmpty);
294 DeconstructMethodInfo = deconstructMethodInfoOpt;
295diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversions.cs b/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversions.cs
296--- a/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversions.cs 2018-05-16 21:06:56.000000000 +0000
297+++ b/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversions.cs 2026-04-08 01:57:17.279728415 +0000
298@@ -78,7 +78,7 @@
299 }
300 else
301 {
302- return binder.ResolveMethodGroup(source, analyzedArguments: null, isMethodGroupConversion: true, ref useSiteDiagnostics);
303+ return binder.ResolveMethodGroup(source, null, true, ref useSiteDiagnostics);
304 }
305 }
306
307diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Binder/Semantics/OverloadResolution/OverloadResolution.cs b/src/Compilers/CSharp/Portable/Binder/Semantics/OverloadResolution/OverloadResolution.cs
308--- a/src/Compilers/CSharp/Portable/Binder/Semantics/OverloadResolution/OverloadResolution.cs 2018-05-16 21:06:56.000000000 +0000
309+++ b/src/Compilers/CSharp/Portable/Binder/Semantics/OverloadResolution/OverloadResolution.cs 2026-04-08 01:57:17.281726569 +0000
310@@ -3015,7 +3015,7 @@
311 arguments.Arguments.Count,
312 argumentAnalysis.ArgsToParamsOpt,
313 arguments.RefKinds,
314- isMethodGroupConversion: false,
315+ false,
316 allowRefOmittedArguments,
317 out hasAnyRefOmittedArgument);
318
319@@ -3027,7 +3027,7 @@
320 arguments.Arguments.Count,
321 argumentAnalysis.ArgsToParamsOpt,
322 arguments.RefKinds,
323- isMethodGroupConversion: false,
324+ false,
325 allowRefOmittedArguments);
326
327 // The member passed to the following call is returned in the result (possibly a constructed version of it).
328diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs b/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs
329--- a/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs 2018-05-16 21:06:56.000000000 +0000
330+++ b/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs 2026-04-08 01:57:17.279510577 +0000
331@@ -567,7 +567,7 @@
332 internal partial class BoundAddressOfOperator
333 {
334 public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
335- : this(syntax, operand, isManaged: false, type, hasErrors)
336+ : this(syntax, operand, false, type, hasErrors)
337 {
338 }
339 }
340@@ -575,7 +575,7 @@
341 internal partial class BoundForEachStatement
342 {
343 public BoundForEachStatement(SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfoOpt, Conversion elementConversion, BoundTypeExpression iterationVariableType, ImmutableArray<LocalSymbol> iterationVariables, BoundExpression expression, BoundForEachDeconstructStep deconstructionOpt, BoundStatement body, bool @checked, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors = false) :
344- this(syntax, enumeratorInfoOpt, elementConversion, iterationVariableType, iterationVariables, iterationErrorExpressionOpt: null, expression, deconstructionOpt, body, @checked, breakLabel, continueLabel, hasErrors)
345+ this(syntax, enumeratorInfoOpt, elementConversion, iterationVariableType, iterationVariables, null, expression, deconstructionOpt, body, @checked, breakLabel, continueLabel, hasErrors)
346 {
347 }
348 }
349diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs b/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs
350--- a/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs 2018-05-16 21:06:56.000000000 +0000
351+++ b/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs 2026-04-08 01:57:17.279312666 +0000
352@@ -32,15 +32,15 @@
353 ImmutableArray<byte> data = this.GetRawData(initExprs);
354 if (data.All(datum => datum == data[0]))
355 {
356- _builder.EmitStackAllocBlockInitializer(data, inits.Syntax, emitInitBlock: true, _diagnostics);
357+ _builder.EmitStackAllocBlockInitializer(data, inits.Syntax, true, _diagnostics);
358 }
359 else if (elementType.SpecialType.SizeInBytes() == 1)
360 {
361- _builder.EmitStackAllocBlockInitializer(data, inits.Syntax, emitInitBlock: false, _diagnostics);
362+ _builder.EmitStackAllocBlockInitializer(data, inits.Syntax, false, _diagnostics);
363
364 if (initializationStyle == ArrayInitializerStyle.Mixed)
365 {
366- EmitElementStackAllocInitializers(elementType, initExprs, includeConstants: false);
367+ EmitElementStackAllocInitializers(elementType, initExprs, false);
368 }
369 }
370 else
371diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs
372--- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs 2018-05-16 21:06:56.000000000 +0000
373+++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs 2026-04-08 01:57:17.283964612 +0000
374@@ -465,7 +465,7 @@
375 parameters,
376 argumentRefKindsOpt,
377 rewrittenArguments,
378- forceLambdaSpilling: false, // lambda conversions can be re-orderd in calls without side affects
379+ false, // lambda conversions can be re-orderd in calls without side affects
380 actualArguments,
381 refKinds,
382 storesToTemps);
383diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_CompoundAssignmentOperator.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_CompoundAssignmentOperator.cs
384--- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_CompoundAssignmentOperator.cs 2018-05-16 21:06:56.000000000 +0000
385+++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_CompoundAssignmentOperator.cs 2026-04-08 01:57:17.285679855 +0000
386@@ -286,12 +286,12 @@
387 parameters,
388 argumentRefKinds,
389 rewrittenArguments,
390- forceLambdaSpilling: true, // lambdas must produce exactly one delegate so they must be spilled into a temp
391+ true, // lambdas must produce exactly one delegate so they must be spilled into a temp
392 actualArguments,
393 refKinds,
394 storesToTemps);
395
396- // Step two: If we have a params array, build the array and fill in the argument.
397+ // Step two: If we have a params array, build the array and fill in the argument.
398 if (expanded)
399 {
400 BoundExpression array = BuildParamsArray(syntax, indexer, argsToParamsOpt, rewrittenArguments, parameters, actualArguments[actualArguments.Length - 1]);
401diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_FixedStatement.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_FixedStatement.cs
402--- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_FixedStatement.cs 2018-05-16 21:06:56.000000000 +0000
403+++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_FixedStatement.cs 2026-04-08 01:57:17.285919134 +0000
404@@ -382,9 +382,9 @@
405 pinAndGetPtr = new BoundLoweredConditionalAccess(
406 initializerSyntax,
407 initializerExpr,
408- hasValueMethodOpt: null,
409- whenNotNull: pinAndGetPtr,
410- whenNullOpt: null, // just return default(T*)
411+ null,
412+ pinAndGetPtr,
413+ null, // just return default(T*)
414 currentConditionalAccessID,
415 localType);
416 }
417diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_ForEachStatement.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_ForEachStatement.cs
418--- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_ForEachStatement.cs 2018-05-16 21:06:56.000000000 +0000
419+++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_ForEachStatement.cs 2026-04-08 01:57:17.282578725 +0000
420@@ -437,15 +437,15 @@
421
422 // (V)a[p]
423 BoundExpression iterationVarInitValue = MakeConversionNode(
424- syntax: forEachSyntax,
425- rewrittenOperand: BoundCall.Synthesized(
426- syntax: forEachSyntax,
427- receiverOpt: boundArrayVar,
428+ forEachSyntax,
429+ BoundCall.Synthesized(
430+ forEachSyntax,
431+ boundArrayVar,
432 indexerGet,
433 boundPositionVar),
434- conversion: node.ElementConversion,
435- rewrittenType: node.IterationVariableType.Type,
436- @checked: node.Checked);
437+ node.ElementConversion,
438+ node.IterationVariableType.Type,
439+ @node.Checked);
440
441 // V v = (V)a[p]; /* OR */ (D1 d1, ...) = (V)a[p];
442 ImmutableArray<LocalSymbol> iterationVariables = node.IterationVariables;
443@@ -458,14 +458,14 @@
444
445 // a.Length
446 BoundExpression arrayLength = BoundCall.Synthesized(
447- syntax: forEachSyntax,
448- receiverOpt: boundArrayVar,
449+ forEachSyntax,
450+ boundArrayVar,
451 lengthGet);
452
453 // p < a.Length
454 BoundExpression exitCondition = new BoundBinaryOperator(
455- syntax: forEachSyntax,
456- operatorKind: BinaryOperatorKind.IntLessThan,
457+ forEachSyntax,
458+ BinaryOperatorKind.IntLessThan,
459 left: boundPositionVar,
460 right: arrayLength,
461 constantValueOpt: null,
462diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_PointerElementAccess.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_PointerElementAccess.cs
463--- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_PointerElementAccess.cs 2018-05-16 21:06:56.000000000 +0000
464+++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_PointerElementAccess.cs 2026-04-08 01:57:17.285470974 +0000
465@@ -20,7 +20,7 @@
466 {
467 var loweredFieldReceiver = VisitExpression(fieldAccess.ReceiverOpt);
468 fieldAccess = fieldAccess.Update(loweredFieldReceiver, fieldAccess.FieldSymbol, fieldAccess.ConstantValueOpt, fieldAccess.ResultKind, fieldAccess.Type);
469- return new BoundAddressOfOperator(receiver.Syntax, fieldAccess, isManaged: true, fieldAccess.Type);
470+ return new BoundAddressOfOperator(receiver.Syntax, fieldAccess, true, fieldAccess.Type);
471 }
472
473 return VisitExpression(receiver);
474diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_TupleBinaryOperator.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_TupleBinaryOperator.cs
475--- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_TupleBinaryOperator.cs 2018-05-16 21:06:56.000000000 +0000
476+++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_TupleBinaryOperator.cs 2026-04-08 01:57:17.283671002 +0000
477@@ -143,12 +143,12 @@
478
479 BoundExpression leftHasValue, leftValue;
480 bool isLeftNullable;
481- MakeNullableParts(left, temps, innerEffects, outerEffects, saveHasValue: true, out leftHasValue, out leftValue, out isLeftNullable);
482+ MakeNullableParts(left, temps, innerEffects, outerEffects, true, out leftHasValue, out leftValue, out isLeftNullable);
483
484 BoundExpression rightHasValue, rightValue;
485 bool isRightNullable;
486 // no need for local for right.HasValue since used once
487- MakeNullableParts(right, temps, innerEffects, outerEffects, saveHasValue: false, out rightHasValue, out rightValue, out isRightNullable);
488+ MakeNullableParts(right, temps, innerEffects, outerEffects, false, out rightHasValue, out rightValue, out isRightNullable);
489
490 // Produces:
491 // ... logical expression using leftValue and rightValue ...
492@@ -158,7 +158,7 @@
493 // leftValue = left.GetValueOrDefault(); (or left if !leftNullable)
494 // rightValue = right.GetValueOrDefault(); (or right if !rightNullable)
495 // ... logical expression using leftValue and rightValue ...
496- BoundExpression innerSequence = MakeSequenceOrResultValue(locals: ImmutableArray<LocalSymbol>.Empty, innerEffects.ToImmutableAndFree(), logicalExpression);
497+ BoundExpression innerSequence = MakeSequenceOrResultValue(ImmutableArray<LocalSymbol>.Empty, innerEffects.ToImmutableAndFree(), logicalExpression);
498
499 if (!isLeftNullable && !isRightNullable)
500 {
501@@ -340,14 +340,14 @@
502 // !((left == right).op_false)
503 // (left != right).op_true
504
505- BoundExpression dynamicResult = _dynamicFactory.MakeDynamicBinaryOperator(single.Kind, left, right, isCompoundAssignment: false, _compilation.DynamicType).ToExpression();
506+ BoundExpression dynamicResult = _dynamicFactory.MakeDynamicBinaryOperator(single.Kind, left, right, false, _compilation.DynamicType).ToExpression();
507 if (operatorKind == BinaryOperatorKind.Equal)
508 {
509- return _factory.Not(MakeUnaryOperator(UnaryOperatorKind.DynamicFalse, left.Syntax, method: null, dynamicResult, boolType));
510+ return _factory.Not(MakeUnaryOperator(UnaryOperatorKind.DynamicFalse, left.Syntax, null, dynamicResult, boolType));
511 }
512 else
513 {
514- return MakeUnaryOperator(UnaryOperatorKind.DynamicTrue, left.Syntax, method: null, dynamicResult, boolType);
515+ return MakeUnaryOperator(UnaryOperatorKind.DynamicTrue, left.Syntax, null, dynamicResult, boolType);
516 }
517 }
518
519diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs
520--- a/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs 2018-05-16 21:06:56.000000000 +0000
521+++ b/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs 2026-04-08 01:57:17.280561306 +0000
522@@ -591,7 +591,7 @@
523 {
524 builder.Add(PEParameterSymbol.Create(
525 moduleSymbol, this, this.IsMetadataVirtual(), i,
526- paramInfo[i + 1], isReturn: false, out isBadParameter));
527+ paramInfo[i + 1], false, out isBadParameter));
528
529 if (isBadParameter)
530 {
531@@ -616,7 +616,7 @@
532
533 var returnParam = PEParameterSymbol.Create(
534 moduleSymbol, this, this.IsMetadataVirtual(), 0,
535- paramInfo[0], isReturn: true, out isBadParameter);
536+ paramInfo[0], true, out isBadParameter);
537
538 if (makeBad || isBadParameter)
539 {
540diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEParameterSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEParameterSymbol.cs
541--- a/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEParameterSymbol.cs 2018-05-16 21:06:56.000000000 +0000
542+++ b/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEParameterSymbol.cs 2026-04-08 01:57:17.279949039 +0000
543@@ -177,7 +177,7 @@
544 return Create(
545 moduleSymbol, containingSymbol, isContainingSymbolVirtual, ordinal,
546 parameterInfo.IsByRef, parameterInfo.RefCustomModifiers, parameterInfo.Type,
547- handle, parameterInfo.CustomModifiers, isReturn: false, out isBad);
548+ handle, parameterInfo.CustomModifiers, false, out isBad);
549 }
550
551 private PEParameterSymbol(
552diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/CSharp/Portable/Symbols/Source/SourceLocalSymbol.cs b/src/Compilers/CSharp/Portable/Symbols/Source/SourceLocalSymbol.cs
553--- a/src/Compilers/CSharp/Portable/Symbols/Source/SourceLocalSymbol.cs 2018-05-16 21:06:56.000000000 +0000
554+++ b/src/Compilers/CSharp/Portable/Symbols/Source/SourceLocalSymbol.cs 2026-04-08 01:57:17.282290665 +0000
555@@ -604,7 +604,7 @@
556 SyntaxToken identifierToken,
557 ExpressionSyntax collection,
558 LocalDeclarationKind declarationKind) :
559- base(containingSymbol, scopeBinder, allowRefKind: true, typeSyntax, identifierToken, declarationKind)
560+ base(containingSymbol, scopeBinder, true, typeSyntax, identifierToken, declarationKind)
561 {
562 Debug.Assert(declarationKind == LocalDeclarationKind.ForEachIterationVariable);
563 _collection = collection;
564diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Core/Portable/Collections/BitVector.cs b/src/Compilers/Core/Portable/Collections/BitVector.cs
565--- a/src/Compilers/Core/Portable/Collections/BitVector.cs 2018-05-16 21:06:56.000000000 +0000
566+++ b/src/Compilers/Core/Portable/Collections/BitVector.cs 2026-04-08 01:57:17.259296305 +0000
567@@ -216,7 +216,7 @@
568 /// For the purposes of the intersection, any bits beyond the current length will be treated as zeroes.
569 /// Return true if any changes were made to the bits of this bit vector.
570 /// </summary>
571- public bool IntersectWith(in BitVector other)
572+ public bool IntersectWith(BitVector other)
573 {
574 bool anyChanged = false;
575 int otherLength = other._bits.Length;
576@@ -268,7 +268,7 @@
577 /// <returns>
578 /// True if any bits were set as a result of the union.
579 /// </returns>
580- public bool UnionWith(in BitVector other)
581+ public bool UnionWith(BitVector other)
582 {
583 bool anyChanged = false;
584
585diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs b/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs
586--- a/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs 2018-05-16 21:06:56.000000000 +0000
587+++ b/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs 2026-04-08 01:57:17.279039244 +0000
588@@ -647,7 +647,7 @@
589 analyzerDriver = null;
590
591 // Print the diagnostics produced during the parsing stage and exit if there were any errors.
592- compilation.GetDiagnostics(CompilationStage.Parse, includeEarlierStages: false, diagnostics, cancellationToken);
593+ compilation.GetDiagnostics(CompilationStage.Parse, false, diagnostics, cancellationToken);
594 if (diagnostics.HasAnyErrors())
595 {
596 return;
597@@ -673,7 +673,7 @@
598 reportAnalyzer = Arguments.ReportAnalyzer && !analyzers.IsEmpty;
599 }
600
601- compilation.GetDiagnostics(CompilationStage.Declare, includeEarlierStages: false, diagnostics, cancellationToken);
602+ compilation.GetDiagnostics(CompilationStage.Declare, false, diagnostics, cancellationToken);
603 if (diagnostics.HasAnyErrors())
604 {
605 return;
606diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs b/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs
607--- a/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs 2018-05-16 21:06:56.000000000 +0000
608+++ b/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs 2026-04-08 01:57:17.278667628 +0000
609@@ -105,7 +105,7 @@
610 ImmutableDictionary<string, string> properties,
611 params object[] messageArgs)
612 {
613- return Create(descriptor, location, effectiveSeverity: descriptor.DefaultSeverity, additionalLocations, properties, messageArgs);
614+ return Create(descriptor, location, descriptor.DefaultSeverity, additionalLocations, properties, messageArgs);
615 }
616
617 /// <summary>
618diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs b/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs
619--- a/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs 2018-05-16 21:06:56.000000000 +0000
620+++ b/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs 2026-04-08 01:57:17.236542465 +0000
621@@ -88,7 +88,7 @@
622 }
623 }
624
625- internal readonly struct PdbChecksumDebugDirectoryData
626+ internal struct PdbChecksumDebugDirectoryData
627 {
628 /// <summary>
629 /// Checksum algorithm name.
630diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs b/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs
631--- a/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs 2018-05-16 21:06:56.000000000 +0000
632+++ b/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs 2026-04-08 01:57:17.236643093 +0000
633@@ -6,7 +6,7 @@
634
635 namespace Roslyn.Utilities
636 {
637- internal readonly struct ObjectBinderSnapshot
638+ internal struct ObjectBinderSnapshot
639 {
640 private readonly Dictionary<Type, int> _typeToIndex;
641 private readonly ImmutableArray<Type> _types;
642diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Shared/BuildServerConnection.cs b/src/Compilers/Shared/BuildServerConnection.cs
643--- a/src/Compilers/Shared/BuildServerConnection.cs 2018-05-16 21:06:56.000000000 +0000
644+++ b/src/Compilers/Shared/BuildServerConnection.cs 2026-04-08 02:04:15.196339561 +0000
645@@ -126,7 +126,7 @@
646 try
647 {
648 var clientMutexName = GetClientMutexName(pipeName);
649- clientMutex = new Mutex(initiallyOwned: true, name: clientMutexName, out holdsMutex);
650+ clientMutex = new Mutex(true, clientMutexName, out holdsMutex);
651 }
652 catch
653 {
654diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' a/src/Compilers/Shared/DesktopBuildClient.cs b/src/Compilers/Shared/DesktopBuildClient.cs
655--- a/src/Compilers/Shared/DesktopBuildClient.cs 2018-05-16 21:06:56.000000000 +0000
656+++ b/src/Compilers/Shared/DesktopBuildClient.cs 2026-04-08 02:04:15.199139747 +0000
657@@ -33,7 +33,7 @@
658 {
659 // Register encodings for console
660 // https://github.com/dotnet/roslyn/issues/10785
661- System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
662+ // CodePagesEncodingProvider not available in Mono
663 }
664
665 var client = new DesktopBuildClient(language, compileFunc, analyzerAssemblyLoader);