Skip to content

Commit b1e63bc

Browse files
Upgrade to .NET 10 (#175)
* Migrate to new solution format * Upgrade .NET 10 Docker image * Upgrade Docker images * Upgrade project to .NET 10 * Fix build * Upgrade humanizer
1 parent 3e4627d commit b1e63bc

File tree

5 files changed

+28
-33
lines changed

5 files changed

+28
-33
lines changed

Dockerfile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
FROM mcr.microsoft.com/dotnet/sdk:8.0.201-alpine3.19-amd64 AS build
1+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.103-alpine3.23 AS build
2+
ARG TARGETARCH
3+
24
WORKDIR /app
35

46
# Copy fsproj and restore as distinct layers
57
COPY src/Exercism.Representers.FSharp/Exercism.Representers.FSharp.fsproj ./
6-
RUN dotnet restore -r linux-musl-x64
8+
RUN dotnet restore -a $TARGETARCH
79

810
# Copy everything else and build
911
COPY src/Exercism.Representers.FSharp/ ./
10-
RUN dotnet publish -r linux-musl-x64 -c Release -o /opt/representer --no-restore --self-contained true
12+
RUN dotnet publish -a $TARGETARCH --no-restore --self-contained true --output /opt/representer
1113

1214
# Build runtime image
13-
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0.2-alpine3.19-amd64 AS runtime
15+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/runtime-deps:10.0.3-alpine3.23 AS runtime
1416
WORKDIR /opt/representer
1517

1618
COPY --from=build /opt/representer/ .

Exercism.Representers.FSharp.sln

Lines changed: 0 additions & 17 deletions
This file was deleted.

Exercism.Representers.FSharp.slnx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<Solution>
2+
<Project Path="src/Exercism.Representers.FSharp/Exercism.Representers.FSharp.fsproj" />
3+
</Solution>
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4+
<TargetFramework>net10.0</TargetFramework>
45
<OutputType>Exe</OutputType>
5-
<TargetFramework>net8.0</TargetFramework>
6+
<PublishReadyToRun>true</PublishReadyToRun>
67
</PropertyGroup>
78

89
<ItemGroup>
@@ -12,11 +13,11 @@
1213
</ItemGroup>
1314

1415
<ItemGroup>
15-
<PackageReference Update="FSharp.Core" Version="9.0.100" />
1616
<PackageReference Include="CommandLineParser" Version="2.9.1" />
17-
<PackageReference Include="Fantomas.Core" Version="6.2.3" />
18-
<PackageReference Include="Fantomas.FCS" Version="6.2.3" />
19-
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
17+
<PackageReference Include="Fantomas.Core" Version="7.0.5" />
18+
<PackageReference Include="Fantomas.FCS" Version="7.0.5" />
19+
<PackageReference Include="Humanizer.Core" Version="3.0.10" />
20+
<PackageReference Update="FSharp.Core" Version="10.0.103" />
2021
</ItemGroup>
2122

2223
</Project>

src/Exercism.Representers.FSharp/Visitor.fs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ type SyntaxVisitor() =
159159
SynExpr.TryFinally
160160
(this.VisitSynExpr tryExpr, this.VisitSynExpr finallyExpr, range, trySeqPoint, withSeqPoint, trivia)
161161
| SynExpr.Lazy(ex, range) -> SynExpr.Lazy(this.VisitSynExpr ex, range)
162-
| SynExpr.Sequential(seqPoint, isTrueSeq, expr1, expr2, range) ->
163-
SynExpr.Sequential(seqPoint, isTrueSeq, this.VisitSynExpr expr1, this.VisitSynExpr expr2, range)
162+
| SynExpr.Sequential(seqPoint, isTrueSeq, expr1, expr2, range, trivia) ->
163+
SynExpr.Sequential(seqPoint, isTrueSeq, this.VisitSynExpr expr1, this.VisitSynExpr expr2, range, trivia)
164164
| SynExpr.SequentialOrImplicitYield(seqPoint, expr1, expr2, ifNotStmt, range) ->
165165
SynExpr.SequentialOrImplicitYield
166166
(seqPoint, this.VisitSynExpr expr1, this.VisitSynExpr expr2, this.VisitSynExpr ifNotStmt, range)
@@ -328,7 +328,7 @@ type SyntaxVisitor() =
328328
| SynMemberDefn.ImplicitCtor(access, attrs, ctorArgs, selfIdentifier, doc, range, trivia) ->
329329
SynMemberDefn.ImplicitCtor
330330
(Option.map this.VisitSynAccess access, attrs |> List.map this.VisitSynAttributeList,
331-
this.VisitSynSimplePats ctorArgs, Option.map this.VisitIdent selfIdentifier, this.VisitPreXmlDoc(doc), range, trivia)
331+
this.VisitSynPat ctorArgs, Option.map this.VisitIdent selfIdentifier, this.VisitPreXmlDoc(doc), range, trivia)
332332
| SynMemberDefn.ImplicitInherit(inheritType, inheritArgs, inheritAlias, range) ->
333333
SynMemberDefn.ImplicitInherit
334334
(this.VisitSynType inheritType, this.VisitSynExpr inheritArgs, Option.map this.VisitIdent inheritAlias,
@@ -348,7 +348,7 @@ type SyntaxVisitor() =
348348
| SynMemberDefn.AutoProperty(attrs, isStatic, ident, typeOpt, propKind, flags, flagsForSet, doc, access, synExpr, range, trivia) ->
349349
SynMemberDefn.AutoProperty
350350
(attrs |> List.map this.VisitSynAttributeList, isStatic, this.VisitIdent ident,
351-
Option.map this.VisitSynType typeOpt, propKind, flags, flagsForSet, this.VisitPreXmlDoc(doc), Option.map this.VisitSynAccess access,
351+
Option.map this.VisitSynType typeOpt, propKind, flags, flagsForSet, this.VisitPreXmlDoc(doc), this.VisitSynValSigAccess access,
352352
this.VisitSynExpr synExpr, range, trivia)
353353

354354
abstract VisitSynSimplePat: SynSimplePat -> SynSimplePat
@@ -384,8 +384,8 @@ type SyntaxVisitor() =
384384

385385
default this.VisitSynValData(svd: SynValData): SynValData =
386386
match svd with
387-
| SynValData(flags, svi, ident, transformedFromProperty) ->
388-
SynValData(flags, this.VisitSynValInfo svi, Option.map this.VisitIdent ident, Option.map this.VisitIdent transformedFromProperty)
387+
| SynValData(flags, svi, ident) ->
388+
SynValData(flags, this.VisitSynValInfo svi, Option.map this.VisitIdent ident)
389389

390390
abstract VisitSynValSig: SynValSig -> SynValSig
391391

@@ -395,7 +395,7 @@ type SyntaxVisitor() =
395395
SynValSig
396396
(attrs |> List.map this.VisitSynAttributeList, this.VisitSynIdent ident,
397397
this.VisitSynValTyparDecls explicitValDecls, this.VisitSynType synType, this.VisitSynValInfo arity,
398-
isInline, isMutable, this.VisitPreXmlDoc(doc), Option.map this.VisitSynAccess access, Option.map this.VisitSynExpr expr,
398+
isInline, isMutable, this.VisitPreXmlDoc(doc), this.VisitSynValSigAccess access, Option.map this.VisitSynExpr expr,
399399
range, trivia)
400400

401401
abstract VisitSynValTyparDecls: SynValTyparDecls -> SynValTyparDecls
@@ -632,6 +632,8 @@ type SyntaxVisitor() =
632632
SynType.SignatureParameter(List.map this.VisitSynAttributeList synAttributeLists, optional, Option.map this.VisitIdent identOption, this.VisitSynType usedType, range)
633633
| SynType.FromParseError range -> SynType.FromParseError range
634634
| SynType.Intersection(typar, types, range, trivia) -> SynType.Intersection(Option.map this.VisitSynTypar typar, types |> List.map this.VisitSynType, range, trivia)
635+
| SynType.StaticConstantNull range -> SynType.StaticConstantNull range
636+
| SynType.WithNull(innerType, ambivalent, range, trivia) -> SynType.WithNull(this.VisitSynType(innerType), ambivalent, range, trivia)
635637

636638
abstract VisitSynTypeOrTrivia: SynTypeOrTrivia -> SynTypeOrTrivia
637639
default this.VisitSynTypeOrTrivia(synTypeOrTrivia: SynTypeOrTrivia): SynTypeOrTrivia = synTypeOrTrivia
@@ -664,6 +666,10 @@ type SyntaxVisitor() =
664666
abstract VisitSynAccess: SynAccess -> SynAccess
665667

666668
default this.VisitSynAccess(a: SynAccess): SynAccess = a
669+
670+
abstract VisitSynValSigAccess: SynValSigAccess -> SynValSigAccess
671+
672+
default this.VisitSynValSigAccess(a: SynValSigAccess): SynValSigAccess = a
667673

668674
abstract VisitSynBindingKind: SynBindingKind -> SynBindingKind
669675

0 commit comments

Comments
 (0)