Build and run the stock dotnet new console F# template

Abierto
#44 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
fsharp

Línea de trabajo

Start with the owning issues #29, #31, #32, #33, #35, #38, and #40, then inspect the generated Program.fs, project file, and Debug/Release CoreCompile paths. The work is done when the unchanged dotnet new console -lang F# template builds through the packaged FSharp2 MSBuild integration, prints Hello from F#, exits with code 0, and its positive and negative conformance diagnostics match the Compatibility Oracle.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

wayfinder:task

Parent: #8
Blocked by: #29, #31, and #32

Outcome

Build and run the unchanged dotnet new console -lang F# template through FSharp2 by MSBuild CoreCompile. This is a small generic tracer bullet. It sits before the IcedTasks milestone in #42.

The .NET 10.0.110 SDK generates this Program.fs:

// For more information see https://aka.ms/fsharp-console-apps
printfn "Hello from F#"

The project file has OutputType=Exe, TargetFramework=net10.0, and one Compile item. It has no [<EntryPoint>], no module line, and no open.

Current state (local master at 13ddc13)

  • The generated program is rejected. The error is the value 'printfn' is not a static-member parameter, receiver, or local binding.
  • A named module with [<EntryPoint>] and printfn "%s" "Hello, world!" builds with fsc2. The program prints the same output as the Compatibility Oracle build and exits with code 0.
  • #29 slice 27 routes an implicit module with open declarations through the new parser.
  • The MSBuild route accepts --tailcalls- again (merged with the PR #43 integration).

Acceptance criteria

  • The unchanged template compiles through the FSharp2 NuGet package on the Debug and Release CoreCompile paths, with no source or project edits.
  • The program prints Hello from F# and exits with code 0, the same as the Compatibility Oracle build.
  • The implicit module and the implicit entry point come from general F# rules:
    • The module name comes from the file name.
    • The top-level code of the last file in an executable becomes the entry point.
  • printfn with a string literal resolves through general name resolution and format-string typing, not through a special case for this template.
  • Positive and negative conformance rows cover each new construct in its owning subsystem issue.
  • Diagnostics for the negative rows match the Compatibility Oracle.

Work by owning issue

  • #29: route a file whose body is only top-level expressions through the new parser.
  • #31: resolve printfn from the auto-opened FSharp.Core modules.
  • #32 and #33: type a format-string literal as TextWriterFormat and the application of printfn.
  • #35 and #38: lower top-level do code in the last file of an executable to the implicit entry point.
  • #40: prove the unchanged template through the packaged MSBuild integration.

This issue inherits the corpus-neutral acceptance policy in #8.

Lenguaje dominante
F#
Estrellas
0
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TheAngryByrd/fsharp2

Todos los issues de TheAngryByrd/fsharp2

Issues similares

Más issues de Build System

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.