Skip to content

[automated] Merge branch 'main' => 'feature/net11-scouting'#19815

Open
github-actions[bot] wants to merge 16 commits into
feature/net11-scoutingfrom
merge/main-to-feature/net11-scouting
Open

[automated] Merge branch 'main' => 'feature/net11-scouting'#19815
github-actions[bot] wants to merge 16 commits into
feature/net11-scoutingfrom
merge/main-to-feature/net11-scouting

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

I detected changes in the main branch which have not been merged yet to feature/net11-scouting. I'm a robot and am configured to help you automatically keep feature/net11-scouting up to date, so I've opened this PR.

This PR merges commits made on main by the following committers:

  • dotnet-maestro[bot]
  • Copilot
  • T-Gro
  • auduchinok

Instructions for merging from UI

This PR will not be auto-merged. When pull request checks pass, complete this PR by creating a merge commit, not a squash or rebase commit.

merge button instructions

If this repo does not allow creating merge commits from the GitHub UI, use command line instructions.

Instructions for merging via command line

Run these commands to merge this pull request from the command line.

git fetch
git checkout main
git pull --ff-only
git checkout feature/net11-scouting
git pull --ff-only
git merge --no-ff main

# If there are merge conflicts, resolve them and then run git merge --continue to complete the merge
# Pushing the changes to the PR branch will re-trigger PR validation.
git push https://github.com/dotnet/fsharp HEAD:merge/main-to-feature/net11-scouting
or if you are using SSH
git push git@github.com:dotnet/fsharp HEAD:merge/main-to-feature/net11-scouting

After PR checks are complete push the branch

git push

Instructions for resolving conflicts

⚠️ If there are merge conflicts, you will need to resolve them manually before merging. You can do this using GitHub or using the command line.

Instructions for updating this pull request

Contributors to this repo have permission update this pull request by pushing to the branch 'merge/main-to-feature/net11-scouting'. This can be done to resolve conflicts or make other changes to this pull request before it is merged.
The provided examples assume that the remote is named 'origin'. If you have a different remote name, please replace 'origin' with the name of your remote.

git fetch
git checkout -b merge/main-to-feature/net11-scouting origin/feature/net11-scouting
git pull https://github.com/dotnet/fsharp merge/main-to-feature/net11-scouting
(make changes)
git commit -m "Updated PR with my changes"
git push https://github.com/dotnet/fsharp HEAD:merge/main-to-feature/net11-scouting
or if you are using SSH
git fetch
git checkout -b merge/main-to-feature/net11-scouting origin/feature/net11-scouting
git pull git@github.com:dotnet/fsharp merge/main-to-feature/net11-scouting
(make changes)
git commit -m "Updated PR with my changes"
git push git@github.com:dotnet/fsharp HEAD:merge/main-to-feature/net11-scouting

Contact .NET Core Engineering (dotnet/dnceng) if you have questions or issues.
Also, if this PR was generated incorrectly, help us fix it. See https://github.com/dotnet/arcade/blob/main/.github/workflows/scripts/inter-branch-merge.ps1.

auduchinok and others added 16 commits May 20, 2026 14:57
* Fix #19596: overloaded member with unit parameter conformance check

SignatureConformance.fs: when matching overloaded members, add relaxed
fallback for unmatched pairs using type equivalence. This handles
member M(()) (argInfos=[[]]) vs sig member M: unit->unit (argInfos=[[unit_arg]])
where types are equivalent but TotalArgCount differs.
…text (#19772)

Evidence from 17 AI review audit:
- 53% had zero inline comments (wall-of-text body only)
- 5 reviews were LGTM verdicts buried in avg 1500 chars of prose
- Only 3/17 were inline-focused (ideal)

expert-reviewer.md:
- Wave 0: MUST dispatch independent subagents per dimension via task tool
- Wave 5: empty body for findings (just inline comments), 'LGTM' for approve
- New hard rule: body >10 chars (other than LGTM) is a bug
- Removed 'See inline comments' boilerplate — people have eyes

reviewing-compiler-prs/SKILL.md:
- Replaced aspirational 'Multi-Model Dispatch' with concrete 'Subagent Dispatch'
- Each dimension gets independent background agent with CHECK rules + filtered diffs
- Subagents produce structured {file, line, severity, dimension, issue, suggestion}
- Expert-reviewer consolidates, deduplicates, applies assessment gates

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Gate exception serialization codegen behind LanguageFeature.ExceptionFieldSerializationSupport (F# 11)

The GetObjectData override and field-restoring deserialization constructor
for exception types are now gated behind langversion 11. With langversion
<=10 (the current default), exceptions emit only the base-call ctor
(status quo ante PR #19342).

- Add LanguageFeature.ExceptionFieldSerializationSupport, mapped to F# 11.0
- Gate shouldRestoreFields and GetObjectData emission on the feature
- Update tests to use withLangVersion "11"
- Update all IL baselines (SerializableAttribute, Nullness) to reflect
  the default-langversion output (no field serde IL)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix code formatting (fantomas)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update xlf files for featureExceptionFieldSerializationSupport

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix net472 IL baseline for ExceptionType nullness test

The net472 baseline was incorrectly updated to use [runtime] prefixed
NullableContextAttribute and NullableAttribute references. On net472,
these attributes are embedded in the assembly (not from runtime BCL),
so they must not have the [runtime] prefix. Also restore the embedded
attribute class definitions at the end of the file.

The serialization changes (removing field-restoring ctor and GetObjectData)
are correctly kept, as they match the default langversion behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add release notes for exception field serialization langversion gate

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…9784)

- Exclude shared/ from workflow discovery (for repos with shared imports)
- Remove tooling-check-repo-rules.md reference (belongs to the security
  scan workflow, not the diagram generator)
- Fix rule numbering gap (was 1,2,3,4,5 → now 1,2,3,4)
- Replace fsharp-specific 'repo-assist' example with generic placeholder

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add failing tests for #19576 (TDD red)

Tests demonstrate that --nowarn:N does not suppress warnings emitted
during command-line option parsing (e.g. FS0075 for internal/test-only
options like --extraoptimizationloops, --typedtree).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Honor --nowarn for warnings captured during command-line option parsing (#19576)

Wrap the logger used to replay delayed command-line diagnostics with
GetDiagnosticsLoggerFilteringByScopedNowarn so that --nowarn / --warnaserror /
warn-level switches set on the command line are honored for diagnostics
captured during option parsing (e.g. FS0075 from internal/test-only flags
such as --extraoptimizationloops or --typedtree).

The fix is applied both on the success path (fsc.fs main1, line ~586) and
on the error/exit paths via the IDiagnosticsLoggerProvider extension method,
making it universal across fsc.exe and FSharpChecker.Compile.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Remove speculative third test for --test unknown-arg

The third test added in TDD red phase was speculative (warning numbers
didn't match) and outside the scope of sprint 2's DoD. Sprint 2 only
required the first two tests (FS0075 for --extraoptimizationloops and
--typedtree) to pass.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Centralize warning emission in CompilerOptions.fs (#19576 follow-up)

Introduce a local 'warningCmdLine' helper that consults
tcConfigB.diagnosticsOptions via PhasedDiagnostic.AdjustSeverity before
forwarding to warning/errorR/informationalWarning. This gives option
parsing a second, local line of defense so future 'warning' callsites in
CompilerOptions.fs cannot silently bypass --nowarn/--warnaserror even if
the commit-time delayed-diagnostics wrapper is missing.

- Thread TcConfigBuilder through ParseCompilerOptions (all 6 callers).
- Thread TcConfigBuilder through CheckAndReportSourceFileDuplicates.
- Route the three cowboy 'warning' callsites in CompilerOptions.fs
  (reportDeprecatedOption, --test unknown-arg, duplicate source file)
  through warningCmdLine.
- Add a regression test for FS1063 (--test unknown sub-flag).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Consolidate command-line nowarn tests into Theory and add FS3551 case

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Remove warningCmdLine; use commit-time filtering only; add missing tests

The emit-time warningCmdLine helper was order-dependent (only worked when
--nowarn preceded the triggering option) and introduced a regression with
--warnaserror+ (premature abort via errorR incrementing ErrorCount before
--nowarn could take effect).

Replace with commit-time filtering via GetDiagnosticsLoggerFilteringByScopedNowarn
at the two sites in fsc.fs where CapturingDiagnosticsLogger replays captured
diagnostics. This correctly applies all --nowarn/--warnaserror settings
accumulated during the full option parsing pass.

Revert ParseCompilerOptions and CheckAndReportSourceFileDuplicates signatures
to their original forms (no TcConfigBuilder parameter needed).

Add missing tests:
- Baseline tests verifying warnings ARE emitted without --nowarn
- --warnaserror+ with --nowarn interaction test

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Close test gaps: reverse-order, warnaserror baselines, specific warnaserror semantics

Add tests identified by multi-model adversarial review:
- Reverse-order test (--option before --nowarn) proves commit-time
  filtering works regardless of argument ordering
- --warnaserror+ baseline proving warning is promoted to error
- --warnaserror+ with --nowarn proving nowarn takes precedence (global)
- --warnaserror:75 with --nowarn:75 documenting that specific
  warnaserror wins over --nowarn (AdjustSeverity uses localNowarn
  for specific, warnOff for global)

13 tests total, 0 duplication of test source code.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add mixed-code selectivity test for --nowarn precision

Triggers both FS0075 and FS1063 simultaneously, suppresses only FS0075
via --nowarn:75, and asserts FS1063 still fires. Catches regressions
where filtering accidentally drops all command-line warnings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix case-sensitivity: track test file under fsc/ (lowercase) for Linux CI

The file was tracked by git as CompilerOptions/Fsc/warn/ (uppercase) while
the fsproj and all sibling files use lowercase fsc/. On case-sensitive Linux
this caused FS0225 'source file not found'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address review: remove slop comments, add order-independence test

- Remove type annotation restating what inference provides
- Replace code-restating comments with WHY-comments
- Add test: --nowarn before --warnaserror+ still suppresses

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address review: trim duplicate tests, remove slop comments

Remove mechanical test duplicates (15→7): drop Theory×3 testing same
warn number with different triggers, drop duplicate withNoWarn vs raw
--nowarn:N tests, drop redundant order-independence test.
Move release notes to 11.0.100.md (VNEXT).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update .NET SDK from 10.0.202 to 10.0.204.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix nullness narrowing for match inside seq/list/array comprehensions (#19644)

Extract null-narrowing helper EliminateNullnessFromInputType from
TcMatchClause and reuse it in TcSequenceExpression's SynExpr.Match
handler so the input type is narrowed across clauses inside
comprehensions, matching the behavior of plain match expressions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add release notes for #19644

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix test failures on net472: remove System.Collections.Immutable dependency

The ImmutableHashSet<int>.Builder type is not available in the net472 test
compilation environment. Replace with string | null which tests the same
nullness narrowing logic without requiring external assembly references.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…19505)

* Narrow overload-error and symbol-use ranges to terminal identifier (#14284, #3920)
* Update dependencies from https://github.com/dotnet/arcade build 20260519.10
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26269.2 -> To Version 10.0.0-beta.26269.10

* Update dependencies from https://github.com/dotnet/arcade build 20260525.1
On relative base path root
Microsoft.DotNet.Arcade.Sdk From Version 10.0.0-beta.26269.2 -> To Version 10.0.0-beta.26275.1

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
…otnet-optimization build 20260522.1 (#19793)

On relative base path root
optimization.linux-arm64.MIBC.Runtime , optimization.linux-x64.MIBC.Runtime , optimization.windows_nt-arm64.MIBC.Runtime , optimization.windows_nt-x64.MIBC.Runtime , optimization.windows_nt-x86.MIBC.Runtime From Version 1.0.0-prerelease.26180.1 -> To Version 1.0.0-prerelease.26272.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
* Update dependencies from https://github.com/dotnet/roslyn build 20260520.10
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.8.0-1.26268.6 -> To Version 5.8.0-1.26270.10

* Update dependencies from https://github.com/dotnet/roslyn build 20260521.1
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.8.0-1.26268.6 -> To Version 5.8.0-1.26271.1

* Update dependencies from https://github.com/dotnet/roslyn build 20260522.14
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.8.0-1.26268.6 -> To Version 5.8.0-1.26272.14

* Update dependencies from https://github.com/dotnet/roslyn build 20260523.3
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.8.0-1.26268.6 -> To Version 5.8.0-1.26273.3

* Update dependencies from https://github.com/dotnet/roslyn build 20260524.3
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.8.0-1.26268.6 -> To Version 5.8.0-1.26274.3

* Update dependencies from https://github.com/dotnet/roslyn build 20260524.20
On relative base path root
Microsoft.CodeAnalysis , Microsoft.CodeAnalysis.Compilers , Microsoft.CodeAnalysis.CSharp , Microsoft.CodeAnalysis.EditorFeatures , Microsoft.CodeAnalysis.EditorFeatures.Text , Microsoft.CodeAnalysis.ExternalAccess.FSharp , Microsoft.CodeAnalysis.Features , Microsoft.VisualStudio.LanguageServices From Version 5.8.0-1.26268.6 -> To Version 5.8.0-1.26274.20

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
* Update dependencies from https://github.com/dotnet/msbuild build 20260520.4
On relative base path root
Microsoft.Build , Microsoft.Build.Framework , Microsoft.Build.Tasks.Core , Microsoft.Build.Utilities.Core From Version 18.8.0-preview-26269-11 -> To Version 18.8.0-preview-26270-04

* Update dependencies from https://github.com/dotnet/msbuild build 20260521.6
On relative base path root
Microsoft.Build , Microsoft.Build.Framework , Microsoft.Build.Tasks.Core , Microsoft.Build.Utilities.Core From Version 18.8.0-preview-26269-11 -> To Version 18.8.0-preview-26271-06

* Update dependencies from https://github.com/dotnet/msbuild build 20260522.6
On relative base path root
Microsoft.Build , Microsoft.Build.Framework , Microsoft.Build.Tasks.Core , Microsoft.Build.Utilities.Core From Version 18.8.0-preview-26269-11 -> To Version 18.8.0-preview-26272-06

* Update dependencies from https://github.com/dotnet/msbuild build 20260525.9
On relative base path root
Microsoft.Build , Microsoft.Build.Framework , Microsoft.Build.Tasks.Core , Microsoft.Build.Utilities.Core From Version 18.8.0-preview-26269-11 -> To Version 18.8.0-preview-26275-09

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Tomas Grosup <Tomas.Grosup@gmail.com>
Reset patterns:
- global.json
- eng/Version.Details.xml
- eng/Version.Details.props
- eng/Versions.props
- eng/common/**
- eng/TargetFrameworks.props
@github-actions github-actions Bot requested a review from a team as a code owner May 26, 2026 13:18
@github-actions github-actions Bot added the AI-Tooling-Check-Bypassed Tooling check: non-fork PR, not diff-analyzed label May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI-Tooling-Check-Bypassed Tooling check: non-fork PR, not diff-analyzed

Projects

Status: New

Development

Successfully merging this pull request may close these issues.

3 participants