Build and run the stock dotnet new console F# template

オープン
#44 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
活発
技術スタック
fsharp

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
F#
スター
0
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

TheAngryByrd/fsharp2 のほかの issue

TheAngryByrd/fsharp2 の issue をすべて見る

似ている issue

Build System の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。