Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
FROM mcr.microsoft.com/dotnet/sdk:8.0.201-alpine3.19-amd64 AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0.103-alpine3.23 AS build
ARG TARGETARCH

WORKDIR /app

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

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

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

COPY --from=build /opt/representer/ .
Expand Down
17 changes: 0 additions & 17 deletions Exercism.Representers.FSharp.sln

This file was deleted.

3 changes: 3 additions & 0 deletions Exercism.Representers.FSharp.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<Solution>
<Project Path="src/Exercism.Representers.FSharp/Exercism.Representers.FSharp.fsproj" />
</Solution>
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>

<ItemGroup>
Expand All @@ -12,11 +13,11 @@
</ItemGroup>

<ItemGroup>
<PackageReference Update="FSharp.Core" Version="9.0.100" />
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Fantomas.Core" Version="6.2.3" />
<PackageReference Include="Fantomas.FCS" Version="6.2.3" />
<PackageReference Include="Humanizer.Core" Version="2.14.1" />
<PackageReference Include="Fantomas.Core" Version="7.0.5" />
<PackageReference Include="Fantomas.FCS" Version="7.0.5" />
<PackageReference Include="Humanizer.Core" Version="3.0.10" />
<PackageReference Update="FSharp.Core" Version="10.0.103" />
</ItemGroup>

</Project>
20 changes: 13 additions & 7 deletions src/Exercism.Representers.FSharp/Visitor.fs
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ type SyntaxVisitor() =
SynExpr.TryFinally
(this.VisitSynExpr tryExpr, this.VisitSynExpr finallyExpr, range, trySeqPoint, withSeqPoint, trivia)
| SynExpr.Lazy(ex, range) -> SynExpr.Lazy(this.VisitSynExpr ex, range)
| SynExpr.Sequential(seqPoint, isTrueSeq, expr1, expr2, range) ->
SynExpr.Sequential(seqPoint, isTrueSeq, this.VisitSynExpr expr1, this.VisitSynExpr expr2, range)
| SynExpr.Sequential(seqPoint, isTrueSeq, expr1, expr2, range, trivia) ->
SynExpr.Sequential(seqPoint, isTrueSeq, this.VisitSynExpr expr1, this.VisitSynExpr expr2, range, trivia)
| SynExpr.SequentialOrImplicitYield(seqPoint, expr1, expr2, ifNotStmt, range) ->
SynExpr.SequentialOrImplicitYield
(seqPoint, this.VisitSynExpr expr1, this.VisitSynExpr expr2, this.VisitSynExpr ifNotStmt, range)
Expand Down Expand Up @@ -328,7 +328,7 @@ type SyntaxVisitor() =
| SynMemberDefn.ImplicitCtor(access, attrs, ctorArgs, selfIdentifier, doc, range, trivia) ->
SynMemberDefn.ImplicitCtor
(Option.map this.VisitSynAccess access, attrs |> List.map this.VisitSynAttributeList,
this.VisitSynSimplePats ctorArgs, Option.map this.VisitIdent selfIdentifier, this.VisitPreXmlDoc(doc), range, trivia)
this.VisitSynPat ctorArgs, Option.map this.VisitIdent selfIdentifier, this.VisitPreXmlDoc(doc), range, trivia)
| SynMemberDefn.ImplicitInherit(inheritType, inheritArgs, inheritAlias, range) ->
SynMemberDefn.ImplicitInherit
(this.VisitSynType inheritType, this.VisitSynExpr inheritArgs, Option.map this.VisitIdent inheritAlias,
Expand All @@ -348,7 +348,7 @@ type SyntaxVisitor() =
| SynMemberDefn.AutoProperty(attrs, isStatic, ident, typeOpt, propKind, flags, flagsForSet, doc, access, synExpr, range, trivia) ->
SynMemberDefn.AutoProperty
(attrs |> List.map this.VisitSynAttributeList, isStatic, this.VisitIdent ident,
Option.map this.VisitSynType typeOpt, propKind, flags, flagsForSet, this.VisitPreXmlDoc(doc), Option.map this.VisitSynAccess access,
Option.map this.VisitSynType typeOpt, propKind, flags, flagsForSet, this.VisitPreXmlDoc(doc), this.VisitSynValSigAccess access,
this.VisitSynExpr synExpr, range, trivia)

abstract VisitSynSimplePat: SynSimplePat -> SynSimplePat
Expand Down Expand Up @@ -384,8 +384,8 @@ type SyntaxVisitor() =

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

abstract VisitSynValSig: SynValSig -> SynValSig

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

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

abstract VisitSynTypeOrTrivia: SynTypeOrTrivia -> SynTypeOrTrivia
default this.VisitSynTypeOrTrivia(synTypeOrTrivia: SynTypeOrTrivia): SynTypeOrTrivia = synTypeOrTrivia
Expand Down Expand Up @@ -664,6 +666,10 @@ type SyntaxVisitor() =
abstract VisitSynAccess: SynAccess -> SynAccess

default this.VisitSynAccess(a: SynAccess): SynAccess = a

abstract VisitSynValSigAccess: SynValSigAccess -> SynValSigAccess

default this.VisitSynValSigAccess(a: SynValSigAccess): SynValSigAccess = a

abstract VisitSynBindingKind: SynBindingKind -> SynBindingKind

Expand Down