Skip to content

Register FsLex/FsYacc items as UpToDateCheckInput and tidy - #245

Merged
nojaf merged 1 commit into
fsprojects:masterfrom
nojaf:fix-targets
Sep 15, 2026
Merged

nojaf merged 1 commit into
fsprojects:masterfrom
nojaf:fix-targets

Conversation

@nojaf

@nojaf nojaf commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

FsLexYacc.targets did not register .fsl and .fsy files as build inputs, so an IDE fast up-to-date check could skip the build after a grammar edit. Add the same UpToDateCheckInput item group dotnet/fsharp uses. Fixes #242.

Date the 12.0.0 release notes entry, which is already on NuGet, and start a 12.0.1 section for this fix.

Build script and repository housekeeping that came out of verifying the change:

  • Add a shared Restore stage to every pipeline so ./build.fsx works standalone. Only build.sh, build.cmd and CI ran dotnet tool restore and dotnet paket restore first, and .paket is gitignored.
  • Stop tracking generated sources: the fslex/fsyacc outputs in FsLex.Core and FsYacc.Core and the AssemblyInfo.fs files, all of which build.fsx regenerates. Remove the orphaned AssemblyInfo.fs under FsLexYacc.Build.Tasks, which nothing compiles.
  • Migrate FsLexYacc.sln to FsLexYacc.slnx and point the pack step at it.
  • Drop build.fsx.lock and pin local tool versions with rollForward off.
  • Fix FS3873 in fslexast.fs by wrapping the character range in seq.
  • Suppress NU1510 for the test projects. Paket emits a PackageReference for the transitive System.Collections.Immutable, which the .NET 10 SDK prunes, and Paket cannot omit it.

FsLexYacc.targets did not register .fsl and .fsy files as build inputs,
so an IDE fast up-to-date check could skip the build after a grammar
edit. Add the same UpToDateCheckInput item group dotnet/fsharp uses.
Fixes fsprojects#242.

Date the 12.0.0 release notes entry, which is already on NuGet, and
start a 12.0.1 section for this fix.

Build script and repository housekeeping that came out of verifying
the change:

- Add a shared Restore stage to every pipeline so ./build.fsx works
  standalone. Only build.sh, build.cmd and CI ran dotnet tool restore
  and dotnet paket restore first, and .paket is gitignored.
- Stop tracking generated sources: the fslex/fsyacc outputs in
  FsLex.Core and FsYacc.Core and the AssemblyInfo.fs files, all of
  which build.fsx regenerates. Remove the orphaned AssemblyInfo.fs
  under FsLexYacc.Build.Tasks, which nothing compiles.
- Migrate FsLexYacc.sln to FsLexYacc.slnx and point the pack step at it.
- Drop build.fsx.lock and pin local tool versions with rollForward off.
- Fix FS3873 in fslexast.fs by wrapping the character range in seq.
- Suppress NU1510 for the test projects. Paket emits a PackageReference
  for the transitive System.Collections.Immutable, which the .NET 10
  SDK prunes, and Paket cannot omit it.
@nojaf
nojaf merged commit ea32e28 into fsprojects:master Sep 15, 2026
3 checks passed
@nojaf
nojaf deleted the fix-targets branch September 15, 2026 11:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Register FsLex/FsYacc items as UpToDateCheckInput for IDE up-to-date checks

1 participant