diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md index 9033ff771f8..34b94b5b1a1 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md @@ -1,5 +1,6 @@ ### Fixed +* Extended #help directive in fsi to show documentation in the REPL. ([PR #17140](https://github.com/dotnet/fsharp/pull/17140)) * Fix internal error when dotting into delegates with multiple type parameters. ([PR #17227](https://github.com/dotnet/fsharp/pull/17227)) * Error for partial implementation of interface with static and non-static abstract members. ([Issue #17138](https://github.com/dotnet/fsharp/issues/17138), [PR #17160](https://github.com/dotnet/fsharp/pull/17160)) * Optimize simple mappings with preludes in computed collections. ([PR #17067](https://github.com/dotnet/fsharp/pull/17067)) diff --git a/src/Compiler/FSharp.Compiler.Service.fsproj b/src/Compiler/FSharp.Compiler.Service.fsproj index 8f3285633bf..1196aa6bace 100644 --- a/src/Compiler/FSharp.Compiler.Service.fsproj +++ b/src/Compiler/FSharp.Compiler.Service.fsproj @@ -527,6 +527,8 @@ + + diff --git a/src/Compiler/Interactive/FSIstrings.txt b/src/Compiler/Interactive/FSIstrings.txt index c357f835be5..b415dda8af1 100644 --- a/src/Compiler/Interactive/FSIstrings.txt +++ b/src/Compiler/Interactive/FSIstrings.txt @@ -32,6 +32,7 @@ fsiIntroPackageSourceUriInfo,"Include package source uri when searching for pack fsiIntroTextHashloadInfo,"Load the given file(s) as if compiled and referenced" fsiIntroTextHashtimeInfo,"Toggle timing on/off" fsiIntroTextHashhelpInfo,"Display help" +fsiIntroTextHashhelpdocInfo,"Display documentation for an identifier, e.g. #help \"List.map\";;" fsiIntroTextHashquitInfo,"Exit" fsiIntroTextHashclearInfo,"Clear screen" fsiIntroTextHeader2commandLine," F# Interactive command line options:" diff --git a/src/Compiler/Interactive/fsi.fs b/src/Compiler/Interactive/fsi.fs index d932b95eda1..569ba4790b8 100644 --- a/src/Compiler/Interactive/fsi.fs +++ b/src/Compiler/Interactive/fsi.fs @@ -1240,6 +1240,10 @@ type internal FsiCommandLineOptions(fsi: FsiEvaluationSessionHostConfig, argv: s fsiConsoleOutput.uprintfn """ #time ["on"|"off"];; // %s""" (FSIstrings.SR.fsiIntroTextHashtimeInfo ()) fsiConsoleOutput.uprintfn """ #help;; // %s""" (FSIstrings.SR.fsiIntroTextHashhelpInfo ()) + fsiConsoleOutput.uprintfn + """ #help "idn";; // %s""" + (FSIstrings.SR.fsiIntroTextHashhelpdocInfo ()) + if tcConfigB.langVersion.SupportsFeature(LanguageFeature.PackageManagement) then for msg in dependencyProvider.GetRegisteredDependencyManagerHelpText( @@ -2499,7 +2503,7 @@ type internal FsiDynamicCompiler processContents newState declaredImpls /// Evaluate the given expression and produce a new interactive state. - member fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger: DiagnosticsLogger, istate, expr: SynExpr) = + member fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger: DiagnosticsLogger, istate, expr: SynExpr, suppressItPrint) = let tcConfig = TcConfig.Create(tcConfigB, validate = false) let itName = "it" @@ -2513,7 +2517,7 @@ type internal FsiDynamicCompiler // Snarf the type for 'it' via the binding match istate.tcState.TcEnvFromImpls.NameEnv.FindUnqualifiedItem itName with | Item.Value vref -> - if not tcConfig.noFeedback then + if not tcConfig.noFeedback && not suppressItPrint then let infoReader = InfoReader(istate.tcGlobals, istate.tcImports.GetImportMap()) valuePrinter.InvokeExprPrinter( @@ -3724,6 +3728,31 @@ type FsiInteractionProcessor stopProcessingRecovery e range0 None + let runhDirective diagnosticsLogger ctok istate source = + let lexbuf = + UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, tcConfigB.strictIndentation, $"<@@ {source} @@>") + + let tokenizer = + fsiStdinLexerProvider.CreateBufferLexer("hdummy.fsx", lexbuf, diagnosticsLogger) + + let parsedInteraction = ParseInteraction tokenizer + + match parsedInteraction with + | Some(ParsedScriptInteraction.Definitions([ SynModuleDecl.Expr(e, _) ], _)) -> + + let _state, status = + fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger, istate, e, true) + + match status with + | Completed(Some compStatus) -> + match compStatus.ReflectionValue with + | :? FSharp.Quotations.Expr as qex -> + let s = FsiHelp.Logic.Quoted.h qex + fsiConsoleOutput.uprintf "%s" s + | _ -> () + | _ -> () + | _ -> () + /// Partially process a hash directive, leaving state in packageManagerLines and required assemblies let PartiallyProcessHashDirective (ctok, istate, hash, diagnosticsLogger: DiagnosticsLogger) = match hash with @@ -3820,6 +3849,10 @@ type FsiInteractionProcessor fsiOptions.ShowHelp(m) istate, Completed None + | ParsedHashDirective("help", ParsedHashDirectiveArguments [ source ], _m) -> + runhDirective diagnosticsLogger ctok istate source + istate, Completed None + | ParsedHashDirective(c, ParsedHashDirectiveArguments arg, m) -> warning (Error((FSComp.SR.fsiInvalidDirective (c, String.concat " " arg)), m)) istate, Completed None @@ -3866,7 +3899,7 @@ type FsiInteractionProcessor | InteractionGroup.HashDirectives [] -> istate, Completed None | InteractionGroup.Definitions([ SynModuleDecl.Expr(expr, _) ], _) -> - fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger, istate, expr) + fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger, istate, expr, false) | InteractionGroup.Definitions(defs, _) -> fsiDynamicCompiler.EvalParsedDefinitions(ctok, diagnosticsLogger, istate, true, false, defs) @@ -4060,7 +4093,7 @@ type FsiInteractionProcessor |> InteractiveCatch diagnosticsLogger (fun istate -> istate |> mainThreadProcessAction ctok (fun ctok istate -> - fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger, istate, expr))) + fsiDynamicCompiler.EvalParsedExpression(ctok, diagnosticsLogger, istate, expr, false))) let commitResult (istate, result) = match result with diff --git a/src/Compiler/Interactive/fsihelp.fs b/src/Compiler/Interactive/fsihelp.fs new file mode 100644 index 00000000000..baca58d382a --- /dev/null +++ b/src/Compiler/Interactive/fsihelp.fs @@ -0,0 +1,272 @@ +module FSharp.Compiler.Interactive.FsiHelp + +[] +[] +do () + +open System +open System.Collections.Generic +open System.IO +open System.Text +open System.Reflection +open FSharp.Compiler.IO + +module Parser = + + open System.Xml + + type Help = + { + Summary: string + Remarks: string option + Parameters: (string * string) list + Returns: string option + Exceptions: (string * string) list + Examples: (string * string) list + FullName: string + Assembly: string + } + + member this.ToDisplayString() = + let sb = StringBuilder() + + let parameters = + this.Parameters + |> List.map (fun (name, description) -> sprintf "- %s: %s" name description) + |> String.concat "\n" + + sb.AppendLine().AppendLine("Description:").AppendLine(this.Summary) |> ignore + + match this.Remarks with + | Some r -> sb.AppendLine $"\nRemarks:\n%s{r}" |> ignore + | None -> () + + if not (String.IsNullOrWhiteSpace(parameters)) then + sb.AppendLine $"\nParameters:\n%s{parameters}" |> ignore + + match this.Returns with + | Some r -> sb.AppendLine $"Returns:\n%s{r}" |> ignore + | None -> () + + if not this.Exceptions.IsEmpty then + sb.AppendLine "\nExceptions:" |> ignore + + for (exType, exDesc) in this.Exceptions do + sb.AppendLine $"%s{exType}: %s{exDesc}" |> ignore + + if not this.Examples.IsEmpty then + sb.AppendLine "\nExamples:" |> ignore + + for example, desc in this.Examples do + sb.AppendLine example |> ignore + + if not (String.IsNullOrWhiteSpace(desc)) then + sb.AppendLine $"""// {desc.Replace("\n", "\n// ")}""" |> ignore + + sb.AppendLine "" |> ignore + + sb.AppendLine $"Full name: %s{this.FullName}" |> ignore + sb.AppendLine $"Assembly: %s{this.Assembly}" |> ignore + + sb.ToString() + + let cleanupXmlContent (s: string) = s.Replace("\n ", "\n").Trim() // some stray whitespace from the XML + + // remove any leading `X:` and trailing `N + let trimDotNet (s: string) = + let s = if s.Length > 2 && s[1] = ':' then s.Substring(2) else s + let idx = s.IndexOf('`') + let s = if idx > 0 then s.Substring(0, idx) else s + s + + let xmlDocCache = Dictionary() + + let tryGetXmlDocument xmlPath = + try + match xmlDocCache.TryGetValue(xmlPath) with + | true, value -> + let xmlDocument = XmlDocument() + xmlDocument.LoadXml(value) + Some xmlDocument + | _ -> + use stream = FileSystem.OpenFileForReadShim(xmlPath) + let rawXml = stream.ReadAllText() + let xmlDocument = XmlDocument() + xmlDocument.LoadXml(rawXml) + xmlDocCache.Add(xmlPath, rawXml) + Some xmlDocument + with _ -> + None + + let getTexts (node: Xml.XmlNode) = + seq { + for child in node.ChildNodes do + if child.Name = "#text" then + yield child.Value + + if child.Name = "c" then + yield child.InnerText + + if child.Name = "see" then + let cref = child.Attributes.GetNamedItem("cref") + + if not (isNull cref) then + yield cref.Value |> trimDotNet + } + |> String.concat "" + + let tryMkHelp (xmlDocument: XmlDocument option) (assembly: string) (modName: string) (implName: string) (sourceName: string) = + let sourceName = sourceName.Replace('.', '#') // for .ctor + let implName = implName.Replace('.', '#') // for .ctor + let xmlName = $"{modName}.{implName}" + + let toTry = + [ + $"""/doc/members/member[contains(@name, ":{xmlName}`")]""" + $"""/doc/members/member[contains(@name, ":{xmlName}(")]""" + $"""/doc/members/member[contains(@name, ":{xmlName}")]""" + ] + + xmlDocument + |> Option.bind (fun xmlDocument -> + seq { + for t in toTry do + let node = xmlDocument.SelectSingleNode(t) + if not (isNull node) then Some node else None + } + |> Seq.tryPick id) + |> function + | None -> ValueNone + | Some n -> + let summary = + n.SelectSingleNode("summary") + |> Option.ofObj + |> Option.map getTexts + |> Option.map cleanupXmlContent + + let remarks = + n.SelectSingleNode("remarks") + |> Option.ofObj + |> Option.map getTexts + |> Option.map cleanupXmlContent + + let parameters = + n.SelectNodes("param") + |> Seq.cast + |> Seq.map (fun n -> n.Attributes.GetNamedItem("name").Value.Trim(), n.InnerText.Trim()) + |> List.ofSeq + + let returns = + n.SelectSingleNode("returns") + |> Option.ofObj + |> Option.map (fun n -> getTexts(n).Trim()) + + let exceptions = + n.SelectNodes("exception") + |> Seq.cast + |> Seq.map (fun n -> + let exType = n.Attributes.GetNamedItem("cref").Value + let idx = exType.IndexOf(':') + let exType = if idx >= 0 then exType.Substring(idx + 1) else exType + exType.Trim(), n.InnerText.Trim()) + |> List.ofSeq + + let examples = + n.SelectNodes("example") + |> Seq.cast + |> Seq.map (fun n -> + let codeNode = n.SelectSingleNode("code") + + let code = + if isNull codeNode then + "" + else + n.RemoveChild(codeNode) |> ignore + cleanupXmlContent codeNode.InnerText + + code, cleanupXmlContent n.InnerText) + |> List.ofSeq + + match summary with + | Some s -> + { + Summary = s + Remarks = remarks + Parameters = parameters + Returns = returns + Exceptions = exceptions + Examples = examples + FullName = $"{modName}.{sourceName}" // the long ident as users see it + Assembly = assembly + } + |> ValueSome + | None -> ValueNone + +module Expr = + + open Microsoft.FSharp.Quotations.Patterns + + let tryGetSourceName (methodInfo: MethodInfo) = + try + let attr = methodInfo.GetCustomAttribute() + Some attr.SourceName + with _ -> + None + + let getInfos (declaringType: Type) (sourceName: string option) (implName: string) = + let xmlPath = Path.ChangeExtension(declaringType.Assembly.Location, ".xml") + let xmlDoc = Parser.tryGetXmlDocument xmlPath + let assembly = Path.GetFileName(declaringType.Assembly.Location) + + // for FullName cases like Microsoft.FSharp.Core.FSharpOption`1[System.Object] + let fullName = + let idx = declaringType.FullName.IndexOf('[') + + if idx >= 0 then + declaringType.FullName.Substring(0, idx) + else + declaringType.FullName + + let fullName = fullName.Replace('+', '.') // for FullName cases like Microsoft.FSharp.Collections.ArrayModule+Parallel + + (xmlDoc, assembly, fullName, implName, sourceName |> Option.defaultValue implName) + + let rec exprNames expr = + match expr with + | Call(exprOpt, methodInfo, _exprList) -> + match exprOpt with + | Some _ -> None + | None -> + let sourceName = tryGetSourceName methodInfo + getInfos methodInfo.DeclaringType sourceName methodInfo.Name |> Some + | Lambda(_param, body) -> exprNames body + | Let(_, _, body) -> exprNames body + | Value(_o, t) -> getInfos t (Some t.Name) t.Name |> Some + | DefaultValue t -> getInfos t (Some t.Name) t.Name |> Some + | PropertyGet(_o, info, _) -> getInfos info.DeclaringType (Some info.Name) info.Name |> Some + | NewUnionCase(info, _exprList) -> getInfos info.DeclaringType (Some info.Name) info.Name |> Some + | NewObject(ctorInfo, _e) -> getInfos ctorInfo.DeclaringType (Some ctorInfo.Name) ctorInfo.Name |> Some + | NewArray(t, _exprs) -> getInfos t (Some t.Name) t.Name |> Some + | NewTuple _ -> + let ty = typeof<_ * _> + getInfos ty (Some ty.Name) ty.Name |> Some + | NewStructTuple _ -> + let ty = typeof + getInfos ty (Some ty.Name) ty.Name |> Some + | _ -> None + +module Logic = + + open Expr + open Parser + + module Quoted = + let tryGetHelp (expr: Quotations.Expr) = + match exprNames expr with + | Some(xmlDocument, assembly, modName, implName, sourceName) -> tryMkHelp xmlDocument assembly modName implName sourceName + | _ -> ValueNone + + let h (expr: Quotations.Expr) = + match tryGetHelp expr with + | ValueNone -> "unable to get documentation\n" + | ValueSome d -> d.ToDisplayString() diff --git a/src/Compiler/Interactive/fsihelp.fsi b/src/Compiler/Interactive/fsihelp.fsi new file mode 100644 index 00000000000..34b8691c3f9 --- /dev/null +++ b/src/Compiler/Interactive/fsihelp.fsi @@ -0,0 +1,23 @@ +module FSharp.Compiler.Interactive.FsiHelp + +module Parser = + + type Help = + { Summary: string + Remarks: string option + Parameters: (string * string) list + Returns: string option + Exceptions: (string * string) list + Examples: (string * string) list + FullName: string + Assembly: string } + + member ToDisplayString: unit -> string + +module Logic = + + module Quoted = + + val tryGetHelp: expr: Quotations.Expr -> Parser.Help voption + + val h: expr: Quotations.Expr -> string diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.cs.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.cs.xlf index 97dcca71c4c..9146a0d2aa0 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.cs.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.cs.xlf @@ -17,6 +17,11 @@ Vymazat obrazovku + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Operaci nešlo dokončit z důvodu dřívější chyby. diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.de.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.de.xlf index a3d73b0e675..ba8a2a310cb 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.de.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.de.xlf @@ -17,6 +17,11 @@ Bildschirm löschen + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Der Vorgang konnte aufgrund eines vorherigen Fehlers nicht abgeschlossen werden. diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.es.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.es.xlf index 190ff245baa..f499bc3eafa 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.es.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.es.xlf @@ -17,6 +17,11 @@ Borrar pantalla + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error La operación no se pudo completar debido a un error anterior diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.fr.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.fr.xlf index 38d7a20d8e9..816e9ff898f 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.fr.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.fr.xlf @@ -17,6 +17,11 @@ Effacer l'écran + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Impossible d'exécuter l'opération en raison d'une erreur antérieure diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.it.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.it.xlf index 9c916837e52..93fa31ffda4 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.it.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.it.xlf @@ -17,6 +17,11 @@ Cancella schermata + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Non è stato possibile completare l'operazione a causa di un errore precedente diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.ja.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.ja.xlf index eab626f267e..316b88cfd0d 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.ja.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.ja.xlf @@ -17,6 +17,11 @@ 画面をクリアする + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error 以前のエラーが原因で操作を完了できませんでした diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.ko.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.ko.xlf index be891b98188..e577610033a 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.ko.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.ko.xlf @@ -17,6 +17,11 @@ 화면 지우기 + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error 이전 오류로 인해 작업을 완료할 수 없습니다. diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.pl.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.pl.xlf index 58adec37da4..b1b3cd575f0 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.pl.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.pl.xlf @@ -17,6 +17,11 @@ Wyczyść ekran + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Nie udało się ukończyć operacji z powodu wcześniejszego błędu diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.pt-BR.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.pt-BR.xlf index b080a196f7c..d6607b63a13 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.pt-BR.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.pt-BR.xlf @@ -17,6 +17,11 @@ Limpar tela + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Não foi possível concluir a operação devido a um erro anterior diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.ru.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.ru.xlf index e46822530d8..62ba1c091a2 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.ru.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.ru.xlf @@ -17,6 +17,11 @@ Очистить экран + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Операция не может быть завершена из-за предыдущей ошибки diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.tr.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.tr.xlf index 3222a474ef5..d1d67300f2c 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.tr.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.tr.xlf @@ -17,6 +17,11 @@ Ekranı temizle + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error Önceki hata nedeniyle işlem tamamlanamadı diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hans.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hans.xlf index de485cc5361..1657fe4f304 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hans.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hans.xlf @@ -17,6 +17,11 @@ 清除屏幕 + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error 由于早期错误,无法完成操作 diff --git a/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hant.xlf b/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hant.xlf index 9348019132b..0950c95bcee 100644 --- a/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hant.xlf +++ b/src/Compiler/Interactive/xlf/FSIstrings.txt.zh-Hant.xlf @@ -17,6 +17,11 @@ 清空螢幕 + + Display documentation for an identifier, e.g. #help \"List.map\";; + Display documentation for an identifier, e.g. #help \"List.map\";; + + Operation could not be completed due to earlier error 因為先前發生錯誤,所以無法完成作業 diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs index 2fc5366eeed..19c3009b17a 100644 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs +++ b/tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs @@ -719,6 +719,7 @@ x |> Seq.iter(fun r -> """ #time ["on"|"off"];; // Toggle timing on/off""" """ #clear;; // Clear screen""" """ #help;; // Display help""" + """ #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";;""" """ #quit;; // Exit""" """""" """ F# Interactive command line options:""" @@ -766,6 +767,7 @@ x |> Seq.iter(fun r -> """ #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced""" """ #time ["on"|"off"];; // Toggle timing on/off""" """ #help;; // Display help""" + """ #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";;""" """ #r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2'""" """ #r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version""" """ #clear;; // Clear screen""" diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl index 909e42e2cdc..447ebd82026 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl @@ -4597,6 +4597,40 @@ FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakService: Void Interrupt() FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakService: Void Run() FSharp.Compiler.Interactive.CtrlBreakHandlers: FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakClient FSharp.Compiler.Interactive.CtrlBreakHandlers: FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakService +FSharp.Compiler.Interactive.FsiHelp+Logic+Quoted: Microsoft.FSharp.Core.FSharpValueOption`1[FSharp.Compiler.Interactive.FsiHelp+Parser+Help] tryGetHelp(Microsoft.FSharp.Quotations.FSharpExpr) +FSharp.Compiler.Interactive.FsiHelp+Logic+Quoted: System.String h(Microsoft.FSharp.Quotations.FSharpExpr) +FSharp.Compiler.Interactive.FsiHelp+Logic: FSharp.Compiler.Interactive.FsiHelp+Logic+Quoted +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(Help) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(Help, System.Collections.IEqualityComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(System.Object) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(System.Object, System.Collections.IEqualityComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 CompareTo(Help) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 CompareTo(System.Object) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 CompareTo(System.Object, System.Collections.IComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 GetHashCode() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 GetHashCode(System.Collections.IEqualityComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] Examples +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] Exceptions +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] Parameters +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_Examples() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_Exceptions() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_Parameters() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] Remarks +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] Returns +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] get_Remarks() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] get_Returns() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String Assembly +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String FullName +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String Summary +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String ToDisplayString() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String ToString() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String get_Assembly() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String get_FullName() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String get_Summary() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Void .ctor(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]], Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]], System.String, System.String) +FSharp.Compiler.Interactive.FsiHelp+Parser: FSharp.Compiler.Interactive.FsiHelp+Parser+Help +FSharp.Compiler.Interactive.FsiHelp: FSharp.Compiler.Interactive.FsiHelp+Logic +FSharp.Compiler.Interactive.FsiHelp: FSharp.Compiler.Interactive.FsiHelp+Parser FSharp.Compiler.Interactive.Shell+CompilerInputStream: Boolean CanRead FSharp.Compiler.Interactive.Shell+CompilerInputStream: Boolean CanSeek FSharp.Compiler.Interactive.Shell+CompilerInputStream: Boolean CanWrite diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl index 909e42e2cdc..447ebd82026 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl @@ -4597,6 +4597,40 @@ FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakService: Void Interrupt() FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakService: Void Run() FSharp.Compiler.Interactive.CtrlBreakHandlers: FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakClient FSharp.Compiler.Interactive.CtrlBreakHandlers: FSharp.Compiler.Interactive.CtrlBreakHandlers+CtrlBreakService +FSharp.Compiler.Interactive.FsiHelp+Logic+Quoted: Microsoft.FSharp.Core.FSharpValueOption`1[FSharp.Compiler.Interactive.FsiHelp+Parser+Help] tryGetHelp(Microsoft.FSharp.Quotations.FSharpExpr) +FSharp.Compiler.Interactive.FsiHelp+Logic+Quoted: System.String h(Microsoft.FSharp.Quotations.FSharpExpr) +FSharp.Compiler.Interactive.FsiHelp+Logic: FSharp.Compiler.Interactive.FsiHelp+Logic+Quoted +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(Help) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(Help, System.Collections.IEqualityComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(System.Object) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Boolean Equals(System.Object, System.Collections.IEqualityComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 CompareTo(Help) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 CompareTo(System.Object) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 CompareTo(System.Object, System.Collections.IComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 GetHashCode() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Int32 GetHashCode(System.Collections.IEqualityComparer) +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] Examples +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] Exceptions +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] Parameters +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_Examples() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_Exceptions() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_Parameters() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] Remarks +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] Returns +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] get_Remarks() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Microsoft.FSharp.Core.FSharpOption`1[System.String] get_Returns() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String Assembly +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String FullName +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String Summary +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String ToDisplayString() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String ToString() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String get_Assembly() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String get_FullName() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: System.String get_Summary() +FSharp.Compiler.Interactive.FsiHelp+Parser+Help: Void .ctor(System.String, Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]], Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]], System.String, System.String) +FSharp.Compiler.Interactive.FsiHelp+Parser: FSharp.Compiler.Interactive.FsiHelp+Parser+Help +FSharp.Compiler.Interactive.FsiHelp: FSharp.Compiler.Interactive.FsiHelp+Logic +FSharp.Compiler.Interactive.FsiHelp: FSharp.Compiler.Interactive.FsiHelp+Parser FSharp.Compiler.Interactive.Shell+CompilerInputStream: Boolean CanRead FSharp.Compiler.Interactive.Shell+CompilerInputStream: Boolean CanSeek FSharp.Compiler.Interactive.Shell+CompilerInputStream: Boolean CanWrite diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj index 463c87514f5..d0af2696e3b 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj @@ -60,6 +60,7 @@ + diff --git a/tests/FSharp.Compiler.Service.Tests/FsiHelpTests.fs b/tests/FSharp.Compiler.Service.Tests/FsiHelpTests.fs new file mode 100644 index 00000000000..d17b3421ed9 --- /dev/null +++ b/tests/FSharp.Compiler.Service.Tests/FsiHelpTests.fs @@ -0,0 +1,54 @@ +namespace FSharp.Compiler.UnitTests + +open FSharp.Test.Assert +open Xunit + +[] +module FsiHelpTests = + + [] + let ``Can get help for FSharp.Compiler.Xml.PreXmlDoc.Create`` () = + match FSharp.Compiler.Interactive.FsiHelp.Logic.Quoted.tryGetHelp <@ FSharp.Compiler.Xml.PreXmlDoc.Create @> with + | ValueSome h -> + h.Assembly |> shouldBe "FSharp.Compiler.Service.dll" + h.FullName |> shouldBe "FSharp.Compiler.Xml.PreXmlDoc.Create" + + h.Summary + |> shouldBe "Create a PreXmlDoc from a collection of unprocessed lines" + | ValueNone -> Assert.True(false, "No xml documentation found") + + [] + let ``Can get help for FSharp.Compiler.Syntax.SyntaxNodes.tryPickLast`` () = + match FSharp.Compiler.Interactive.FsiHelp.Logic.Quoted.tryGetHelp <@ FSharp.Compiler.Syntax.SyntaxNodes.tryPickLast @> with + | ValueSome h -> + h.Assembly |> shouldBe "FSharp.Compiler.Service.dll" + h.FullName |> shouldBe "FSharp.Compiler.Syntax.SyntaxNodesModule.tryPickLast" + Assert.StartsWith("Applies the given function to each node of the AST and ", h.Summary) + h.Parameters |> shouldNotBeEmpty + h.Returns.IsSome |> shouldBeTrue + h.Examples |> shouldNotBeEmpty + | ValueNone -> Assert.True(false, "No xml documentation found") + + [] + let ``Can get help for FSComp.SR.considerUpcast`` () = + match FSharp.Compiler.Interactive.FsiHelp.Logic.Quoted.tryGetHelp <@ FSComp.SR.considerUpcast @> with + | ValueSome h -> + h.Assembly |> shouldBe "FSharp.Compiler.Service.dll" + h.FullName |> shouldBe "FSComp.SR.considerUpcast" + Assert.StartsWith("The conversion from %s to %s is a compile-time safe upcast", h.Summary) + | ValueNone -> Assert.True(false, "No xml documentation found") + + [] + let ``Can get help for FSharp.Test.ReflectionHelper.shouldn't`` () = + match FSharp.Compiler.Interactive.FsiHelp.Logic.Quoted.tryGetHelp <@ FSharp.Test.ReflectionHelper.shouldn't @> with + | ValueSome h -> + h.Assembly |> shouldBe "FSharp.Test.Utilities.dll" + h.FullName |> shouldBe "FSharp.Test.ReflectionHelper.shouldn't" + Assert.StartsWith("Assert that function f ", h.Summary) + | ValueNone -> Assert.True(false, "No xml documentation found") + + [] + let ``Can't get help for non-identifier`` () = + match FSharp.Compiler.Interactive.FsiHelp.Logic.Quoted.tryGetHelp <@ 23 @> with + | ValueSome h -> Assert.True(false, "No xml documentation expected") + | ValueNone -> () diff --git a/tests/fsharp/core/printing/output.1000.stderr.bsl b/tests/fsharp/core/printing/output.1000.stderr.bsl index 6926dcc9f34..dae4463d4db 100644 --- a/tests/fsharp/core/printing/output.1000.stderr.bsl +++ b/tests/fsharp/core/printing/output.1000.stderr.bsl @@ -2,347 +2,347 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. let x,f = it, (fun () -> !it);; // this will read from the static storage for 'it' -------------------------^ -stdin(643,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. +stdin(645,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. x := 3;; --^^ -stdin(645,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. +stdin(647,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function diff --git a/tests/fsharp/core/printing/output.1000.stdout.bsl b/tests/fsharp/core/printing/output.1000.stdout.bsl index ddde159fd6b..f780a746484 100644 --- a/tests/fsharp/core/printing/output.1000.stdout.bsl +++ b/tests/fsharp/core/printing/output.1000.stdout.bsl @@ -1101,6 +1101,7 @@ type 'a T4063 = | AT4063 of 'a #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced #time ["on"|"off"];; // Toggle timing on/off #help;; // Display help + #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";; #r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2' #r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version #clear;; // Clear screen @@ -1110,6 +1111,27 @@ type 'a T4063 = | AT4063 of 'a +> val it: string = "Check #help for an identifier" + + +Description: +Builds a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + +Parameters: +- mapping: The function to transform elements from the input list. +- list: The input list. +Returns: +The list of transformed elements. + +Examples: +let inputs = [ "a"; "bbb"; "cc" ] + +inputs |> List.map (fun x -> x.Length) +// Evaluates to [ 1; 3; 2 ] + +Full name: Microsoft.FSharp.Collections.ListModule.map +Assembly: FSharp.Core.dll > val it: string = "Check #time on and then off" > @@ -1494,8 +1516,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0091+Test4343e+C, FSI_0091+Test4343e+C, - [FSI_0091+Test4343e+C; FSI_0091+Test4343e+C]) + (FSI_0093+Test4343e+C, FSI_0093+Test4343e+C, + [FSI_0093+Test4343e+C; FSI_0093+Test4343e+C]) type D = new: x: int -> D override ToString: unit -> string @@ -1508,8 +1530,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0091+Test4343e+C, FSI_0091+Test4343e+C, - [FSI_0091+Test4343e+C; FSI_0091+Test4343e+C]) + (FSI_0093+Test4343e+C, FSI_0093+Test4343e+C, + [FSI_0093+Test4343e+C; FSI_0093+Test4343e+C]) type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string @@ -1684,7 +1706,7 @@ module Regression5218 = type Regression4469 = new: unit -> Regression4469 member ToString: unit -> string -val r4469: Regression4469 = FSI_0107+Regression4469 +val r4469: Regression4469 = FSI_0109+Regression4469 val it: unit = () > Expect ABC = ABC @@ -2764,7 +2786,7 @@ val ShortName: string = "hi" > val list2: int list = [1] -module FSI_0317. +module FSI_0319. A8a951db8294f99e95ae1d276a7ddaefd93d1548e6bf749bdeae55d2649682b3 {"ImmutableField0":6} @@ -2786,7 +2808,7 @@ val it: unit = () > val it: {| AnonRecordField2: int |} = { AnonRecordField2 = 11 } -module FSI_0324.Project.fsproj +module FSI_0326.Project.fsproj type R3 = { ImmutableField3: int } diff --git a/tests/fsharp/core/printing/output.200.stderr.bsl b/tests/fsharp/core/printing/output.200.stderr.bsl index 6926dcc9f34..dae4463d4db 100644 --- a/tests/fsharp/core/printing/output.200.stderr.bsl +++ b/tests/fsharp/core/printing/output.200.stderr.bsl @@ -2,347 +2,347 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. let x,f = it, (fun () -> !it);; // this will read from the static storage for 'it' -------------------------^ -stdin(643,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. +stdin(645,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. x := 3;; --^^ -stdin(645,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. +stdin(647,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function diff --git a/tests/fsharp/core/printing/output.200.stdout.bsl b/tests/fsharp/core/printing/output.200.stdout.bsl index 89f13b2b05f..fdf12045d2d 100644 --- a/tests/fsharp/core/printing/output.200.stdout.bsl +++ b/tests/fsharp/core/printing/output.200.stdout.bsl @@ -421,6 +421,7 @@ type 'a T4063 = | AT4063 of 'a #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced #time ["on"|"off"];; // Toggle timing on/off #help;; // Display help + #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";; #r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2' #r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version #clear;; // Clear screen @@ -430,6 +431,27 @@ type 'a T4063 = | AT4063 of 'a +> val it: string = "Check #help for an identifier" + + +Description: +Builds a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + +Parameters: +- mapping: The function to transform elements from the input list. +- list: The input list. +Returns: +The list of transformed elements. + +Examples: +let inputs = [ "a"; "bbb"; "cc" ] + +inputs |> List.map (fun x -> x.Length) +// Evaluates to [ 1; 3; 2 ] + +Full name: Microsoft.FSharp.Collections.ListModule.map +Assembly: FSharp.Core.dll > val it: string = "Check #time on and then off" > @@ -739,8 +761,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0091+Test4343e+C, FSI_0091+Test4343e+C, - [FSI_0091+Test4343e+C; FSI_0091+Test4343e+C]) + (FSI_0093+Test4343e+C, FSI_0093+Test4343e+C, + [FSI_0093+Test4343e+C; FSI_0093+Test4343e+C]) type D = new: x: int -> D override ToString: unit -> string @@ -753,8 +775,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0091+Test4343e+C, FSI_0091+Test4343e+C, - [FSI_0091+Test4343e+C; FSI_0091+Test4343e+C]) + (FSI_0093+Test4343e+C, FSI_0093+Test4343e+C, + [FSI_0093+Test4343e+C; FSI_0093+Test4343e+C]) type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string @@ -929,7 +951,7 @@ module Regression5218 = type Regression4469 = new: unit -> Regression4469 member ToString: unit -> string -val r4469: Regression4469 = FSI_0107+Regression4469 +val r4469: Regression4469 = FSI_0109+Regression4469 val it: unit = () > Expect ABC = ABC @@ -2009,7 +2031,7 @@ val ShortName: string = "hi" > val list2: int list = [1] -module FSI_0317. +module FSI_0319. A8a951db8294f99e95ae1d276a7ddaefd93d1548e6bf749bdeae55d2649682b3 {"ImmutableField0":6} @@ -2031,7 +2053,7 @@ val it: unit = () > val it: {| AnonRecordField2: int |} = { AnonRecordField2 = 11 } -module FSI_0324.Project.fsproj +module FSI_0326.Project.fsproj type R3 = { ImmutableField3: int } diff --git a/tests/fsharp/core/printing/output.47.stderr.bsl b/tests/fsharp/core/printing/output.47.stderr.bsl index 3e98bca2fc4..7ea9b2e9f1b 100644 --- a/tests/fsharp/core/printing/output.47.stderr.bsl +++ b/tests/fsharp/core/printing/output.47.stderr.bsl @@ -2,443 +2,443 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function #r "nuget:Newtonsoft.Json, 13.0.1" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -stdin(1117,1): error FS3302: The 'package management' feature requires language version 5.0 or above +stdin(1119,1): error FS3302: The 'package management' feature requires language version 5.0 or above JsonConvert.SerializeObject { ImmutableField0 = 7 } ^^^^^^^^^^^ -stdin(1122,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. +stdin(1124,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. JsonConvert.SerializeObject { MutableField1 = 8 } |> printfn "%s";; ^^^^^^^^^^^ -stdin(1126,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. +stdin(1128,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. JsonConvert.SerializeObject { MutableField1 = 9 } ^^^^^^^^^^^ -stdin(1128,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. +stdin(1130,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. JsonConvert.SerializeObject {| AnonRecordField2 = 10 |} |> printfn "%s";; ^^^^^^^^^^^ -stdin(1131,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. +stdin(1133,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. JsonConvert.SerializeObject {| AnonRecordField2 = 11 |} ^^^^^^^^^^^ -stdin(1133,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. +stdin(1135,1): error FS0039: The value, namespace, type or module 'JsonConvert' is not defined. #r "nuget: System.Text.Json" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -stdin(1136,1): error FS3302: The 'package management' feature requires language version 5.0 or above +stdin(1138,1): error FS3302: The 'package management' feature requires language version 5.0 or above let test3b = JsonSerializer.Deserialize test3a;; -------------^^^^^^^^^^^^^^ -stdin(1140,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1142,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test3c = JsonSerializer.Serialize { ImmutableField3 = 13 };; -------------^^^^^^^^^^^^^^ -stdin(1141,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1143,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test3d = JsonSerializer.Deserialize test3c;; -------------^^^^^^^^^^^^^^ -stdin(1142,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1144,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test4a = JsonSerializer.Serialize { MutableField4 = 15 };; -------------^^^^^^^^^^^^^^ -stdin(1145,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1147,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test4b = JsonSerializer.Deserialize test4a;; -------------^^^^^^^^^^^^^^ -stdin(1146,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1148,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test4c = JsonSerializer.Serialize { MutableField4 = 16 };; -------------^^^^^^^^^^^^^^ -stdin(1147,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1149,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test4d = JsonSerializer.Deserialize test4c;; -------------^^^^^^^^^^^^^^ -stdin(1148,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1150,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test5a = JsonSerializer.Serialize {| AnonRecordField5 = 17 |};; -------------^^^^^^^^^^^^^^ -stdin(1151,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1153,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test5b = JsonSerializer.Deserialize test5a;; -------------^^^^^^^^^^^^^^ -stdin(1152,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1154,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test5c = JsonSerializer.Serialize {| AnonRecordField5 = 18 |};; -------------^^^^^^^^^^^^^^ -stdin(1153,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1155,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. let test5d = JsonSerializer.Deserialize test5c;; -------------^^^^^^^^^^^^^^ -stdin(1154,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. +stdin(1156,14): error FS0039: The value, namespace, type or module 'JsonSerializer' is not defined. diff --git a/tests/fsharp/core/printing/output.47.stdout.bsl b/tests/fsharp/core/printing/output.47.stdout.bsl index 37a93c6fe8e..088a6f21e4e 100644 --- a/tests/fsharp/core/printing/output.47.stdout.bsl +++ b/tests/fsharp/core/printing/output.47.stdout.bsl @@ -4060,6 +4060,7 @@ type 'a T4063 = | AT4063 of 'a #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced #time ["on"|"off"];; // Toggle timing on/off #help;; // Display help + #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";; #clear;; // Clear screen #quit;; // Exit @@ -4067,6 +4068,27 @@ type 'a T4063 = | AT4063 of 'a +> val it: string = "Check #help for an identifier" + + +Description: +Builds a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + +Parameters: +- mapping: The function to transform elements from the input list. +- list: The input list. +Returns: +The list of transformed elements. + +Examples: +let inputs = [ "a"; "bbb"; "cc" ] + +inputs |> List.map (fun x -> x.Length) +// Evaluates to [ 1; 3; 2 ] + +Full name: Microsoft.FSharp.Collections.ListModule.map +Assembly: FSharp.Core.dll > val it: string = "Check #time on and then off" > @@ -5039,8 +5061,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0090+Test4343e+C, FSI_0090+Test4343e+C, - [FSI_0090+Test4343e+C; FSI_0090+Test4343e+C]) + (FSI_0092+Test4343e+C, FSI_0092+Test4343e+C, + [FSI_0092+Test4343e+C; FSI_0092+Test4343e+C]) type D = new: x: int -> D override ToString: unit -> string @@ -5053,8 +5075,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0090+Test4343e+C, FSI_0090+Test4343e+C, - [FSI_0090+Test4343e+C; FSI_0090+Test4343e+C]) + (FSI_0092+Test4343e+C, FSI_0092+Test4343e+C, + [FSI_0092+Test4343e+C; FSI_0092+Test4343e+C]) type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string @@ -5229,7 +5251,7 @@ module Regression5218 = type Regression4469 = new: unit -> Regression4469 member ToString: unit -> string -val r4469: Regression4469 = FSI_0106+Regression4469 +val r4469: Regression4469 = FSI_0108+Regression4469 val it: unit = () > Expect ABC = ABC diff --git a/tests/fsharp/core/printing/output.multiemit.stderr.bsl b/tests/fsharp/core/printing/output.multiemit.stderr.bsl index 6926dcc9f34..dae4463d4db 100644 --- a/tests/fsharp/core/printing/output.multiemit.stderr.bsl +++ b/tests/fsharp/core/printing/output.multiemit.stderr.bsl @@ -2,347 +2,347 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. let x,f = it, (fun () -> !it);; // this will read from the static storage for 'it' -------------------------^ -stdin(643,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. +stdin(645,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. x := 3;; --^^ -stdin(645,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. +stdin(647,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function diff --git a/tests/fsharp/core/printing/output.multiemit.stdout.bsl b/tests/fsharp/core/printing/output.multiemit.stdout.bsl index ceb7d3d69a3..b2af7d4f2dc 100644 --- a/tests/fsharp/core/printing/output.multiemit.stdout.bsl +++ b/tests/fsharp/core/printing/output.multiemit.stdout.bsl @@ -4060,6 +4060,7 @@ type 'a T4063 = | AT4063 of 'a #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced #time ["on"|"off"];; // Toggle timing on/off #help;; // Display help + #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";; #r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2' #r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version #clear;; // Clear screen @@ -4069,6 +4070,27 @@ type 'a T4063 = | AT4063 of 'a +> val it: string = "Check #help for an identifier" + + +Description: +Builds a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + +Parameters: +- mapping: The function to transform elements from the input list. +- list: The input list. +Returns: +The list of transformed elements. + +Examples: +let inputs = [ "a"; "bbb"; "cc" ] + +inputs |> List.map (fun x -> x.Length) +// Evaluates to [ 1; 3; 2 ] + +Full name: Microsoft.FSharp.Collections.ListModule.map +Assembly: FSharp.Core.dll > val it: string = "Check #time on and then off" > @@ -5041,8 +5063,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0090+Test4343e+C, FSI_0090+Test4343e+C, - [FSI_0090+Test4343e+C; FSI_0090+Test4343e+C]) + (FSI_0092+Test4343e+C, FSI_0092+Test4343e+C, + [FSI_0092+Test4343e+C; FSI_0092+Test4343e+C]) type D = new: x: int -> D override ToString: unit -> string @@ -5055,8 +5077,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0090+Test4343e+C, FSI_0090+Test4343e+C, - [FSI_0090+Test4343e+C; FSI_0090+Test4343e+C]) + (FSI_0092+Test4343e+C, FSI_0092+Test4343e+C, + [FSI_0092+Test4343e+C; FSI_0092+Test4343e+C]) type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string @@ -5231,7 +5253,7 @@ module Regression5218 = type Regression4469 = new: unit -> Regression4469 member ToString: unit -> string -val r4469: Regression4469 = FSI_0106+Regression4469 +val r4469: Regression4469 = FSI_0108+Regression4469 val it: unit = () > Expect ABC = ABC @@ -6311,7 +6333,7 @@ val ShortName: string = "hi" > val list2: int list = [1] -module FSI_0316. +module FSI_0318. A8a951db8294f99e95ae1d276a7ddaefd93d1548e6bf749bdeae55d2649682b3 {"ImmutableField0":6} @@ -6333,7 +6355,7 @@ val it: unit = () > val it: {| AnonRecordField2: int |} = { AnonRecordField2 = 11 } -module FSI_0323.Project.fsproj +module FSI_0325.Project.fsproj type R3 = { ImmutableField3: int } diff --git a/tests/fsharp/core/printing/output.off.stderr.bsl b/tests/fsharp/core/printing/output.off.stderr.bsl index 6926dcc9f34..dae4463d4db 100644 --- a/tests/fsharp/core/printing/output.off.stderr.bsl +++ b/tests/fsharp/core/printing/output.off.stderr.bsl @@ -2,347 +2,347 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. let x,f = it, (fun () -> !it);; // this will read from the static storage for 'it' -------------------------^ -stdin(643,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. +stdin(645,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. x := 3;; --^^ -stdin(645,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. +stdin(647,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function diff --git a/tests/fsharp/core/printing/output.off.stdout.bsl b/tests/fsharp/core/printing/output.off.stdout.bsl index 64444ac405b..56edaec8d22 100644 --- a/tests/fsharp/core/printing/output.off.stdout.bsl +++ b/tests/fsharp/core/printing/output.off.stdout.bsl @@ -248,6 +248,7 @@ type 'a T4063 = | AT4063 of 'a #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced #time ["on"|"off"];; // Toggle timing on/off #help;; // Display help + #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";; #r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2' #r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version #clear;; // Clear screen @@ -257,6 +258,27 @@ type 'a T4063 = | AT4063 of 'a +> val it: string = "Check #help for an identifier" + + +Description: +Builds a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + +Parameters: +- mapping: The function to transform elements from the input list. +- list: The input list. +Returns: +The list of transformed elements. + +Examples: +let inputs = [ "a"; "bbb"; "cc" ] + +inputs |> List.map (fun x -> x.Length) +// Evaluates to [ 1; 3; 2 ] + +Full name: Microsoft.FSharp.Collections.ListModule.map +Assembly: FSharp.Core.dll > val it: string = "Check #time on and then off" > @@ -1778,7 +1800,7 @@ val ShortName: string = "hi" > val list2: int list -module FSI_0317. +module FSI_0319. A8a951db8294f99e95ae1d276a7ddaefd93d1548e6bf749bdeae55d2649682b3 {"ImmutableField0":6} @@ -1800,7 +1822,7 @@ val it: unit = () > val it: {| AnonRecordField2: int |} = { AnonRecordField2 = 11 } -module FSI_0324.Project.fsproj +module FSI_0326.Project.fsproj type R3 = { ImmutableField3: int } diff --git a/tests/fsharp/core/printing/output.quiet.stderr.bsl b/tests/fsharp/core/printing/output.quiet.stderr.bsl index 6926dcc9f34..dae4463d4db 100644 --- a/tests/fsharp/core/printing/output.quiet.stderr.bsl +++ b/tests/fsharp/core/printing/output.quiet.stderr.bsl @@ -2,347 +2,347 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. let x,f = it, (fun () -> !it);; // this will read from the static storage for 'it' -------------------------^ -stdin(643,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. +stdin(645,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. x := 3;; --^^ -stdin(645,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. +stdin(647,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function diff --git a/tests/fsharp/core/printing/output.stderr.bsl b/tests/fsharp/core/printing/output.stderr.bsl index 6926dcc9f34..dae4463d4db 100644 --- a/tests/fsharp/core/printing/output.stderr.bsl +++ b/tests/fsharp/core/printing/output.stderr.bsl @@ -2,347 +2,347 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(221,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(571,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(573,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1 = static member (+-+-+) x = "1 argument";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1b = static member (+-+-+) (x) = "1 (argument) [brackets make no diff]";; -----------------------------------------^^^^^ -stdin(573,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1c = static member (+-+-+) x = let a,b = x in "1 argument, tuple typed from RHS. Still not OK";; -----------------------------------------^^^^^ -stdin(574,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(576,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -stdin(575,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(577,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] and further args";; -----------------------------------------^^^^^ -stdin(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U2 = static member (+-+-+) (x,y) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(580,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(582,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(581,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(583,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(586,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(584,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(586,20): warning FS0086: The name '(:=)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(590,20): warning FS1172: Infix operator member '&' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (&) = "AMP" -------------------^ -stdin(588,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. +stdin(590,20): warning FS0086: The name '(&)' should not be used as a member name. If defining a static member for use from other CLI languages then use the name 'op_Amp' instead. static member (&^) = "AMP_AMP" -------------------^^ -stdin(589,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(591,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(592,20): warning FS1172: Infix operator member '=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (=) = "EQUALS" -------------------^ -stdin(590,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. +stdin(592,20): warning FS0086: The name '(=)' should not be used as a member name. To define equality semantics for a type, override the 'Object.Equals' member. If defining a static member for use from other CLI languages then use the name 'op_Equality' instead. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(592,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(594,20): warning FS1172: Infix operator member '!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(596,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(598,20): warning FS1172: Infix operator member '...=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...!=) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^^ -stdin(597,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(599,20): warning FS1172: Infix operator member '...!=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...<) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(598,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(600,20): warning FS1172: Infix operator member '...<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...>) = "INFIX_COMPARE_OP" // with $. prefix -------------------^^^^ -stdin(599,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(601,20): warning FS1172: Infix operator member '...>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ($) = "DOLLAR" -------------------^ -stdin(601,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(603,20): warning FS1172: Infix operator member '$' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(604,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (<) = "LESS" -------------------^ -stdin(602,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. +stdin(604,20): warning FS0086: The name '(<)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_LessThan' instead. static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(605,20): warning FS1172: Infix operator member '>' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (>) = "GREATER" -------------------^ -stdin(603,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. +stdin(605,20): warning FS0086: The name '(>)' should not be used as a member name. To define comparison semantics for a type, implement the 'System.IComparable' interface. If defining a static member for use from other CLI languages then use the name 'op_GreaterThan' instead. static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(606,20): warning FS1172: Infix operator member '@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (@) = "INFIX_AT_HAT_OP" -------------------^ -stdin(604,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(606,20): warning FS0086: The name '(@)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(607,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(605,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types +stdin(607,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types static member (...@) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(606,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(608,20): warning FS1172: Infix operator member '...@' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (...^) = "INFIX_AT_HAT_OP" // with $. prefix -------------------^^^^ -stdin(607,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(609,20): warning FS1172: Infix operator member '...^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (%) = "PERCENT_OP" -------------------^ -stdin(608,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(610,20): warning FS1172: Infix operator member '%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (-) = "MINUS" -------------------^ -stdin(610,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(612,20): warning FS1172: Infix operator member '-' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( * ) = "STAR" --------------------^ -stdin(611,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member (/) = "INFIX_STAR_DIV_MOD_OP" -------------------^ -stdin(613,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...* ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(615,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(617,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( .../ ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(616,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(618,21): warning FS1172: Infix operator member '.../' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ...% ) = "INFIX_STAR_DIV_MOD_OP" // with $. prefix --------------------^^^^ -stdin(617,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(619,21): warning FS1172: Infix operator member '...%' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... static member ( ** ) = "INFIX_STAR_STAR_OP" --------------------^^ -stdin(618,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(620,21): warning FS1172: Infix operator member '**' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(623,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(625,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. let x,f = it, (fun () -> !it);; // this will read from the static storage for 'it' -------------------------^ -stdin(643,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. +stdin(645,26): info FS3370: The use of '!' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change '!cell' to 'cell.Value'. x := 3;; --^^ -stdin(645,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. +stdin(647,3): info FS3370: The use of ':=' from the F# library is deprecated. See https://aka.ms/fsharp-refcell-ops. For example, please change 'cell := expr' to 'cell.Value <- expr'. member this.M() = "string" ----------------^ -stdin(764,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(766,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. member this.P = "string" ----------------^ -stdin(771,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(773,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. type public IBPublic = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^ -stdin(778,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(780,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. type internal IBInternal = interface inherit IAPrivate abstract Q : int end ------------------^^^^^^^^^^ -stdin(783,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(785,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. type public IBPublic = interface inherit IAInternal abstract Q : int end ------------------^^^^^^^^ -stdin(792,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(794,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. override x.M(a:string) = 1 -------------------^ -stdin(824,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' +stdin(826,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract Regression4232.D.M: 'U -> int' and 'abstract Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(832,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(834,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(835,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(837,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' +stdin(840,6): error FS1210: Active pattern '|A|B|' has a result type containing type variables that are not determined by the input. The common cause is a when a result case is not mentioned, e.g. 'let (|A|B|) (x:int) = A x'. This can be fixed with a type constraint, e.g. 'let (|A|B|) (x:int) : Choice = A x' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(846,6): error FS1209: Active pattern '|A|B|' is not a function diff --git a/tests/fsharp/core/printing/output.stdout.bsl b/tests/fsharp/core/printing/output.stdout.bsl index ceb7d3d69a3..b2af7d4f2dc 100644 --- a/tests/fsharp/core/printing/output.stdout.bsl +++ b/tests/fsharp/core/printing/output.stdout.bsl @@ -4060,6 +4060,7 @@ type 'a T4063 = | AT4063 of 'a #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced #time ["on"|"off"];; // Toggle timing on/off #help;; // Display help + #help "idn";; // Display documentation for an identifier, e.g. #help "List.map";; #r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2' #r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version #clear;; // Clear screen @@ -4069,6 +4070,27 @@ type 'a T4063 = | AT4063 of 'a +> val it: string = "Check #help for an identifier" + + +Description: +Builds a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + +Parameters: +- mapping: The function to transform elements from the input list. +- list: The input list. +Returns: +The list of transformed elements. + +Examples: +let inputs = [ "a"; "bbb"; "cc" ] + +inputs |> List.map (fun x -> x.Length) +// Evaluates to [ 1; 3; 2 ] + +Full name: Microsoft.FSharp.Collections.ListModule.map +Assembly: FSharp.Core.dll > val it: string = "Check #time on and then off" > @@ -5041,8 +5063,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0090+Test4343e+C, FSI_0090+Test4343e+C, - [FSI_0090+Test4343e+C; FSI_0090+Test4343e+C]) + (FSI_0092+Test4343e+C, FSI_0092+Test4343e+C, + [FSI_0092+Test4343e+C; FSI_0092+Test4343e+C]) type D = new: x: int -> D override ToString: unit -> string @@ -5055,8 +5077,8 @@ module Test4343e = val cA: C val cB: C val cAB: C * C * C list = - (FSI_0090+Test4343e+C, FSI_0090+Test4343e+C, - [FSI_0090+Test4343e+C; FSI_0090+Test4343e+C]) + (FSI_0092+Test4343e+C, FSI_0092+Test4343e+C, + [FSI_0092+Test4343e+C; FSI_0092+Test4343e+C]) type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string @@ -5231,7 +5253,7 @@ module Regression5218 = type Regression4469 = new: unit -> Regression4469 member ToString: unit -> string -val r4469: Regression4469 = FSI_0106+Regression4469 +val r4469: Regression4469 = FSI_0108+Regression4469 val it: unit = () > Expect ABC = ABC @@ -6311,7 +6333,7 @@ val ShortName: string = "hi" > val list2: int list = [1] -module FSI_0316. +module FSI_0318. A8a951db8294f99e95ae1d276a7ddaefd93d1548e6bf749bdeae55d2649682b3 {"ImmutableField0":6} @@ -6333,7 +6355,7 @@ val it: unit = () > val it: {| AnonRecordField2: int |} = { AnonRecordField2 = 11 } -module FSI_0323.Project.fsproj +module FSI_0325.Project.fsproj type R3 = { ImmutableField3: int } diff --git a/tests/fsharp/core/printing/test.fsx b/tests/fsharp/core/printing/test.fsx index c0943540b49..02e6de789a6 100644 --- a/tests/fsharp/core/printing/test.fsx +++ b/tests/fsharp/core/printing/test.fsx @@ -211,6 +211,8 @@ module RepeatedModule = begin let repeatedByteLiteral = [| 12uy; 13uy; 14uy |] e (* Regressions for standard responses... *) "Check #help";; #help;; +"Check #help for an identifier" +#help "List.map";; "Check #time on and then off";; #time;; (* time on *) (* no eval in between, since time can vary and look like a regression *)