Skip to content

Commit 8dcf06f

Browse files
authored
Merge pull request #593 from dsyme/integrate-81
Integrate from Microsoft/visualfsharp
2 parents cb93a2b + bdcd8c9 commit 8dcf06f

File tree

100 files changed

+3973
-702
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

100 files changed

+3973
-702
lines changed

src/absil/il.fs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2982,8 +2982,14 @@ let mdef_code2code f md =
29822982
let prependInstrsToCode (instrs: ILInstr list) (c2: ILCode) =
29832983
let instrs = Array.ofList instrs
29842984
let n = instrs.Length
2985-
{ c2 with Labels = Dictionary.ofList [ for kvp in c2.Labels -> (kvp.Key, kvp.Value + n) ]
2986-
Instrs = Array.append instrs c2.Instrs }
2985+
match c2.Instrs.[0] with
2986+
// If there is a sequence point as the first instruction then keep it at the front
2987+
| I_seqpoint _ as i0 ->
2988+
{ c2 with Labels = Dictionary.ofList [ for kvp in c2.Labels -> (kvp.Key, if kvp.Value = 0 then 0 else kvp.Value + n) ]
2989+
Instrs = Array.append [| i0 |] (Array.append instrs c2.Instrs.[1..]) }
2990+
| _ ->
2991+
{ c2 with Labels = Dictionary.ofList [ for kvp in c2.Labels -> (kvp.Key, kvp.Value + n) ]
2992+
Instrs = Array.append instrs c2.Instrs }
29872993

29882994
let prependInstrsToMethod new_code md =
29892995
mdef_code2code (prependInstrsToCode new_code) md

src/absil/ilsupp.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,8 @@ type ResFormatNode(tid:int32, nid:int32, lid:int32, dataOffset:int32, pbLinkedRe
535535
let SaveChunk(p : byte[], sz : int) =
536536
if Unchecked.defaultof<byte[]> <> pUnlinkedResource then
537537
Bytes.blit p 0 pUnlinkedResource (!unlinkedResourceOffset + offset) sz
538-
unlinkedResourceOffset := !unlinkedResourceOffset + sz ;
539-
size := !size + sz ;
538+
unlinkedResourceOffset := !unlinkedResourceOffset + sz
539+
size := !size + sz
540540

541541
()
542542

@@ -846,10 +846,10 @@ let unlinkResource (ulLinkedResourceBaseRVA:int32) (pbLinkedResource:byte[]) =
846846
let rfh = ResFormatHeader()
847847
let rfhBytes = rfh.toBytes()
848848
Bytes.blit rfhBytes 0 pResBuffer 0 ResFormatHeader.Width
849-
resBufferOffset <- resBufferOffset + ResFormatHeader.Width ;
849+
resBufferOffset <- resBufferOffset + ResFormatHeader.Width
850850

851851
for i = 0 to (nResNodes - 1) do
852-
resBufferOffset <- resBufferOffset + pResNodes.[i].Save(ulLinkedResourceBaseRVA, pbLinkedResource, pResBuffer, resBufferOffset) ;
852+
resBufferOffset <- resBufferOffset + pResNodes.[i].Save(ulLinkedResourceBaseRVA, pbLinkedResource, pResBuffer, resBufferOffset)
853853

854854
pResBuffer
855855
#endif

src/absil/ilx.fs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ type IlxClosureSpec =
120120
type IlxClosureInfo =
121121
{ cloStructure: IlxClosureLambdas
122122
cloFreeVars: IlxClosureFreeVar[]
123-
cloCode: Lazy<ILMethodBody>
124-
cloSource: ILSourceMarker option}
123+
cloCode: Lazy<ILMethodBody> }
125124

126125
type IlxUnionInfo =
127126
{ /// is the representation public?

src/absil/ilx.fsi

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,7 @@ type IlxClosureApps =
9797
type IlxClosureInfo =
9898
{ cloStructure: IlxClosureLambdas
9999
cloFreeVars: IlxClosureFreeVar[]
100-
cloCode: Lazy<ILMethodBody>
101-
cloSource: ILSourceMarker option}
100+
cloCode: Lazy<ILMethodBody> }
102101

103102
type IlxUnionInfo =
104103
{ /// Is the representation public?

src/fsharp/CompileOps.fs

Lines changed: 131 additions & 127 deletions
Large diffs are not rendered by default.

src/fsharp/CompileOps.fsi

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ type TcImports =
594594
member GetCcusExcludingBase : unit -> CcuThunk list
595595
member FindDllInfo : range * string -> ImportedBinary
596596
member TryFindDllInfo : range * string * lookupOnly: bool -> option<ImportedBinary>
597-
member FindCcuFromAssemblyRef : range * ILAssemblyRef -> Tast.CcuResolutionResult
597+
member FindCcuFromAssemblyRef : range * ILAssemblyRef -> CcuResolutionResult
598598
#if EXTENSIONTYPING
599599
member ProviderGeneratedTypeRoots : ProviderGeneratedType list
600600
#endif
@@ -661,8 +661,7 @@ val ProcessMetaCommandsFromInput :
661661
val ApplyMetaCommandsFromInputToTcConfig : TcConfig -> (Ast.ParsedInput * string) -> TcConfig
662662

663663
/// Process the #nowarn in an input
664-
val ApplyNoWarnsToTcConfig : TcConfig -> (Ast.ParsedInput*string) -> TcConfig
665-
664+
val ApplyNoWarnsToTcConfig : TcConfig -> (Ast.ParsedInput * string) -> TcConfig
666665

667666
//----------------------------------------------------------------------------
668667
// Scoped pragmas
@@ -717,23 +716,21 @@ val GetInitialTcState :
717716
/// Check one input, returned as an Eventually computation
718717
val TypeCheckOneInputEventually :
719718
(unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * NameResolution.TcResultsSink * TcState * Ast.ParsedInput
720-
-> Eventually<(TcEnv * TopAttribs * Tast.TypedImplFile list) * TcState>
719+
-> Eventually<(TcEnv * TopAttribs * TypedImplFile list) * TcState>
721720

722721
/// Finish the checking of multiple inputs
723722
val TypeCheckMultipleInputsFinish : (TcEnv * TopAttribs * 'T list) list * TcState -> (TcEnv * TopAttribs * 'T list) * TcState
724723
725724
/// Finish the checking of a closed set of inputs
726-
val TypeCheckClosedInputSetFinish : TypedImplFile list * TcState -> TcState * TypedAssembly
725+
val TypeCheckClosedInputSetFinish : TypedImplFile list * TcState -> TcState * TypedImplFile list
727726

728727
/// Check a closed set of inputs
729-
val TypeCheckClosedInputSet :
730-
(unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * TcState * Ast.ParsedInput list
731-
-> TcState * TopAttribs * Tast.TypedAssembly * TcEnv
728+
val TypeCheckClosedInputSet :(unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * TcState * Ast.ParsedInput list -> TcState * TopAttribs * TypedImplFile list * TcEnv
732729

733730
/// Check a single input and finish the checking
734731
val TypeCheckSingleInputAndFinishEventually :
735732
(unit -> bool) * TcConfig * TcImports * TcGlobals * Ast.LongIdent option * NameResolution.TcResultsSink * TcState * Ast.ParsedInput
736-
-> Eventually<(TcEnv * TopAttribs * Tast.TypedImplFile list) * TcState>
733+
-> Eventually<(TcEnv * TopAttribs * TypedImplFile list) * TcState>
737734

738735
/// Indicates if we should report a warning
739736
val ReportWarning : globalWarnLevel: int * specificWarnOff: int list * specificWarnOn: int list -> PhasedError -> bool

src/fsharp/CompileOptions.fs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ let internalFlags (tcConfigB:TcConfigBuilder) =
858858
CompilerOption("resolutions", tagNone, OptionUnit (fun () -> tcConfigB.showReferenceResolutions <- true), Some(InternalCommandLineOption("", rangeCmdArgs)), None) // "Display assembly reference resolution information")
859859
CompilerOption("resolutionframeworkregistrybase", tagString, OptionString (fun s -> tcConfigB.resolutionFrameworkRegistryBase<-s), Some(InternalCommandLineOption("", rangeCmdArgs)), None) // "The base registry key to use for assembly resolution. This part in brackets here: HKEY_LOCAL_MACHINE\[SOFTWARE\Microsoft\.NETFramework]\v2.0.50727\AssemblyFoldersEx")
860860
CompilerOption("resolutionassemblyfoldersuffix", tagString, OptionString (fun s -> tcConfigB.resolutionAssemblyFoldersSuffix<-s), Some(InternalCommandLineOption("resolutionassemblyfoldersuffix", rangeCmdArgs)), None) // "The base registry key to use for assembly resolution. This part in brackets here: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\[AssemblyFoldersEx]")
861-
CompilerOption("resolutionassemblyfoldersconditions", tagString, OptionString (fun s -> tcConfigB.resolutionAssemblyFoldersConditions <- ","^s), Some(InternalCommandLineOption("resolutionassemblyfoldersconditions", rangeCmdArgs)), None) // "Additional reference resolution conditions. For example \"OSVersion=5.1.2600.0,PlatformID=id")
861+
CompilerOption("resolutionassemblyfoldersconditions", tagString, OptionString (fun s -> tcConfigB.resolutionAssemblyFoldersConditions <- ","+s), Some(InternalCommandLineOption("resolutionassemblyfoldersconditions", rangeCmdArgs)), None) // "Additional reference resolution conditions. For example \"OSVersion=5.1.2600.0,PlatformID=id")
862862
CompilerOption("msbuildresolution", tagNone, OptionUnit (fun () -> tcConfigB.useSimpleResolution<-false), Some(InternalCommandLineOption("msbuildresolution", rangeCmdArgs)), None) // "Resolve assembly references using MSBuild resolution rules rather than directory based (Default=true except when running fsc.exe under mono)")
863863
CompilerOption("alwayscallvirt",tagNone,OptionSwitch(callVirtSwitch tcConfigB),Some(InternalCommandLineOption("alwayscallvirt",rangeCmdArgs)), None)
864864
CompilerOption("nodebugdata",tagNone, OptionUnit (fun () -> tcConfigB.noDebugData<-true),Some(InternalCommandLineOption("--nodebugdata",rangeCmdArgs)), None)
@@ -992,7 +992,7 @@ let GetAbbrevFlagSet tcConfigB isFsc =
992992
for c in ((if isFsc then abbreviatedFlagsFsc else abbreviatedFlagsFsi) tcConfigB) do
993993
match c with
994994
| CompilerOption(arg,_,OptionString _,_,_)
995-
| CompilerOption(arg,_,OptionStringList _,_,_) -> argList <- argList @ ["-"^arg;"/"^arg]
995+
| CompilerOption(arg,_,OptionStringList _,_,_) -> argList <- argList @ ["-"+arg;"/"+arg]
996996
| _ -> ()
997997
Set.ofList argList
998998

@@ -1009,7 +1009,7 @@ let PostProcessCompilerArgs (abbrevArgs : string Set) (args : string []) =
10091009
arga.[idx] <- args.[i]
10101010
i <- i+1
10111011
else
1012-
arga.[idx] <- args.[i] ^ ":" ^ args.[i+1]
1012+
arga.[idx] <- args.[i] + ":" + args.[i+1]
10131013
i <- i + 2
10141014
idx <- idx + 1
10151015
Array.toList arga.[0 .. (idx - 1)]
@@ -1105,14 +1105,14 @@ let showTermFileCount = ref 0
11051105
let PrintWholeAssemblyImplementation (tcConfig:TcConfig) outfile header expr =
11061106
if tcConfig.showTerms then
11071107
if tcConfig.writeTermsToFiles then
1108-
let filename = outfile ^ ".terms"
1108+
let filename = outfile + ".terms"
11091109
let n = !showTermFileCount
11101110
showTermFileCount := n+1
1111-
use f = System.IO.File.CreateText (filename ^ "-" ^ string n ^ "-" ^ header)
1112-
Layout.outL f (Layout.squashTo 192 (DebugPrint.assemblyL expr))
1111+
use f = System.IO.File.CreateText (filename + "-" + string n + "-" + header)
1112+
Layout.outL f (Layout.squashTo 192 (DebugPrint.implFilesL expr))
11131113
else
11141114
dprintf "\n------------------\nshowTerm: %s:\n" header
1115-
Layout.outL stderr (Layout.squashTo 192 (DebugPrint.assemblyL expr))
1115+
Layout.outL stderr (Layout.squashTo 192 (DebugPrint.implFilesL expr))
11161116
dprintf "\n------------------\n"
11171117

11181118
//----------------------------------------------------------------------------
@@ -1206,46 +1206,45 @@ let GetInitialOptimizationEnv (tcImports:TcImports, tcGlobals:TcGlobals) =
12061206
let optEnv = List.fold (AddExternalCcuToOpimizationEnv tcGlobals) optEnv ccuinfos
12071207
optEnv
12081208

1209-
let ApplyAllOptimizations (tcConfig:TcConfig, tcGlobals, tcVal, outfile, importMap, isIncrementalFragment, optEnv, ccu:CcuThunk, tassembly:TypedAssembly) =
1209+
let ApplyAllOptimizations (tcConfig:TcConfig, tcGlobals, tcVal, outfile, importMap, isIncrementalFragment, optEnv, ccu:CcuThunk, implFiles) =
12101210
// NOTE: optEnv - threads through
12111211
//
12121212
// Always optimize once - the results of this step give the x-module optimization
12131213
// info. Subsequent optimization steps choose representations etc. which we don't
12141214
// want to save in the x-module info (i.e. x-module info is currently "high level").
1215-
PrintWholeAssemblyImplementation tcConfig outfile "pass-start" tassembly
1215+
PrintWholeAssemblyImplementation tcConfig outfile "pass-start" implFiles
12161216
#if DEBUG
1217-
if tcConfig.showOptimizationData then dprintf "Expression prior to optimization:\n%s\n" (Layout.showL (Layout.squashTo 192 (DebugPrint.assemblyL tassembly)))
1217+
if tcConfig.showOptimizationData then dprintf "Expression prior to optimization:\n%s\n" (Layout.showL (Layout.squashTo 192 (DebugPrint.implFilesL implFiles)))
12181218
if tcConfig.showOptimizationData then dprintf "CCU prior to optimization:\n%s\n" (Layout.showL (Layout.squashTo 192 (DebugPrint.entityL ccu.Contents)))
12191219
#endif
12201220

12211221
let optEnv0 = optEnv
1222-
let (TAssembly(implFiles)) = tassembly
12231222
ReportTime tcConfig ("Optimizations")
1223+
1224+
// Only do abstract_big_targets on the first pass! Only do it when TLR is on!
1225+
let optSettings = tcConfig.optSettings
1226+
let optSettings = { optSettings with abstractBigTargets = tcConfig.doTLR }
1227+
let optSettings = { optSettings with reportingPhase = true }
1228+
12241229
let results,(optEnvFirstLoop,_,_,_) =
12251230
((optEnv0,optEnv0,optEnv0,SignatureHidingInfo.Empty),implFiles) ||> List.mapFold (fun (optEnvFirstLoop,optEnvExtraLoop,optEnvFinalSimplify,hidden) implFile ->
12261231

1227-
// Only do abstract_big_targets on the first pass! Only do it when TLR is on!
1228-
let optSettings = tcConfig.optSettings
1229-
let optSettings = { optSettings with abstractBigTargets = tcConfig.doTLR }
1230-
let optSettings = { optSettings with reportingPhase = true }
1231-
12321232
//ReportTime tcConfig ("Initial simplify")
1233-
let optEnvFirstLoop,implFile,implFileOptData,hidden =
1234-
Optimizer.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvFirstLoop,isIncrementalFragment,tcConfig.emitTailcalls,hidden,implFile)
1233+
let (optEnvFirstLoop,implFile,implFileOptData,hidden), optimizeDuringCodeGen =
1234+
Optimizer.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal,importMap,optEnvFirstLoop,isIncrementalFragment,tcConfig.emitTailcalls,hidden,implFile)
12351235

12361236
let implFile = AutoBox.TransformImplFile tcGlobals importMap implFile
12371237

12381238
// Only do this on the first pass!
1239-
let optSettings = { optSettings with abstractBigTargets = false }
1240-
let optSettings = { optSettings with reportingPhase = false }
1239+
let optSettings = { optSettings with abstractBigTargets = false; reportingPhase = false }
12411240
#if DEBUG
12421241
if tcConfig.showOptimizationData then dprintf "Optimization implFileOptData:\n%s\n" (Layout.showL (Layout.squashTo 192 (Optimizer.moduleInfoL tcGlobals implFileOptData)))
12431242
#endif
12441243

12451244
let implFile,optEnvExtraLoop =
12461245
if tcConfig.extraOptimizationIterations > 0 then
12471246
//ReportTime tcConfig ("Extra simplification loop")
1248-
let optEnvExtraLoop,implFile, _, _ = Optimizer.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvExtraLoop,isIncrementalFragment,tcConfig.emitTailcalls,hidden,implFile)
1247+
let (optEnvExtraLoop,implFile, _, _), _ = Optimizer.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvExtraLoop,isIncrementalFragment,tcConfig.emitTailcalls,hidden,implFile)
12491248
//PrintWholeAssemblyImplementation tcConfig outfile (sprintf "extra-loop-%d" n) implFile
12501249
implFile,optEnvExtraLoop
12511250
else
@@ -1270,20 +1269,21 @@ let ApplyAllOptimizations (tcConfig:TcConfig, tcGlobals, tcVal, outfile, importM
12701269
let implFile,optEnvFinalSimplify =
12711270
if tcConfig.doFinalSimplify then
12721271
//ReportTime tcConfig ("Final simplify pass")
1273-
let optEnvFinalSimplify,implFile, _, _ = Optimizer.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvFinalSimplify,isIncrementalFragment,tcConfig.emitTailcalls,hidden,implFile)
1272+
let (optEnvFinalSimplify,implFile, _, _),_ = Optimizer.OptimizeImplFile(optSettings,ccu,tcGlobals,tcVal, importMap,optEnvFinalSimplify,isIncrementalFragment,tcConfig.emitTailcalls,hidden,implFile)
12741273
//PrintWholeAssemblyImplementation tcConfig outfile "post-rec-opt" implFile
12751274
implFile,optEnvFinalSimplify
12761275
else
12771276
implFile,optEnvFinalSimplify
1278-
(implFile,implFileOptData),(optEnvFirstLoop,optEnvExtraLoop,optEnvFinalSimplify,hidden))
1277+
1278+
((implFile,optimizeDuringCodeGen),implFileOptData),(optEnvFirstLoop,optEnvExtraLoop,optEnvFinalSimplify,hidden))
12791279

12801280
let implFiles,implFileOptDatas = List.unzip results
12811281
let assemblyOptData = Optimizer.UnionOptimizationInfos implFileOptDatas
1282-
let tassembly = TAssembly(implFiles)
1283-
PrintWholeAssemblyImplementation tcConfig outfile "pass-end" tassembly
1282+
let tassembly = TypedAssemblyAfterOptimization(implFiles)
1283+
PrintWholeAssemblyImplementation tcConfig outfile "pass-end" (List.map fst implFiles)
12841284
ReportTime tcConfig ("Ending Optimizations")
12851285

1286-
tassembly, assemblyOptData,optEnvFirstLoop
1286+
tassembly, assemblyOptData, optEnvFirstLoop
12871287

12881288

12891289
//----------------------------------------------------------------------------

src/fsharp/CompileOptions.fsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,11 @@ val GetGeneratedILModuleName : CompilerTarget -> string -> string
8181
#else
8282
val GetInitialOptimizationEnv : TcImports * TcGlobals -> IncrementalOptimizationEnv
8383
val AddExternalCcuToOpimizationEnv : TcGlobals -> IncrementalOptimizationEnv -> ImportedAssembly -> IncrementalOptimizationEnv
84-
val ApplyAllOptimizations : TcConfig * TcGlobals * ConstraintSolver.TcValF * string * ImportMap * bool * IncrementalOptimizationEnv * CcuThunk * TypedAssembly -> TypedAssembly * Optimizer.LazyModuleInfo * IncrementalOptimizationEnv
84+
val ApplyAllOptimizations : TcConfig * TcGlobals * ConstraintSolver.TcValF * string * ImportMap * bool * IncrementalOptimizationEnv * CcuThunk * TypedImplFile list -> TypedAssemblyAfterOptimization * Optimizer.LazyModuleInfo * IncrementalOptimizationEnv
8585

8686
val CreateIlxAssemblyGenerator : TcConfig * TcImports * TcGlobals * ConstraintSolver.TcValF * CcuThunk -> IlxGen.IlxAssemblyGenerator
8787

88-
val GenerateIlxCode : IlxGen.IlxGenBackend * bool * bool * TcConfig * TypeChecker.TopAttribs * TypedAssembly * string * bool * IlxGen.IlxAssemblyGenerator -> IlxGen.IlxGenResults
88+
val GenerateIlxCode : IlxGen.IlxGenBackend * bool * bool * TcConfig * TypeChecker.TopAttribs * TypedAssemblyAfterOptimization * string * bool * IlxGen.IlxAssemblyGenerator -> IlxGen.IlxGenResults
8989
#endif
9090

9191
// Used during static linking

src/fsharp/ConstraintSolver.fs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,10 +2006,22 @@ and ReportNoCandidatesError (csenv:ConstraintSolverEnv) (nUnnamedCallerArgs,nNam
20062006

20072007
// One method, incorrect name/arg assignment
20082008
| _,_,_,_,([],[cmeth]) ->
2009-
let msgNum,msgText = FSComp.SR.csRequiredSignatureIs(NicePrint.stringOfMethInfo amap m denv cmeth.Method)
2009+
let minfo = cmeth.Method
2010+
let msgNum,msgText = FSComp.SR.csRequiredSignatureIs(NicePrint.stringOfMethInfo amap m denv minfo)
20102011
let msgNum,msgText,msgRange =
20112012
match cmeth.UnassignedNamedArgs with
2012-
| CallerNamedArg(id,_) :: _ -> (msgNum,FSComp.SR.csMemberHasNoArgumentOrReturnProperty(methodName, id.idText, msgText),id.idRange)
2013+
| CallerNamedArg(id,_) :: _ ->
2014+
if minfo.IsConstructor then
2015+
let typ = minfo.DeclaringEntityRef
2016+
2017+
let predictions =
2018+
typ.AllInstanceFieldsAsList
2019+
|> List.map (fun p -> p.Name.Replace("@",""))
2020+
|> ErrorResolutionHints.FilterPredictions id.idText
2021+
2022+
msgNum,FSComp.SR.csCtorHasNoArgumentOrReturnProperty(methodName, id.idText, msgText, ErrorResolutionHints.FormatPredictions predictions),id.idRange
2023+
else
2024+
msgNum,FSComp.SR.csMemberHasNoArgumentOrReturnProperty(methodName, id.idText, msgText),id.idRange
20132025
| [] -> (msgNum,msgText,m)
20142026
ErrorD (Error ((msgNum,msgText),msgRange))
20152027

@@ -2052,8 +2064,7 @@ and ReportNoCandidatesError (csenv:ConstraintSolverEnv) (nUnnamedCallerArgs,nNam
20522064

20532065
// One or more accessible, all the same arity, none correct
20542066
| ((cmeth :: cmeths2),_),_,_,_,_ when not cmeth.HasCorrectArity && cmeths2 |> List.forall (fun cmeth2 -> cmeth.TotalNumUnnamedCalledArgs = cmeth2.TotalNumUnnamedCalledArgs) ->
2055-
ErrorD (Error (FSComp.SR.csMemberNotAccessible(methodName, (cmeth.ArgSets |> List.sumBy (fun x -> x.NumUnnamedCalledArgs)), methodName, cmeth.TotalNumUnnamedCalledArgs),m))
2056-
2067+
ErrorD (Error (FSComp.SR.csMemberNotAccessible(methodName, nUnnamedCallerArgs, methodName, cmeth.TotalNumUnnamedCalledArgs),m))
20572068
// Many methods, all with incorrect number of generic arguments
20582069
| _,_,_,([],(cmeth :: _)),_ ->
20592070
let msg = FSComp.SR.csIncorrectGenericInstantiation((ShowAccessDomain ad), methodName, cmeth.NumCallerTyArgs)

0 commit comments

Comments
 (0)