guix_mirror_bot pushed a commit to branch master
in repository guix.

commit ce5aae4199f0cbd08b6460f568fcbcdef58d9160
Author: Danny Milosavljevic <[email protected]>
AuthorDate: Wed Apr 8 17:05:03 2026 +0200

    gnu: Add [email protected].
    
    * 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
---
 gnu/local.mk                                       |   1 +
 gnu/packages/dotnet.scm                            | 115 ++++
 .../roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch      | 665 +++++++++++++++++++++
 3 files changed, 781 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index 46581dd441..aca3d6cbef 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2426,6 +2426,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/rocprim-placement-new-delete.patch      \
   %D%/packages/patches/roslyn-2.0.0-bootstrap-with-mono.patch  \
   %D%/packages/patches/roslyn-2.3.0-default-literal-for-csc-2.0.patch  \
+  %D%/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch       \
   %D%/packages/patches/rottlog-direntry.patch                  \
   %D%/packages/patches/ruby-actionpack-remove-browser-tests.patch      \
   %D%/packages/patches/ruby-activesupport-fix-deprecation-warning.patch        
\
diff --git a/gnu/packages/dotnet.scm b/gnu/packages/dotnet.scm
index e33eeddb98..2564dc2f33 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.")
 from source using @code{roslyn-2.0} as the bootstrap compiler.  It produces
 a C# 7.1 compiler that supports default literals, which is needed to build
 newer Roslyn versions.")))
+
+;;;
+;;; roslyn-2.8: inherits roslyn-2.3, built with csc 2.3
+;;;
+
+(define-public roslyn-2.8
+  (package
+    (inherit roslyn-2.3)
+    (version "2.8.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/dotnet/roslyn";)
+              (commit (string-append "version-" version))))
+       (file-name (git-file-name "roslyn" version))
+       (sha256
+        (base32
+         "0xf30h91wf96gj7n2azqplzybzcllfni6cjkibyrr6pr7sv9an1x"))
+       (patches
+        (search-patches "roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch"))))
+    (native-inputs (list roslyn-2.3))
+    (arguments
+     (substitute-keyword-arguments (package-arguments roslyn-2.3)
+       ((#:phases phases '())
+        #~(modify-phases #$phases
+            ;; No compiler-compat fixes needed; the patch handles everything.
+            (replace 'fix-compiler-compat (lambda _ #t))
+
+            ;; 2.8.2 also has DiaSymReader COM files to replace.
+            (replace 'remove-stale-files
+              (lambda _
+                ;; Rename file with trailing space in its name.
+                (rename-file
+                 
"src/Compilers/Core/Portable/Operations/IConstructorBodyOperation .cs"
+                 
"src/Compilers/Core/Portable/Operations/IConstructorBodyOperation.cs")
+                (for-each
+                 (lambda (f) (when (file-exists? f) (delete-file f)))
+                 (append
+                  '#$%roslyn-stale-files
+                  
'("src/Compilers/Core/Portable/DiaSymReader/Utilities/IUnsafeComStream.cs"
+                    
"src/Compilers/Core/Portable/DiaSymReader/Utilities/ComMemoryStream.cs")))))
+
+            ;; 2.8.2 also needs DiaSymReader COM stubs.
+            (add-after 'create-com-memory-stream-stub 
'create-diasymreader-stubs
+              (lambda _
+                (call-with-output-file
+                    
"src/Compilers/Core/Portable/DiaSymReader/Utilities/ComMemoryStream.cs"
+                  (lambda (port)
+                    (display
+                     "using System; using System.Collections.Generic; using 
System.IO;
+namespace Microsoft.DiaSymReader
+{
+    internal sealed class ComMemoryStream : Stream
+    {
+        public override bool CanRead => false;
+        public override bool CanSeek => true;
+        public override bool CanWrite => true;
+        public override long Length => _length;
+        public override long Position { get; set; }
+        private long _length;
+        public override void Flush() {}
+        public override int Read(byte[] b, int o, int c)
+            => throw new NotSupportedException();
+        public override long Seek(long o, SeekOrigin so) => 0;
+        public override void SetLength(long v) { _length = v; }
+        public override void Write(byte[] b, int o, int c) {}
+        public IEnumerable<ArraySegment<byte>> GetChunks()
+            => Array.Empty<ArraySegment<byte>>();
+    }
+}
+" port)))
+                (call-with-output-file
+                    
"src/Compilers/Core/Portable/DiaSymReader/Utilities/IUnsafeComStream.cs"
+                  (lambda (port)
+                    (display
+                     "namespace Microsoft.DiaSymReader { internal interface 
IUnsafeComStream {} }\n"
+                     port)))))
+
+            ;; Not needed; 2.8.2 has generated files checked in.
+            (delete 'delete-generated-files)
+
+            ;; Point at roslyn-2.3's csc explicitly.
+            (replace 'create-csc-wrapper
+              (lambda* (#:key inputs #:allow-other-keys)
+                (mkdir-p "bootstrap-bin")
+                (call-with-output-file "bootstrap-bin/csc"
+                  (lambda (port)
+                    (format port "#!~a~%exec mono ~a \"$@\"~%"
+                            (which "bash")
+                            (string-append (assoc-ref inputs "roslyn") 
"/lib/roslyn/csc.exe"))))
+                (chmod "bootstrap-bin/csc" #o755)
+                (setenv "PATH"
+                        (string-append (getcwd) "/bootstrap-bin:"
+                                       (getenv "PATH")))))
+
+            ;; 2.8.2 source uses C# 7.1 features (default literals).
+            ;; -d:NET46 selects Mono-compatible code paths in csc.exe.
+            (replace 'create-csc-rsp
+              (lambda _
+                (call-with-output-file "csc.rsp"
+                  (lambda (port)
+                    (display "-langversion:7.1\n-d:NET46\n" port)))))
+
+            ;; 2.8.2 has generated files checked in; skip regeneration.
+            (delete 'generate-source)
+
+            ;; prepare-srm-source, build, compile, and install are all
+            ;; inherited from roslyn-2.3.
+            ))))
+    (synopsis "C# 7.2 compiler bootstrapped from source")
+    (description
+     "This package provides the Roslyn C# compiler (@command{csc}), built
+from source using @code{roslyn-2.3} as the bootstrap compiler.  It produces
+a C# 7.2 compiler.")))
 ;; too new version: 15.9.21.664
 ;; too old (no support for mono) version: 14.0
 (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 0000000000..369367ca24
--- /dev/null
+++ b/gnu/packages/patches/roslyn-2.8.2-csharp-7.2-for-csc-2.3.patch
@@ -0,0 +1,665 @@
+Author: Danny Milosavljevic <[email protected]>
+Date: 2026-04-08
+Subject: Avoid keyword arguments that come before positional arguments--except 
as first argument.  Avoid readonly struct.
+
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs       
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder.ValueChecks.cs       
2026-04-08 01:57:17.283148573 +0000
+@@ -380,7 +380,7 @@
+                         var receiver = 
((BoundPointerElementAccess)expr).Expression;
+                         if (receiver is BoundFieldAccess fieldAccess && 
fieldAccess.FieldSymbol.IsFixed)
+                         {
+-                            return CheckValueKind(node, 
fieldAccess.ReceiverOpt, valueKind, checkingReceiver: true, diagnostics);
++                            return CheckValueKind(node, 
fieldAccess.ReceiverOpt, valueKind, true, diagnostics);
+                         }
+                     }
+ 
+@@ -689,7 +689,7 @@
+             // Only ref-assigns produce LValues
+             if (assignment.IsRef)
+             {
+-                return CheckValueKind(node, assignment.Left, valueKind, 
checkingReceiver: false, diagnostics);
++                return CheckValueKind(node, assignment.Left, valueKind, 
false, diagnostics);
+             }
+ 
+             Error(diagnostics, GetStandardLvalueError(valueKind), node);
+@@ -2075,7 +2075,7 @@
+                         assignment.Left,
+                         escapeFrom,
+                         escapeTo,
+-                        checkingReceiver: false,
++                        false,
+                         diagnostics);
+             }
+ 
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Binder/Binder.WithQueryLambdaParametersBinder.cs
   2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Binder/Binder.WithQueryLambdaParametersBinder.cs
   2026-04-08 01:57:17.286176376 +0000
+@@ -89,10 +89,10 @@
+                 LookupResult lookupResult = LookupResult.GetInstance();
+                 LookupOptions options = LookupOptions.MustBeInstance;
+                 HashSet<DiagnosticInfo> useSiteDiagnostics = null;
+-                LookupMembersWithFallback(lookupResult, receiver.Type, name, 
0, ref useSiteDiagnostics, basesBeingResolved: null, options: options);
++                LookupMembersWithFallback(lookupResult, receiver.Type, name, 
0, ref useSiteDiagnostics, null, options);
+                 diagnostics.Add(node, useSiteDiagnostics);
+ 
+-                var result = BindMemberOfType(node, node, name, 0, indexed: 
false, receiver, default(SeparatedSyntaxList<TypeSyntax>), 
default(ImmutableArray<TypeSymbol>), lookupResult, BoundMethodGroupFlags.None, 
diagnostics);
++                var result = BindMemberOfType(node, node, name, 0, false, 
receiver, default(SeparatedSyntaxList<TypeSyntax>), 
default(ImmutableArray<TypeSymbol>), lookupResult, BoundMethodGroupFlags.None, 
diagnostics);
+                 lookupResult.Free();
+                 return result;
+             }
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder_Await.cs     2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder_Await.cs     2026-04-08 
01:57:17.281209149 +0000
+@@ -327,7 +327,7 @@
+         {
+             var receiver = new BoundLiteral(node, ConstantValue.Null, 
awaiterType);
+             var name = WellKnownMemberNames.IsCompleted;
+-            var qualified = BindInstanceMemberAccess(node, node, receiver, 
name, 0, default(SeparatedSyntaxList<TypeSyntax>), 
default(ImmutableArray<TypeSymbol>), invoked: false, indexed: false, 
diagnostics);
++            var qualified = BindInstanceMemberAccess(node, node, receiver, 
name, 0, default(SeparatedSyntaxList<TypeSyntax>), 
default(ImmutableArray<TypeSymbol>), false, false, diagnostics);
+             if (qualified.HasAnyErrors)
+             {
+                 isCompletedProperty = null;
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs       
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs       
2026-04-08 01:58:18.449827968 +0000
+@@ -712,15 +712,15 @@
+                         // We will not check constraints at this point as 
this code path
+                         // is failure-only and the caller is expected to 
produce a diagnostic.
+                         var tupleType = TupleTypeSymbol.Create(
+-                            locationOpt: null,
++                            null,
+                             subExpressions.SelectAsArray(e => e.Type),
+-                            elementLocations: default,
++                            default,
+                             tupleNames,
+                             Compilation,
+-                            shouldCheckConstraints: false,
+-                            errorPositions: disallowInferredNames ? 
inferredPositions : default);
++                            false,
++                            disallowInferredNames ? inferredPositions : 
default);
+ 
+-                        return new BoundTupleLiteral(syntax, 
argumentNamesOpt: default, inferredPositions, subExpressions, tupleType);
++                        return new BoundTupleLiteral(syntax, default, 
inferredPositions, subExpressions, tupleType);
+                     }
+                 default:
+                     throw ExceptionUtilities.UnexpectedValue(node.Kind());
+@@ -2726,11 +2726,11 @@
+             return BindStackAllocWithInitializer(
+                 node,
+                 initializer,
+-                type: GetStackAllocType(node, bestType, diagnostics, out bool 
hasErrors),
+-                elementType: bestType,
+-                sizeOpt: null,
++                GetStackAllocType(node, bestType, diagnostics, out bool 
hasErrors),
++                bestType,
++                null,
+                 diagnostics,
+-                hasErrors: hasErrors,
++                hasErrors,
+                 boundInitializerExpressions);
+         }
+ 
+@@ -3132,7 +3132,7 @@
+             }
+ 
+             return node.Initializer == null
+-                ? new BoundStackAllocArrayCreation(node, elementType, count, 
initializerOpt: null, type, hasErrors: hasErrors)
++                ? new BoundStackAllocArrayCreation(node, elementType, count, 
null, type, hasErrors)
+                 : BindStackAllocWithInitializer(node, node.Initializer, type, 
elementType, count, diagnostics, hasErrors);
+         }
+ 
+@@ -3929,13 +3929,13 @@
+ 
+                     // Bind member initializer value, i.e. right part of 
assignment
+                     BoundExpression boundRight = 
BindInitializerExpressionOrValue(
+-                        syntax: initializer.Right,
+-                        type: boundLeft.Type,
+-                        typeSyntax: boundLeft.Syntax,
+-                        diagnostics: diagnostics);
++                        initializer.Right,
++                        boundLeft.Type,
++                        boundLeft.Syntax,
++                        diagnostics);
+ 
+                     // Bind member initializer assignment expression
+-                    return BindAssignment(initializer, boundLeft, boundRight, 
isRef: false, diagnostics);
++                    return BindAssignment(initializer, boundLeft, boundRight, 
false, diagnostics);
+                 }
+             }
+ 
+@@ -4403,12 +4403,12 @@
+ 
+             if (implicitReceiver.Type.IsDynamic())
+             {
+-                var hasErrors = ReportBadDynamicArguments(elementInitializer, 
boundElementInitializerExpressions, refKinds: default, diagnostics, 
queryClause: null);
++                var hasErrors = ReportBadDynamicArguments(elementInitializer, 
boundElementInitializerExpressions, default, diagnostics, null);
+ 
+                 return new BoundDynamicCollectionElementInitializer(
+                     elementInitializer,
+-                    arguments: boundElementInitializerExpressions,
+-                    applicableMethods: ImmutableArray<MethodSymbol>.Empty,
++                    boundElementInitializerExpressions,
++                    ImmutableArray<MethodSymbol>.Empty,
+                     type: GetSpecialType(SpecialType.System_Void, 
diagnostics, elementInitializer),
+                     hasErrors: hasErrors);
+             }
+@@ -4996,9 +4996,9 @@
+                 else
+                 {
+                     result.ReportDiagnostics(
+-                        binder: this, location: errorLocation, nodeOpt: null, 
diagnostics,
+-                        name: errorName, receiver: null, invokedExpression: 
null, analyzedArguments,
+-                        memberGroup: candidateConstructors, 
typeContainingConstructors, delegateTypeBeingInvoked: null);
++                        this, errorLocation, null, diagnostics,
++                        errorName, null, null, analyzedArguments,
++                        candidateConstructors, typeContainingConstructors, 
null);
+                 }
+             }
+ 
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder_Invocation.cs        
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder_Invocation.cs        
2026-04-08 01:57:17.284392483 +0000
+@@ -83,7 +83,7 @@
+         {
+             Debug.Assert(receiver != null);
+ 
+-            var boundExpression = BindInstanceMemberAccess(node, node, 
receiver, methodName, typeArgs.NullToEmpty().Length, typeArgsSyntax, typeArgs, 
invoked: true, indexed: false, diagnostics);
++            var boundExpression = BindInstanceMemberAccess(node, node, 
receiver, methodName, typeArgs.NullToEmpty().Length, typeArgsSyntax, typeArgs, 
true, false, diagnostics);
+ 
+             // The other consumers of this helper (await and collection 
initializers) require the target member to be a method.
+             if (!allowFieldsAndProperties && (boundExpression.Kind == 
BoundKind.FieldAccess || boundExpression.Kind == BoundKind.PropertyAccess))
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder_Operators.cs 2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder_Operators.cs 2026-04-08 
01:57:17.288589747 +0000
+@@ -590,7 +590,7 @@
+ 
+             if (!best.HasValue)
+             {
+-                resultSignature = new BinaryOperatorSignature(kind, leftType: 
null, rightType: null, CreateErrorType());
++                resultSignature = new BinaryOperatorSignature(kind, null, 
null, CreateErrorType());
+                 foundOperator = false;
+             }
+             else
+@@ -612,7 +612,7 @@
+ 
+                 if (isNullableEquality)
+                 {
+-                    resultSignature = new BinaryOperatorSignature(kind | 
BinaryOperatorKind.NullableNull, leftType: null, rightType: null,
++                    resultSignature = new BinaryOperatorSignature(kind | 
BinaryOperatorKind.NullableNull, null, null,
+                         GetSpecialType(SpecialType.System_Boolean, 
diagnostics, node));
+ 
+                     foundOperator = true;
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder_Statements.cs        
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder_Statements.cs        
2026-04-08 01:57:17.284982789 +0000
+@@ -1166,11 +1166,11 @@
+                     initializer.Syntax,
+                     initializer,
+                     methodName,
+-                    rightArity: 0,
+-                    typeArgumentsSyntax: default,
+-                    typeArguments: default,
+-                    invoked: true,
+-                    indexed: false,
++                    0,
++                    default,
++                    default,
++                    true,
++                    false,
+                     bindingDiagnostics);
+ 
+                 if (boundAccess.Kind != BoundKind.MethodGroup)
+@@ -1387,7 +1387,7 @@
+                 if (op1.Type.IsByRefLikeType)
+                 {
+                     var leftEscape = GetValEscape(op1, LocalScopeDepth);
+-                    op2 = ValidateEscape(op2, leftEscape, isByRef: false, 
diagnostics);
++                    op2 = ValidateEscape(op2, leftEscape, false, diagnostics);
+                 }
+             }
+ 
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Binder_TupleOperators.cs    
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Binder_TupleOperators.cs    
2026-04-08 01:57:17.289303605 +0000
+@@ -25,8 +25,8 @@
+ 
+             // The converted types are only used for the semantic model, so 
we don't need the conversion diagnostics
+             DiagnosticBag discardDiagnostics = DiagnosticBag.GetInstance();
+-            BoundExpression convertedLeft = ApplyConvertedTypes(left, 
operators, isRight: false, discardDiagnostics);
+-            BoundExpression convertedRight = ApplyConvertedTypes(right, 
operators, isRight: true, discardDiagnostics);
++            BoundExpression convertedLeft = ApplyConvertedTypes(left, 
operators, false, discardDiagnostics);
++            BoundExpression convertedRight = ApplyConvertedTypes(right, 
operators, true, discardDiagnostics);
+             discardDiagnostics.Free();
+ 
+             TypeSymbol resultType = 
GetSpecialType(SpecialType.System_Boolean, diagnostics, node);
+@@ -60,7 +60,7 @@
+                         builder.Add(ApplyConvertedTypes(arguments[i], 
multiple.Operators[i], isRight, diagnostics));
+                     }
+ 
+-                    return tuple.Update(argumentNamesOpt: default, 
inferredNamesOpt: default, builder.ToImmutableAndFree(), tuple.Type);
++                    return tuple.Update(default, default, 
builder.ToImmutableAndFree(), tuple.Type);
+                 }
+ 
+                 // This element isn't getting a converted type
+@@ -103,7 +103,7 @@
+             BinaryOperatorAnalysisResult analysisResult;
+ 
+             bool foundOperator = BindSimpleBinaryOperatorParts(node, 
diagnostics, left, right, kind,
+-                out resultKind, originalUserDefinedOperators: out _, out 
signature, out analysisResult);
++                out resultKind, out _, out signature, out analysisResult);
+ 
+             if (!foundOperator)
+             {
+@@ -407,9 +407,9 @@
+ 
+             ImmutableArray<Location> elementLocations = 
elements.SelectAsArray(e => e.Syntax.Location);
+ 
+-            var tuple = TupleTypeSymbol.Create(locationOpt: null, 
elementTypes: convertedTypes,
+-                elementLocations, elementNames: names, compilation,
+-                shouldCheckConstraints: true, errorPositions: default, 
syntax, diagnostics);
++            var tuple = TupleTypeSymbol.Create(null, convertedTypes,
++                elementLocations, names, compilation,
++                true, default, syntax, diagnostics);
+ 
+             if (!isNullable)
+             {
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs 
b/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs
+--- a/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs        
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/ForEachLoopBinder.cs        
2026-04-08 01:57:17.280914487 +0000
+@@ -268,10 +268,10 @@
+ 
+                             hasErrors |= !CheckMethodReturnValueKind(
+                                 builder.CurrentPropertyGetter,
+-                                callSyntaxOpt: null,
++                                null,
+                                 collectionExpr.Syntax,
+                                 requiredCurrentKind,
+-                                checkingReceiver: false,
++                                false,
+                                 diagnostics);
+                         }
+ 
+diff -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
+--- a/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversion.cs 
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversion.cs 
2026-04-08 01:57:17.280225176 +0000
+@@ -72,7 +72,7 @@
+         private class DeconstructionUncommonData : UncommonData
+         {
+             internal DeconstructionUncommonData(DeconstructMethodInfo 
deconstructMethodInfoOpt, ImmutableArray<Conversion> nestedConversions)
+-                : base(isExtensionMethod: false, isArrayIndex: false, 
conversionResult: default, conversionMethod: null, nestedConversions)
++                : base(false, false, default, null, nestedConversions)
+             {
+                 Debug.Assert(!nestedConversions.IsDefaultOrEmpty);
+                 DeconstructMethodInfo = deconstructMethodInfoOpt;
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversions.cs     
   2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/Conversions.cs     
   2026-04-08 01:57:17.279728415 +0000
+@@ -78,7 +78,7 @@
+             }
+             else
+             {
+-                return binder.ResolveMethodGroup(source, analyzedArguments: 
null, isMethodGroupConversion: true, ref useSiteDiagnostics);
++                return binder.ResolveMethodGroup(source, null, true, ref 
useSiteDiagnostics);
+             }
+         }
+ 
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Binder/Semantics/OverloadResolution/OverloadResolution.cs
  2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Binder/Semantics/OverloadResolution/OverloadResolution.cs
  2026-04-08 01:57:17.281726569 +0000
+@@ -3015,7 +3015,7 @@
+                 arguments.Arguments.Count,
+                 argumentAnalysis.ArgsToParamsOpt,
+                 arguments.RefKinds,
+-                isMethodGroupConversion: false,
++                false,
+                 allowRefOmittedArguments,
+                 out hasAnyRefOmittedArgument);
+ 
+@@ -3027,7 +3027,7 @@
+                 arguments.Arguments.Count,
+                 argumentAnalysis.ArgsToParamsOpt,
+                 arguments.RefKinds,
+-                isMethodGroupConversion: false,
++                false,
+                 allowRefOmittedArguments);
+ 
+             // The member passed to the following call is returned in the 
result (possibly a constructed version of it).
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs 
b/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs
+--- a/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs  2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/BoundTree/Constructors.cs  2026-04-08 
01:57:17.279510577 +0000
+@@ -567,7 +567,7 @@
+     internal partial class BoundAddressOfOperator
+     {
+         public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression 
operand, TypeSymbol type, bool hasErrors = false)
+-             : this(syntax, operand, isManaged: false, type, hasErrors)
++             : this(syntax, operand, false, type, hasErrors)
+         {
+         }  
+     }
+@@ -575,7 +575,7 @@
+     internal partial class BoundForEachStatement
+     {
+         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) :
+-            this(syntax, enumeratorInfoOpt, elementConversion, 
iterationVariableType, iterationVariables, iterationErrorExpressionOpt: null, 
expression, deconstructionOpt, body, @checked, breakLabel, continueLabel, 
hasErrors)
++            this(syntax, enumeratorInfoOpt, elementConversion, 
iterationVariableType, iterationVariables, null, expression, deconstructionOpt, 
body, @checked, breakLabel, continueLabel, hasErrors)
+         {
+         }
+     }
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs 
b/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs
+--- a/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs       
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs       
2026-04-08 01:57:17.279312666 +0000
+@@ -32,15 +32,15 @@
+                 ImmutableArray<byte> data = this.GetRawData(initExprs);
+                 if (data.All(datum => datum == data[0]))
+                 {
+-                    _builder.EmitStackAllocBlockInitializer(data, 
inits.Syntax, emitInitBlock: true, _diagnostics);
++                    _builder.EmitStackAllocBlockInitializer(data, 
inits.Syntax, true, _diagnostics);
+                 }
+                 else if (elementType.SpecialType.SizeInBytes() == 1)
+                 {
+-                    _builder.EmitStackAllocBlockInitializer(data, 
inits.Syntax, emitInitBlock: false, _diagnostics);
++                    _builder.EmitStackAllocBlockInitializer(data, 
inits.Syntax, false, _diagnostics);
+ 
+                     if (initializationStyle == ArrayInitializerStyle.Mixed)
+                     {
+-                        EmitElementStackAllocInitializers(elementType, 
initExprs, includeConstants: false);
++                        EmitElementStackAllocInitializers(elementType, 
initExprs, false);
+                     }
+                 }
+                 else
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs    
   2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs    
   2026-04-08 01:57:17.283964612 +0000
+@@ -465,7 +465,7 @@
+                 parameters,
+                 argumentRefKindsOpt,
+                 rewrittenArguments,
+-                forceLambdaSpilling: false, // lambda conversions can be 
re-orderd in calls without side affects
++                false, // lambda conversions can be re-orderd in calls 
without side affects
+                 actualArguments,
+                 refKinds,
+                 storesToTemps);
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_CompoundAssignmentOperator.cs
 2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_CompoundAssignmentOperator.cs
 2026-04-08 01:57:17.285679855 +0000
+@@ -286,12 +286,12 @@
+                 parameters,
+                 argumentRefKinds,
+                 rewrittenArguments,
+-                forceLambdaSpilling: true, // lambdas must produce exactly 
one delegate so they must be spilled into a temp
++                true, // lambdas must produce exactly one delegate so they 
must be spilled into a temp
+                 actualArguments,
+                 refKinds,
+                 storesToTemps);
+ 
+-            // Step two: If we have a params array, build the array and fill 
in the argument.
++            // Step two: If we have a params array, build the array and fill 
in the argument.
+             if (expanded)
+             {
+                 BoundExpression array = BuildParamsArray(syntax, indexer, 
argsToParamsOpt, rewrittenArguments, parameters, 
actualArguments[actualArguments.Length - 1]);
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_FixedStatement.cs
     2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_FixedStatement.cs
     2026-04-08 01:57:17.285919134 +0000
+@@ -382,9 +382,9 @@
+                 pinAndGetPtr = new BoundLoweredConditionalAccess(
+                     initializerSyntax,
+                     initializerExpr,
+-                    hasValueMethodOpt: null,
+-                    whenNotNull: pinAndGetPtr,
+-                    whenNullOpt: null, // just return default(T*)
++                    null,
++                    pinAndGetPtr,
++                    null, // just return default(T*)
+                     currentConditionalAccessID,
+                     localType);
+             }
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_ForEachStatement.cs
   2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_ForEachStatement.cs
   2026-04-08 01:57:17.282578725 +0000
+@@ -437,15 +437,15 @@
+ 
+             // (V)a[p]
+             BoundExpression iterationVarInitValue = MakeConversionNode(
+-                syntax: forEachSyntax,
+-                rewrittenOperand: BoundCall.Synthesized(
+-                    syntax: forEachSyntax,
+-                    receiverOpt: boundArrayVar,
++                forEachSyntax,
++                BoundCall.Synthesized(
++                    forEachSyntax,
++                    boundArrayVar,
+                     indexerGet,
+                     boundPositionVar),
+-                conversion: node.ElementConversion,
+-                rewrittenType: node.IterationVariableType.Type,
+-                @checked: node.Checked);
++                node.ElementConversion,
++                node.IterationVariableType.Type,
++                @node.Checked);
+ 
+             // V v = (V)a[p];   /* OR */   (D1 d1, ...) = (V)a[p];
+             ImmutableArray<LocalSymbol> iterationVariables = 
node.IterationVariables;
+@@ -458,14 +458,14 @@
+ 
+             // a.Length
+             BoundExpression arrayLength = BoundCall.Synthesized(
+-                syntax: forEachSyntax,
+-                receiverOpt: boundArrayVar,
++                forEachSyntax,
++                boundArrayVar,
+                 lengthGet);
+ 
+             // p < a.Length
+             BoundExpression exitCondition = new BoundBinaryOperator(
+-                syntax: forEachSyntax,
+-                operatorKind: BinaryOperatorKind.IntLessThan,
++                forEachSyntax,
++                BinaryOperatorKind.IntLessThan,
+                 left: boundPositionVar,
+                 right: arrayLength,
+                 constantValueOpt: null,
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_PointerElementAccess.cs
       2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_PointerElementAccess.cs
       2026-04-08 01:57:17.285470974 +0000
+@@ -20,7 +20,7 @@
+             {
+                 var loweredFieldReceiver = 
VisitExpression(fieldAccess.ReceiverOpt);
+                 fieldAccess = fieldAccess.Update(loweredFieldReceiver, 
fieldAccess.FieldSymbol, fieldAccess.ConstantValueOpt, fieldAccess.ResultKind, 
fieldAccess.Type);
+-                return new BoundAddressOfOperator(receiver.Syntax, 
fieldAccess, isManaged: true, fieldAccess.Type);
++                return new BoundAddressOfOperator(receiver.Syntax, 
fieldAccess, true, fieldAccess.Type);
+             }
+ 
+             return VisitExpression(receiver);
+diff -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
+--- 
a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_TupleBinaryOperator.cs
        2018-05-16 21:06:56.000000000 +0000
++++ 
b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_TupleBinaryOperator.cs
        2026-04-08 01:57:17.283671002 +0000
+@@ -143,12 +143,12 @@
+ 
+             BoundExpression leftHasValue, leftValue;
+             bool isLeftNullable;
+-            MakeNullableParts(left, temps, innerEffects, outerEffects, 
saveHasValue: true, out leftHasValue, out leftValue, out isLeftNullable);
++            MakeNullableParts(left, temps, innerEffects, outerEffects, true, 
out leftHasValue, out leftValue, out isLeftNullable);
+ 
+             BoundExpression rightHasValue, rightValue;
+             bool isRightNullable;
+             // no need for local for right.HasValue since used once
+-            MakeNullableParts(right, temps, innerEffects, outerEffects, 
saveHasValue: false, out rightHasValue, out rightValue, out isRightNullable);
++            MakeNullableParts(right, temps, innerEffects, outerEffects, 
false, out rightHasValue, out rightValue, out isRightNullable);
+ 
+             // Produces:
+             //     ... logical expression using leftValue and rightValue ...
+@@ -158,7 +158,7 @@
+             //     leftValue = left.GetValueOrDefault(); (or left if 
!leftNullable)
+             //     rightValue = right.GetValueOrDefault(); (or right if 
!rightNullable)
+             //     ... logical expression using leftValue and rightValue ...
+-            BoundExpression innerSequence = MakeSequenceOrResultValue(locals: 
ImmutableArray<LocalSymbol>.Empty, innerEffects.ToImmutableAndFree(), 
logicalExpression);
++            BoundExpression innerSequence = 
MakeSequenceOrResultValue(ImmutableArray<LocalSymbol>.Empty, 
innerEffects.ToImmutableAndFree(), logicalExpression);
+ 
+             if (!isLeftNullable && !isRightNullable)
+             {
+@@ -340,14 +340,14 @@
+                 // !((left == right).op_false)
+                 // (left != right).op_true
+ 
+-                BoundExpression dynamicResult = 
_dynamicFactory.MakeDynamicBinaryOperator(single.Kind, left, right, 
isCompoundAssignment: false, _compilation.DynamicType).ToExpression();
++                BoundExpression dynamicResult = 
_dynamicFactory.MakeDynamicBinaryOperator(single.Kind, left, right, false, 
_compilation.DynamicType).ToExpression();
+                 if (operatorKind == BinaryOperatorKind.Equal)
+                 {
+-                    return 
_factory.Not(MakeUnaryOperator(UnaryOperatorKind.DynamicFalse, left.Syntax, 
method: null, dynamicResult, boolType));
++                    return 
_factory.Not(MakeUnaryOperator(UnaryOperatorKind.DynamicFalse, left.Syntax, 
null, dynamicResult, boolType));
+                 }
+                 else
+                 {
+-                    return MakeUnaryOperator(UnaryOperatorKind.DynamicTrue, 
left.Syntax, method: null, dynamicResult, boolType);
++                    return MakeUnaryOperator(UnaryOperatorKind.DynamicTrue, 
left.Syntax, null, dynamicResult, boolType);
+                 }
+             }
+ 
+diff -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
+--- a/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs      
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEMethodSymbol.cs      
2026-04-08 01:57:17.280561306 +0000
+@@ -591,7 +591,7 @@
+                 {
+                     builder.Add(PEParameterSymbol.Create(
+                         moduleSymbol, this, this.IsMetadataVirtual(), i,
+-                        paramInfo[i + 1], isReturn: false, out 
isBadParameter));
++                        paramInfo[i + 1], false, out isBadParameter));
+ 
+                     if (isBadParameter)
+                     {
+@@ -616,7 +616,7 @@
+ 
+             var returnParam = PEParameterSymbol.Create(
+                 moduleSymbol, this, this.IsMetadataVirtual(), 0,
+-                paramInfo[0], isReturn: true, out isBadParameter);
++                paramInfo[0], true, out isBadParameter);
+ 
+             if (makeBad || isBadParameter)
+             {
+diff -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
+--- a/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEParameterSymbol.cs   
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Symbols/Metadata/PE/PEParameterSymbol.cs   
2026-04-08 01:57:17.279949039 +0000
+@@ -177,7 +177,7 @@
+             return Create(
+                 moduleSymbol, containingSymbol, isContainingSymbolVirtual, 
ordinal,
+                 parameterInfo.IsByRef, parameterInfo.RefCustomModifiers, 
parameterInfo.Type,
+-                handle, parameterInfo.CustomModifiers, isReturn: false, out 
isBad);
++                handle, parameterInfo.CustomModifiers, false, out isBad);
+         }
+ 
+         private PEParameterSymbol(
+diff -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
+--- a/src/Compilers/CSharp/Portable/Symbols/Source/SourceLocalSymbol.cs        
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/CSharp/Portable/Symbols/Source/SourceLocalSymbol.cs        
2026-04-08 01:57:17.282290665 +0000
+@@ -604,7 +604,7 @@
+                 SyntaxToken identifierToken,
+                 ExpressionSyntax collection,
+                 LocalDeclarationKind declarationKind) :
+-                    base(containingSymbol, scopeBinder, allowRefKind: true, 
typeSyntax, identifierToken, declarationKind)
++                    base(containingSymbol, scopeBinder, true, typeSyntax, 
identifierToken, declarationKind)
+             {
+                 Debug.Assert(declarationKind == 
LocalDeclarationKind.ForEachIterationVariable);
+                 _collection = collection;
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Core/Portable/Collections/BitVector.cs 
b/src/Compilers/Core/Portable/Collections/BitVector.cs
+--- a/src/Compilers/Core/Portable/Collections/BitVector.cs     2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/Core/Portable/Collections/BitVector.cs     2026-04-08 
01:57:17.259296305 +0000
+@@ -216,7 +216,7 @@
+         /// For the purposes of the intersection, any bits beyond the current 
length will be treated as zeroes.
+         /// Return true if any changes were made to the bits of this bit 
vector.
+         /// </summary>
+-        public bool IntersectWith(in BitVector other)
++        public bool IntersectWith(BitVector other)
+         {
+             bool anyChanged = false;
+             int otherLength = other._bits.Length;
+@@ -268,7 +268,7 @@
+         /// <returns>
+         /// True if any bits were set as a result of the union.
+         /// </returns>
+-        public bool UnionWith(in BitVector other)
++        public bool UnionWith(BitVector other)
+         {
+             bool anyChanged = false;
+ 
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs 
b/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs
+--- a/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs        
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/Core/Portable/CommandLine/CommonCompiler.cs        
2026-04-08 01:57:17.279039244 +0000
+@@ -647,7 +647,7 @@
+             analyzerDriver = null;
+ 
+             // Print the diagnostics produced during the parsing stage and 
exit if there were any errors.
+-            compilation.GetDiagnostics(CompilationStage.Parse, 
includeEarlierStages: false, diagnostics, cancellationToken);
++            compilation.GetDiagnostics(CompilationStage.Parse, false, 
diagnostics, cancellationToken);
+             if (diagnostics.HasAnyErrors())
+             {
+                 return;
+@@ -673,7 +673,7 @@
+                 reportAnalyzer = Arguments.ReportAnalyzer && 
!analyzers.IsEmpty;
+             }
+ 
+-            compilation.GetDiagnostics(CompilationStage.Declare, 
includeEarlierStages: false, diagnostics, cancellationToken);
++            compilation.GetDiagnostics(CompilationStage.Declare, false, 
diagnostics, cancellationToken);
+             if (diagnostics.HasAnyErrors())
+             {
+                 return;
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs 
b/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs
+--- a/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs     2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/Core/Portable/Diagnostic/Diagnostic.cs     2026-04-08 
01:57:17.278667628 +0000
+@@ -105,7 +105,7 @@
+             ImmutableDictionary<string, string> properties,
+             params object[] messageArgs)
+         {
+-            return Create(descriptor, location, effectiveSeverity: 
descriptor.DefaultSeverity, additionalLocations, properties, messageArgs);
++            return Create(descriptor, location, descriptor.DefaultSeverity, 
additionalLocations, properties, messageArgs);
+         }
+ 
+         /// <summary>
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs 
b/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs
+--- a/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs 
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/Core/Portable/PEWriter/DebugDirectoryExtensions.cs 
2026-04-08 01:57:17.236542465 +0000
+@@ -88,7 +88,7 @@
+         }
+     }
+ 
+-    internal readonly struct PdbChecksumDebugDirectoryData
++    internal struct PdbChecksumDebugDirectoryData
+     {
+         /// <summary>
+         /// Checksum algorithm name.
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs 
b/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs
+--- a/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs        
2018-05-16 21:06:56.000000000 +0000
++++ b/src/Compilers/Core/Portable/Serialization/ObjectBinderSnapshot.cs        
2026-04-08 01:57:17.236643093 +0000
+@@ -6,7 +6,7 @@
+ 
+ namespace Roslyn.Utilities
+ {
+-    internal readonly struct ObjectBinderSnapshot
++    internal struct ObjectBinderSnapshot
+     {
+         private readonly Dictionary<Type, int> _typeToIndex;
+         private readonly ImmutableArray<Type> _types;
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Shared/BuildServerConnection.cs 
b/src/Compilers/Shared/BuildServerConnection.cs
+--- a/src/Compilers/Shared/BuildServerConnection.cs    2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/Shared/BuildServerConnection.cs    2026-04-08 
02:04:15.196339561 +0000
+@@ -126,7 +126,7 @@
+                 try
+                 {
+                     var clientMutexName = GetClientMutexName(pipeName);
+-                    clientMutex = new Mutex(initiallyOwned: true, name: 
clientMutexName, out holdsMutex);
++                    clientMutex = new Mutex(true, clientMutexName, out 
holdsMutex);
+                 }
+                 catch
+                 {
+diff -ruN '--exclude=*.resx' '--exclude=*.xlf' '--exclude=*.xml' 
a/src/Compilers/Shared/DesktopBuildClient.cs 
b/src/Compilers/Shared/DesktopBuildClient.cs
+--- a/src/Compilers/Shared/DesktopBuildClient.cs       2018-05-16 
21:06:56.000000000 +0000
++++ b/src/Compilers/Shared/DesktopBuildClient.cs       2026-04-08 
02:04:15.199139747 +0000
+@@ -33,7 +33,7 @@
+             {
+                 // Register encodings for console
+                 // https://github.com/dotnet/roslyn/issues/10785
+-                
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
++                // CodePagesEncodingProvider not available in Mono
+             }
+ 
+             var client = new DesktopBuildClient(language, compileFunc, 
analyzerAssemblyLoader);

Reply via email to