From 1ef4a55b9e541b0bf6fef219434eb2e928ae7b3d Mon Sep 17 00:00:00 2001 From: Don Syme Date: Tue, 31 Aug 2021 18:04:24 +0100 Subject: [PATCH 01/25] printing updates --- src/fsharp/NicePrint.fs | 130 +- src/fsharp/utils/sformat.fs | 11 +- src/fsharp/utils/sformat.fsi | 7 +- tests/fsharp/core/members/basics/test.fsi | 8 +- .../printing/z.output.test.1000.stderr.bsl | 2 +- .../printing/z.output.test.1000.stdout.47.bsl | 1092 ++++++++-------- .../printing/z.output.test.1000.stdout.50.bsl | 1092 ++++++++-------- .../printing/z.output.test.200.stderr.bsl | 2 +- .../printing/z.output.test.200.stdout.47.bsl | 1122 ++++++++--------- .../printing/z.output.test.200.stdout.50.bsl | 1122 ++++++++--------- .../printing/z.output.test.default.stderr.bsl | 2 +- .../z.output.test.default.stdout.47.bsl | 1090 ++++++++-------- .../z.output.test.default.stdout.50.bsl | 1090 ++++++++-------- .../printing/z.output.test.off.stderr.bsl | 2 +- .../printing/z.output.test.off.stdout.47.bsl | 1060 ++++++++-------- .../printing/z.output.test.off.stdout.50.bsl | 1060 ++++++++-------- .../printing/z.output.test.quiet.stderr.bsl | 2 +- tests/fsharp/tests.fs | 18 +- 18 files changed, 4355 insertions(+), 4557 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 68af1818615..2f870a92472 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -40,6 +40,8 @@ module internal PrintUtilities = let braceBarL x = wordL leftBraceBar ^^ x ^^ wordL rightBraceBar + let addColonL l = if endsWithL ">" l then l ^^ WordL.colon else l ^^ RightL.colon + let comment str = wordL (tagText (sprintf "(* %s *)" str)) let layoutsL (ls: Layout list) : Layout = @@ -607,7 +609,7 @@ module private PrintTypes = /// Layout constraints, taking TypeSimplificationInfo into account and private layoutConstraintWithInfo denv env (tp, tpc) = - let longConstraintPrefix l = layoutTyparRefWithInfo denv env tp ^^ WordL.colon ^^ l + let longConstraintPrefix l = (layoutTyparRefWithInfo denv env tp |> addColonL) ^^ l match tpc with | TyparConstraint.CoercesTo(tpct, _) -> [layoutTyparRefWithInfo denv env tp ^^ wordL (tagOperator ":>") --- layoutTypeWithInfo denv env tpct] @@ -616,7 +618,8 @@ module private PrintTypes = [layoutTraitWithInfo denv env traitInfo] | TyparConstraint.DefaultsTo(_, ty, _) -> - if denv.showTyparDefaultConstraints then [wordL (tagKeyword "default") ^^ layoutTyparRefWithInfo denv env tp ^^ WordL.colon ^^ layoutTypeWithInfo denv env ty] + if denv.showTyparDefaultConstraints then + [wordL (tagKeyword "default") ^^ (layoutTyparRefWithInfo denv env tp |> addColonL) ^^ layoutTypeWithInfo denv env ty] else [] | TyparConstraint.IsEnum(ty, _) -> @@ -672,8 +675,7 @@ module private PrintTypes = [wordL (tagKeyword "default") ^^ wordL (tagKeyword "constructor")] else [bracketL ( - wordL (tagKeyword "new") ^^ - wordL (tagPunctuation ":") ^^ + (WordL.keywordNew |> addColonL) ^^ WordL.structUnit ^^ WordL.arrow ^^ (layoutTyparRefWithInfo denv env tp)) |> longConstraintPrefix] @@ -690,8 +692,8 @@ module private PrintTypes = match tys with | [ty] -> layoutTypeWithInfo denv env ty | tys -> bracketL (layoutTypesWithInfoAndPrec denv env 2 (wordL (tagKeyword "or")) tys) - tysL ^^ wordL (tagPunctuation ":") --- - bracketL (stat ++ wordL (tagMember nm) ^^ wordL (tagPunctuation ":") --- + (tysL |> addColonL) --- + bracketL (stat ++ (wordL (tagMember nm) |> addColonL) --- ((layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) argtys --- wordL (tagPunctuation "->")) --- (layoutReturnType denv env rty))) @@ -825,7 +827,9 @@ module private PrintTypes = match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy denv.g ty with // Layout an optional argument | Some(id), true, _, ValueSome ty -> - leftL (tagPunctuation "?") ^^ sepL (tagParameter id.idText) ^^ SepL.colon ^^ layoutTypeWithInfoAndPrec denv env 2 ty + leftL (tagPunctuation "?") ^^ + (sepL (tagParameter id.idText) |> addColonL) ^^ + layoutTypeWithInfoAndPrec denv env 2 ty // Layout an unnamed argument | None, _, _, _ -> layoutTypeWithInfoAndPrec denv env 2 ty @@ -836,7 +840,7 @@ module private PrintTypes = layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ leftL (tagParameter id.idText) else leftL (tagParameter id.idText) - prefix ^^ SepL.colon ^^ layoutTypeWithInfoAndPrec denv env 2 ty + (prefix |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty let allArgsL = argInfos @@ -886,8 +890,10 @@ module private PrintTypes = | _ -> let tpcsL = layoutConstraintsWithInfo denv env tpcs let coreL = sepListL (sepL (tagPunctuation ",")) (List.map (layoutTyparRefWithInfo denv env) typars) - (if prefix || not (isNil tpcs) then nmL ^^ angleL (coreL --- tpcsL) else bracketL coreL --- nmL) - + if prefix || not (isNil tpcs) then + nmL ^^ angleL (coreL --- tpcsL) + else + bracketL coreL --- nmL let layoutTyparConstraint denv (tp, tpc) = match layoutConstraintWithInfo denv SimplifyTypes.typeSimplificationInfo0 (tp, tpc) with @@ -950,11 +956,13 @@ module private PrintTypes = let prettyLayoutOfMemberSig denv (memberToParentInst, nm, methTypars, argInfos, retTy) = let _, niceMethodTypars, tauL = prettyLayoutOfMemberSigCore denv memberToParentInst (emptyTyparInst, methTypars, argInfos, retTy) - let nameL = - let nameL = DemangleOperatorNameAsLayout tagMember nm - let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL - nameL - nameL ^^ wordL (tagPunctuation ":") ^^ tauL + let nameL = DemangleOperatorNameAsLayout tagMember nm + let nameL = + if denv.showTyparBinding then + layoutTyparDecls denv nameL true niceMethodTypars + else + nameL + (nameL |> addColonL) ^^ tauL /// layouts the elements of an unresolved overloaded method call: /// argInfos: unammed and named arguments @@ -1055,7 +1063,7 @@ module private PrintTastMemberOrVals = else let nameL = mkNameL niceMethodTypars tagMember v.LogicalName let nameL = if short then nameL else mkInlineL denv v.Deref nameL - stat --- (nameL ^^ WordL.colon ^^ tauL) + stat --- ((nameL |> addColonL) ^^ tauL) prettyTyparInst, resL | SynMemberKind.ClassConstructor @@ -1065,7 +1073,7 @@ module private PrintTastMemberOrVals = if short then tauL else let newL = layoutAccessibility denv v.Accessibility WordL.keywordNew - stat ++ newL ^^ wordL (tagPunctuation ":") ^^ tauL + stat ++ (newL |> addColonL) ^^ tauL prettyTyparInst, resL | SynMemberKind.PropertyGetSet -> @@ -1092,7 +1100,7 @@ module private PrintTastMemberOrVals = else tauL --- (WordL.keywordWith ^^ WordL.keywordGet) else let nameL = mkNameL niceMethodTypars tagProperty v.CoreDisplayName - stat --- (nameL ^^ WordL.colon ^^ (if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet))) + stat --- ((nameL |> addColonL) ^^ (if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet))) prettyTyparInst, resL | SynMemberKind.PropertySet -> @@ -1110,7 +1118,7 @@ module private PrintTastMemberOrVals = (tauL --- (WordL.keywordWith ^^ WordL.keywordSet)) else let nameL = mkNameL niceMethodTypars tagProperty v.CoreDisplayName - stat --- (nameL ^^ wordL (tagPunctuation ":") ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) + stat --- ((nameL |> addColonL) ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) prettyTyparInst, resL prettyTyparInst, memberL @@ -1181,11 +1189,11 @@ module private PrintTastMemberOrVals = if isTyFunction || isOverGeneric || denv.showTyparBinding then layoutTyparDecls denv nameL true tps else nameL - let valAndTypeL = (WordL.keywordVal ^^ typarBindingsL --- wordL (tagPunctuation ":")) --- layoutTopType denv env argInfos rty cxs + let valAndTypeL = (WordL.keywordVal ^^ (typarBindingsL |> addColonL)) --- layoutTopType denv env argInfos rty cxs let valAndTypeL = match denv.generatedValueLayout v with | None -> valAndTypeL - | Some rhsL -> (valAndTypeL ++ wordL (tagPunctuation"=")) --- rhsL + | Some rhsL -> (valAndTypeL ++ WordL.equals) --- rhsL match v.LiteralValue with | Some literalValue -> valAndTypeL ++ layoutOfLiteralValue literalValue | None -> valAndTypeL @@ -1253,8 +1261,7 @@ module InfoMemberPrinting = else nm.idText SepL.questionMark ^^ - wordL (tagParameter idText) ^^ - RightL.colon ^^ + (wordL (tagParameter idText) |> addColonL) ^^ PrintTypes.layoutType denv pty // Layout an unnamed argument | _, None, _, _ -> @@ -1267,8 +1274,7 @@ module InfoMemberPrinting = else nm.idText layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ - wordL (tagParameter idText) ^^ - RightL.colon ^^ + (wordL (tagParameter idText) |> addColonL) ^^ PrintTypes.layoutType denv pty | false, Some nm, _, _ -> let idText = @@ -1276,8 +1282,7 @@ module InfoMemberPrinting = "``" + nm.idText + "``" else nm.idText - wordL (tagParameter idText) ^^ - RightL.colon ^^ + (wordL (tagParameter idText) |> addColonL) ^^ PrintTypes.layoutType denv pty let formatParamDataToBuffer denv os pd = layoutParamData denv pd |> bufferL os @@ -1306,8 +1311,7 @@ module InfoMemberPrinting = else WordL.keywordMember ^^ PrintTypes.layoutTyparDecls denv (minfo.LogicalName |> tagMethod |> wordL) true minfo.FormalMethodTypars - ) ^^ - WordL.colon + ) |> addColonL let layout = layoutXmlDocOfMethInfo denv infoReader minfo layout let paramDatas = minfo.GetParamDatas(amap, m, minst) let layout = @@ -1352,7 +1356,6 @@ module InfoMemberPrinting = let layout = layout ^^ sepListL RightL.comma ((List.concat >> List.map (layoutParamData denv)) paramDatas) layout ^^ RightL.rightParen ^^ WordL.colon ^^ PrintTypes.layoutType denv retTy - // Prettify an ILMethInfo let prettifyILMethInfo (amap: Import.ImportMap) m (minfo: MethInfo) typarInst ilMethInfo = let (ILMethInfo(_, apparentTy, dty, mdef, _)) = ilMethInfo @@ -1430,8 +1433,7 @@ module InfoMemberPrinting = wordL (tagText (FSComp.SR.typeInfoProperty())) ^^ layoutTyconRef denv pinfo.ApparentEnclosingTyconRef ^^ SepL.dot ^^ - nameL ^^ - RightL.colon ^^ + (nameL |> addColonL) ^^ layoutType denv rty ^^ getterSetter @@ -1471,7 +1473,7 @@ module private TastDefinitionPrinting = |> wordL let lhs = (if addAccess then layoutAccessibility denv fld.Accessibility lhs else lhs) let lhs = if fld.IsMutable then wordL (tagKeyword "mutable") --- lhs else lhs - let fieldL = (lhs ^^ RightL.colon) --- layoutType denv fld.FormalType + let fieldL = (lhs |> addColonL) --- layoutType denv fld.FormalType // The enclosing TyconRef might be a union and we can only get fields from union cases, so we need ignore unions here. if not enclosingTcref.IsUnionTycon then @@ -1495,7 +1497,7 @@ module private TastDefinitionPrinting = | [f] when isUnionCase -> layoutUnionOrExceptionField denv infoReader isGeneratedUnionCaseField enclosingTcref -1 f | _ -> let isGenerated = if isUnionCase then isGeneratedUnionCaseField else isGeneratedExceptionField - sepListL (wordL (tagPunctuation "*")) (List.mapi (layoutUnionOrExceptionField denv infoReader isGenerated enclosingTcref) fields) + sepListL WordL.star (List.mapi (layoutUnionOrExceptionField denv infoReader isGenerated enclosingTcref) fields) let layoutUnionCase denv infoReader prefixL enclosingTcref (ucase: UnionCase) = let nmL = DemangleOperatorNameAsLayout (tagUnionCase >> mkNav ucase.DefinitionRange) ucase.Id.idText @@ -1530,7 +1532,7 @@ module private TastDefinitionPrinting = let staticL = if e.IsStatic then WordL.keywordStatic else emptyL let nameL = wordL (tagField (adjustILName e.FieldName)) let typL = layoutType denv (e.FieldType(amap, m)) - staticL ^^ WordL.keywordVal ^^ nameL ^^ WordL.colon ^^ typL + staticL ^^ WordL.keywordVal ^^ (nameL |> addColonL) ^^ typL let private layoutEventInfo denv (infoReader: InfoReader) m (e: EventInfo) = let amap = infoReader.amap @@ -1551,7 +1553,7 @@ module private TastDefinitionPrinting = let nameL = eventTag |> wordL let typL = layoutType denv (e.GetDelegateType(amap, m)) - let overallL = staticL ^^ WordL.keywordMember ^^ nameL ^^ WordL.colon ^^ typL + let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfEventInfo denv infoReader e overallL let private layoutPropInfo denv (infoReader: InfoReader) m (p: PropInfo) = @@ -1576,7 +1578,7 @@ module private TastDefinitionPrinting = let nameL = propTag |> wordL let typL = layoutType denv (p.GetPropertyType(amap, m)) // shouldn't happen - let overallL = modifierAndMember ^^ nameL ^^ WordL.colon ^^ typL + let overallL = modifierAndMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfPropInfo denv infoReader p overallL let layoutTyconRef (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified typewordL (tcref: TyconRef) = @@ -1950,26 +1952,23 @@ module private TastDefinitionPrinting = let nm = path |> List.last let innerPath = path.[..path.Length - 2] sepListL SepL.dot (List.map (tagNamespace >> wordL) innerPath) ^^ SepL.dot ^^ wordL (tagModule nm) + let modNameL = wordL (tagKeyword "module") ^^ nmL + let modNameEqualsL = modNameL ^^ WordL.equals + let modIsEmpty = + mspec.ModuleOrNamespaceType.AllEntities |> Seq.isEmpty && + mspec.ModuleOrNamespaceType.AllValsAndMembers |> Seq.isEmpty + // Check if its an outer module or a nested module - if (outerPath |> List.forall (fun (_, istype) -> istype = Namespace)) then - // Check if this is an outer module with no namespace - if isNil outerPath then - // If so print a "module" declaration - (wordL (tagKeyword "module") ^^ nmL) - else - if mspec.ModuleOrNamespaceType.AllEntities |> Seq.isEmpty && mspec.ModuleOrNamespaceType.AllValsAndMembers |> Seq.isEmpty then - (wordL (tagKeyword "module") ^^ nmL ^^ WordL.equals ^^ wordL (tagKeyword "begin") ^^ wordL (tagKeyword "end")) - else - // Otherwise this is an outer module contained immediately in a namespace - // We already printed the namespace declaration earlier. So just print the - // module now. - (wordL (tagKeyword "module") ^^ nmL ^^ WordL.equals) + if (outerPath |> List.forall (fun (_, istype) -> istype = Namespace)) && isNil outerPath then + // If so print a "module" declaration + modNameL + elif modIsEmpty then + modNameEqualsL ^^ wordL (tagKeyword "begin") ^^ wordL (tagKeyword "end") else - if mspec.ModuleOrNamespaceType.AllEntities |> Seq.isEmpty && mspec.ModuleOrNamespaceType.AllValsAndMembers |> Seq.isEmpty then - (wordL (tagKeyword "module") ^^ nmL ^^ WordL.equals ^^ wordL (tagKeyword "begin") ^^ wordL (tagKeyword "end")) - else - // OK, this is a nested module - (wordL (tagKeyword "module") ^^ nmL ^^ WordL.equals) + // Otherwise this is an outer module contained immediately in a namespace + // We already printed the namespace declaration earlier. So just print the + // module now. + modNameEqualsL let headerL = layoutAttribs denv false (generalizedTyconRef(mkLocalEntityRef mspec)) mspec.TypeOrMeasureKind mspec.Attribs headerL @@ -2117,27 +2116,36 @@ module private InferredSigPrinting = let nmL = layoutAccessibility denv mspec.Accessibility (wordL (tagModule nm)) let denv = denv.AddAccessibility mspec.Accessibility let basic = imdefL denv def + let modNameL = wordL (tagKeyword "module") ^^ nmL + let modNameEqualsL = modNameL ^^ WordL.equals + let modIsOuter = (outerPath |> List.forall (fun (_, istype) -> istype = Namespace) ) let basicL = // Check if its an outer module or a nested module - if (outerPath |> List.forall (fun (_, istype) -> istype = Namespace) ) then + if modIsOuter then // OK, this is an outer module if showHeader then // OK, we're not in F# Interactive // Check if this is an outer module with no namespace if isNil outerPath then - // If so print a "module" declaration - (wordL (tagKeyword "module") ^^ nmL) @@ basic + // If so print a "module" declaration, no indentation + modNameL @@ basic else // Otherwise this is an outer module contained immediately in a namespace // We already printed the namespace declaration earlier. So just print the // module now. - ((wordL (tagKeyword"module") ^^ nmL ^^ WordL.equals ^^ wordL (tagKeyword "begin")) @@-- basic) @@ WordL.keywordEnd + if isEmptyL basic then + ((modNameEqualsL ^^ wordL (tagKeyword "begin")) @@-- basic) @@ WordL.keywordEnd + else + modNameEqualsL @@-- basic else // OK, we're in F# Interactive, presumably the implicit module for each interaction. basic else - // OK, this is a nested module - ((wordL (tagKeyword "module") ^^ nmL ^^ WordL.equals ^^ wordL (tagKeyword"begin")) @@-- basic) @@ WordL.keywordEnd + // OK, this is a nested module, with indentation + if isEmptyL basic then + ((modNameEqualsL ^^ wordL (tagKeyword"begin")) @@-- basic) @@ WordL.keywordEnd + else + modNameEqualsL @@-- basic layoutXmlDoc denv mspec.XmlDoc basicL imexprL denv expr diff --git a/src/fsharp/utils/sformat.fs b/src/fsharp/utils/sformat.fs index b700b34900f..762a313df2a 100644 --- a/src/fsharp/utils/sformat.fs +++ b/src/fsharp/utils/sformat.fs @@ -89,7 +89,7 @@ type Joint = [] type Layout = | ObjLeaf of juxtLeft: bool * object: obj * juxtRight: bool - | Leaf of juxtLeft: bool * text: TaggedText * justRight: bool + | Leaf of juxtLeft: bool * text: TaggedText * juxtRight: bool | Node of leftLayout: Layout * rightLayout: Layout * joint: Joint | Attr of text: string * attributes: (string * string) list * layout: Layout @@ -269,6 +269,15 @@ module Layout = | Leaf(true, s, true) -> s.Text = "" | _ -> false +#if COMPILER + let rec endsWithL (text: string) layout = + match layout with + | Leaf(_, s, _) -> s.Text.EndsWith(text) + | Node(_, r, _) -> endsWithL text r + | Attr(_, _, l) -> endsWithL text l + | ObjLeaf _ -> false +#endif + let mkNode l r joint = if isEmptyL l then r else if isEmptyL r then l else diff --git a/src/fsharp/utils/sformat.fsi b/src/fsharp/utils/sformat.fsi index c62594a3c76..e394bbe9a00 100644 --- a/src/fsharp/utils/sformat.fsi +++ b/src/fsharp/utils/sformat.fsi @@ -90,7 +90,7 @@ namespace Microsoft.FSharp.Text.StructuredPrintfImpl [] type internal Layout = | ObjLeaf of juxtLeft: bool * object: obj * juxtRight: bool - | Leaf of juxtLeft: bool * text: TaggedText * justRight: bool + | Leaf of juxtLeft: bool * text: TaggedText * juxtRight: bool | Node of leftLayout: Layout * rightLayout: Layout * joint: Joint | Attr of text: string * attributes: (string * string) list * layout: Layout @@ -237,6 +237,11 @@ namespace Microsoft.FSharp.Text.StructuredPrintfImpl /// Is it the empty layout? val isEmptyL: layout:Layout -> bool +#if COMPILER + /// Check if the last character in the layout is the given character + val endsWithL: text: string -> layout: Layout -> bool +#endif + /// An uninterpreted leaf, to be interpreted into a string /// by the layout engine. This allows leaf layouts for numbers, strings and /// other atoms to be customized according to culture. diff --git a/tests/fsharp/core/members/basics/test.fsi b/tests/fsharp/core/members/basics/test.fsi index 7efd5cdd50a..b18bf68d4ac 100644 --- a/tests/fsharp/core/members/basics/test.fsi +++ b/tests/fsharp/core/members/basics/test.fsi @@ -30,7 +30,7 @@ type ClassType2 = end -module RecordTypeTest: begin +module RecordTypeTest = begin [] type AbstractType = @@ -79,7 +79,7 @@ module RecordTypeTest: begin end -module UnionTypeTest: begin +module UnionTypeTest = begin [] type AbstractType = @@ -130,12 +130,12 @@ module UnionTypeTest: begin end -module ToStringOnUnionTest: begin +module ToStringOnUnionTest = begin type MyUnion = A of string | B end -module ToStringOnUnionTestOverride: begin +module ToStringOnUnionTestOverride = begin type MyUnion = A of string | B end \ No newline at end of file diff --git a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl index 4ae32a6ed01..50f1d16cc58 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' +stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index dd72a02e9d9..d48c27a4dac 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -1,48 +1,48 @@ -> val it : unit = () +> val it: unit = () -> > val repeatId : string = "A" +> > val repeatId: string = "A" -> val repeatId : string = "B" +> val repeatId: string = "B" namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy - -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs : System.Windows.Forms.Form [] = + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy + +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form +val fs: System.Windows.Forms.Form [] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -143,7 +143,7 @@ val fs : System.Windows.Forms.Form [] = System.Windows.Forms.Form, Text: fs #97; System.Windows.Forms.Form, Text: fs #98; System.Windows.Forms.Form, Text: fs #99; ...|] -val xs : string list = +val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -153,7 +153,7 @@ val xs : string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa : string [] = +val xa: string [] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -163,45 +163,45 @@ val xa : string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2 : string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] -val sxs0 : Set = set [] +val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val sxs0: Set = set [] -> val sxs1 : Set = set ["0"] +> val sxs1: Set = set ["0"] -> val sxs2 : Set = set ["0"; "1"] +> val sxs2: Set = set ["0"; "1"] -> val sxs3 : Set = set ["0"; "1"; "2"] +> val sxs3: Set = set ["0"; "1"; "2"] -> val sxs4 : Set = set ["0"; "1"; "2"; "3"] +> val sxs4: Set = set ["0"; "1"; "2"; "3"] -> val sxs200 : Set = +> val sxs200: Set = set ["0"; "1"; "10"; "100"; "101"; "102"; "103"; "104"; "105"; ...] -> val msxs0 : Map = map [] +> val msxs0: Map = map [] -> val msxs1 : Map = map [(0, "0")] +> val msxs1: Map = map [(0, "0")] -> val msxs2 : Map = map [(0, "0"); (1, "1")] +> val msxs2: Map = map [(0, "0"); (1, "1")] -> val msxs3 : Map = map [(0, "0"); (1, "1"); (2, "2")] +> val msxs3: Map = map [(0, "0"); (1, "1"); (2, "2")] -> val msxs4 : Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] +> val msxs4: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] -> val msxs200 : Map = +> val msxs200: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3"); (4, "4"); (5, "5"); (6, "6"); (7, "7"); (8, "8"); ...] -> module M = begin - val a : string = "sub-binding" - val b : +> module M = + val a: string = "sub-binding" + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), @@ -215,30 +215,27 @@ val sxs0 : Set = set [] "68"; "69"; "70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; ...], ..., ...)) -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref = { contents = "value" } -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option = None -val opt4 : 'a option option option option -val opt4b : int option option option option = Some (Some (Some None)) -val opt5 : int list option option option option option list = + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref = { contents = "value" } +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option = None +val opt4: 'a option option option option +val opt4b: int option option option option = Some (Some (Some None)) +val opt5: int list option option option option option list = [Some (Some (Some (Some None))); Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some @@ -249,8 +246,8 @@ val opt5 : int list option option option option option list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] -val mkStr : n:int -> string -val strs : string [] = +val mkStr: n: int -> string +val strs: string [] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -328,7 +325,7 @@ val strs : string [] = "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]; ...|] -val str7s : string [] = +val str7s: string [] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -426,7 +423,7 @@ val str7s : string [] = "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]; ...|] -val grids : string [,] = +val grids: string [,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -461,16 +458,16 @@ val grids : string [,] = > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree = +val tree_2_4: tree = N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]] > [Building 2 6...done] -val tree_2_6 : tree = +val tree_2_6: tree = N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -480,7 +477,7 @@ val tree_2_6 : tree = N [N [N [N ...; ...]; ...]; ...]; ...]; ...] > [Building 2 8...done] -val tree_2_8 : tree = +val tree_2_8: tree = N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -490,7 +487,7 @@ val tree_2_8 : tree = N [N ...; ...]; ...]; ...]; ...]; ...] > [Building 2 10...done] -val tree_2_10 : tree = +val tree_2_10: tree = N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -501,7 +498,7 @@ val tree_2_10 : tree = ...]; ...]; ...]; ...]; ...] > [Building 2 12...done] -val tree_2_12 : tree = +val tree_2_12: tree = N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -512,7 +509,7 @@ val tree_2_12 : tree = ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 14...done] -val tree_2_14 : tree = +val tree_2_14: tree = N [N [N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; @@ -529,7 +526,7 @@ val tree_2_14 : tree = ...] > [Building 3 8...done] -val tree_3_8 : tree = +val tree_3_8: tree = N [N [N [N [N [N [N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]]; @@ -540,7 +537,7 @@ val tree_3_8 : tree = ...]; ...]; ...]; ...]; ...] > [Building 4 8...done] -val tree_4_8 : tree = +val tree_4_8: tree = N [N [N [N [N [N [N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]]; N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; @@ -553,7 +550,7 @@ val tree_4_8 : tree = ...]; ...]; ...] > [Building 5 8...done] -val tree_5_8 : tree = +val tree_5_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -563,7 +560,7 @@ val tree_5_8 : tree = ...]; ...]; ...]; ...] > [Building 6 8...done] -val tree_6_8 : tree = +val tree_6_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]]; @@ -574,7 +571,7 @@ val tree_6_8 : tree = ...]; ...] > [Building 5 3...done] -val tree_5_3 : tree = +val tree_5_3: tree = N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -586,9 +583,9 @@ val tree_5_3 : tree = > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X +val generate: x: int -> X -> val exps : X list = +> val exps: X list = [Bop (1, Var 0, Var 0); Var 2; Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)); Var 4; Bop (5, Var 2, Bop (1, Var 0, Var 0)); Var 6; @@ -604,8 +601,8 @@ val generate : x:int -> X (35, Bop (17, Var 8, Bop (5, Var 2, Bop (1, Var 0, Var 0))), Bop (11, ..., ...)), ...)); ...] -> module Exprs = begin - val x1 : X = +> module Exprs = + val x1: X = Bop (213, Var 106, Bop @@ -623,18 +620,18 @@ val generate : x:int -> X Bop (7, Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)), Var 2)))) - val x2 : X = Var 21342314 - val x3 : X = Var 3214 - val x4 : X = Bop (1231357, Var 615678, Var 410452) - val x5 : X = + val x2: X = Var 21342314 + val x3: X = Var 3214 + val x4: X = Bop (1231357, Var 615678, Var 410452) + val x5: X = Bop (5234547, Bop (2617273, Var 1308636, Var 872424), Bop (1744849, Var 872424, Var 581616)) - val x6 : X = + val x6: X = Bop (923759825, Var 461879912, Bop (307919941, Var 153959970, Var 102639980)) - val x7 : X = Var 2435234 - val x8 : X = + val x7: X = Var 2435234 + val x8: X = Bop (12396777, Var 6198388, Bop @@ -677,7 +674,7 @@ val generate : x:int -> X (4251, Bop (2125, Var 1062, Var 708), Bop (1417, Var 708, Var 472)))), Bop (25507, ..., ...)))), ...))) - val x9 : X = + val x9: X = Bop (3333333, Var 1666666, Bop @@ -685,7 +682,7 @@ val generate : x:int -> X Bop (555555, Bop (277777, Var 138888, Var 92592), Bop (185185, Var 92592, Var 61728)), Var 370370)) - val x10 : X = + val x10: X = Bop (1312311237, Var 656155618, Bop @@ -753,7 +750,7 @@ val generate : x:int -> X (781, Var 390, Var 260)), Var 1562), ...), ...), ...)), ...))), ...)))), ...), ...)) - val x11 : X = + val x11: X = Bop (2147483647, Bop @@ -865,13 +862,12 @@ val generate : x:int -> X ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...) -end > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C = -val csA : C [] = + new: x: string -> C + override ToString: unit -> string +val c1: C = +val csA: C [] = [|; ; ; ; ; ; @@ -922,7 +918,7 @@ val csA : C [] = ; ; ; ; ; ; ...|] -val csB : C [] = +val csB: C [] = [|; ; ; ; ; ; @@ -973,7 +969,7 @@ val csB : C [] = ; ; ; ; ; ; ...|] -val csC : C [] = +val csC: C [] = [|; ; ; ; ; ; @@ -1035,62 +1031,60 @@ val csC : C [] = > exception AbcException of System.Exception list -> val exA1 : exn = Abc -val exA2 : exn = AbcInt 2 -val exA3 : exn = AbcString "3" -val exA4 : exn = AbcExn [Abc; AbcInt 2; AbcString "3"] -val exA5 : exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] +> val exA1: exn = Abc +val exA2: exn = AbcInt 2 +val exA3: exn = AbcString "3" +val exA4: exn = AbcExn [Abc; AbcInt 2; AbcString "3"] +val exA5: exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn = Ex0 -val exU : exn = ExUnit () -val exUs : exn = ExUnits ((), ()) -val exUSome : exn = ExUnitOption (Some ()) -val exUNone : exn = ExUnitOption None +val ex0: exn = Ex0 +val exU: exn = ExUnit () +val exUs: exn = ExUnits ((), ()) +val exUSome: exn = ExUnitOption (Some ()) +val exUNone: exn = ExUnitOption None type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 = AT4063 12 +> val valAT3063_12: int T4063 = AT4063 12 -> val valAT3063_True : bool T4063 = AT4063 true +> val valAT3063_True: bool T4063 = AT4063 true -> val valAT3063_text : string T4063 = AT4063 "text" +> val valAT3063_text: string T4063 = AT4063 "text" -> val valAT3063_null : System.Object T4063 = AT4063 null +> val valAT3063_null: System.Object T4063 = AT4063 null > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -1107,7 +1101,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -1115,9 +1109,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -1133,7 +1127,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -1166,7 +1160,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -1175,46 +1169,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -1227,17 +1221,17 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r = { f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 } -val r10s : r [] = +val r10: r = { f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 } +val r10s: r [] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -1284,7 +1278,7 @@ val r10s : r [] = f7 = 7 f8 = 8 f9 = 9 }; ...|] -val r10s' : string * r [] = +val r10s': string * r [] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -1333,36 +1327,36 @@ val r10s' : string * r [] = f8 = 8 f9 = ... }; ...|]) -> val x1564_A1 : int = 1 +> val x1564_A1: int = 1 --> Added '\' to library include path -val x1564_A2 : int = 2 +val x1564_A2: int = 2 --> Added '\' to library include path -val x1564_A3 : int = 3 +val x1564_A3: int = 3 > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int = 1 +> module internal InternalM = + val x: int = 1 type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -1370,7 +1364,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1393,15 +1387,14 @@ val x1564_A3 : int = 3 private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int = 1 + new: unit -> T14 +module internal PrivateM = + val private x: int = 1 type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -1409,7 +1402,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1432,1145 +1425,1124 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string = +> module Test4343a = + val mk: i: int -> string + val x100: string = "0123456789012345678901234567890123456789012345678901234567890"+[39 chars] - val x90 : string = + val x90: string = "0123456789012345678901234567890123456789012345678901234567890"+[29 chars] - val x80 : string = + val x80: string = "0123456789012345678901234567890123456789012345678901234567890"+[19 chars] - val x75 : string = + val x75: string = "0123456789012345678901234567890123456789012345678901234567890"+[14 chars] - val x74 : string = + val x74: string = "0123456789012345678901234567890123456789012345678901234567890"+[13 chars] - val x73 : string = + val x73: string = "0123456789012345678901234567890123456789012345678901234567890"+[12 chars] - val x72 : string = + val x72: string = "012345678901234567890123456789012345678901234567890123456789012345678901" - val x71 : string = + val x71: string = "01234567890123456789012345678901234567890123456789012345678901234567890" - val x70 : string = + val x70: string = "0123456789012345678901234567890123456789012345678901234567890123456789" -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list = [1; 2; 3] - val xArray : int [] = [|1; 2; 3|] - val xString : string = "abcdef" - val xOption : int option = Some 12 - val xArray2 : (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list = [1; 2; 3] + val xArray: int [] = [|1; 2; 3|] + val xString: string = "abcdef" + val xOption: int option = Some 12 + val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: int -> C + 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]) type D = - new : x:int -> D - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: 'a -> CGeneric<'a> + 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]) type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - val dC : D = D(True) - val boxed_dABC : obj list = [D(1); D(2); D(True)] - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + val dC: D = D(True) + val boxed_dABC: obj list = [D(1); D(2); D(True)] type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either = +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqFindFailure : Either = +val seqFindFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqPickFailure : Either = +val seqPickFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -module Regression5218 = begin - val t1 : int = 1 - val t2 : int * int = (1, 2) - val t3 : int * int * int = (1, 2, 3) - val t4 : int * int * int * int = (1, 2, 3, 4) - val t5 : int * int * int * int * int = (1, 2, 3, 4, 5) - val t6 : int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) - val t7 : int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) - val t8 : int * int * int * int * int * int * int * int = +module Regression5218 = + val t1: int = 1 + val t2: int * int = (1, 2) + val t3: int * int * int = (1, 2, 3) + val t4: int * int * int * int = (1, 2, 3, 4) + val t5: int * int * int * int * int = (1, 2, 3, 4, 5) + val t6: int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) + val t7: int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) + val t8: int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8) - val t9 : int * int * int * int * int * int * int * int * int = + val t9: int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9) - val t10 : int * int * int * int * int * int * int * int * int * int = + val t10: int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val t11 : int * int * int * int * int * int * int * int * int * int * int = + val t11: int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) - val t12 : + val t12: int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 = FSI_0107+Regression4469 -val it : unit = () + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 = FSI_0107+Regression4469 +val it: unit = () > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end -module Regression1019_long = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end +> module Regression1019_short = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf +module Regression1019_long = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref = { contents = 1 } -val f : (unit -> int) +> val x: int ref = { contents = 1 } +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string = +> val note_ExpectDupMethod: string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> > val note_ExpectDupProperty : string = +> > val note_ExpectDupProperty: string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -2580,8 +2552,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU = Case1 (5, "") -val namedFieldVar2 : MyDU = Case7 25 +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -2590,15 +2562,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +val namedEx1: exn = MyNamedException1 (5, "") +val namedEx2: exn = MyNamedException7 25 > type optionRecord = { x: int option } -val x : optionRecord = { x = None } +val x: optionRecord = { x = None } > type optionRecord = { x: obj } -val x : optionRecord = { x = null } +val x: optionRecord = { x = null } > > > diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index 08ac7c4ac0e..28a77bedcab 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -1,48 +1,48 @@ -> val it : unit = () +> val it: unit = () -> > val repeatId : string = "A" +> > val repeatId: string = "A" -> val repeatId : string = "B" +> val repeatId: string = "B" namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy - -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs : System.Windows.Forms.Form [] = + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy + +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form +val fs: System.Windows.Forms.Form [] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -143,7 +143,7 @@ val fs : System.Windows.Forms.Form [] = System.Windows.Forms.Form, Text: fs #97; System.Windows.Forms.Form, Text: fs #98; System.Windows.Forms.Form, Text: fs #99; ...|] -val xs : string list = +val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -153,7 +153,7 @@ val xs : string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa : string [] = +val xa: string [] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -163,45 +163,45 @@ val xa : string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2 : string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] -val sxs0 : Set = set [] +val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val sxs0: Set = set [] -> val sxs1 : Set = set ["0"] +> val sxs1: Set = set ["0"] -> val sxs2 : Set = set ["0"; "1"] +> val sxs2: Set = set ["0"; "1"] -> val sxs3 : Set = set ["0"; "1"; "2"] +> val sxs3: Set = set ["0"; "1"; "2"] -> val sxs4 : Set = set ["0"; "1"; "2"; "3"] +> val sxs4: Set = set ["0"; "1"; "2"; "3"] -> val sxs200 : Set = +> val sxs200: Set = set ["0"; "1"; "10"; "100"; "101"; "102"; "103"; "104"; "105"; ...] -> val msxs0 : Map = map [] +> val msxs0: Map = map [] -> val msxs1 : Map = map [(0, "0")] +> val msxs1: Map = map [(0, "0")] -> val msxs2 : Map = map [(0, "0"); (1, "1")] +> val msxs2: Map = map [(0, "0"); (1, "1")] -> val msxs3 : Map = map [(0, "0"); (1, "1"); (2, "2")] +> val msxs3: Map = map [(0, "0"); (1, "1"); (2, "2")] -> val msxs4 : Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] +> val msxs4: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] -> val msxs200 : Map = +> val msxs200: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3"); (4, "4"); (5, "5"); (6, "6"); (7, "7"); (8, "8"); ...] -> module M = begin - val a : string = "sub-binding" - val b : +> module M = + val a: string = "sub-binding" + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), @@ -215,30 +215,27 @@ val sxs0 : Set = set [] "68"; "69"; "70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; ...], ..., ...)) -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref = { contents = "value" } -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option = None -val opt4 : 'a option option option option -val opt4b : int option option option option = Some (Some (Some None)) -val opt5 : int list option option option option option list = + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref = { contents = "value" } +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option = None +val opt4: 'a option option option option +val opt4b: int option option option option = Some (Some (Some None)) +val opt5: int list option option option option option list = [Some (Some (Some (Some None))); Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some @@ -249,8 +246,8 @@ val opt5 : int list option option option option option list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] -val mkStr : n:int -> string -val strs : string [] = +val mkStr: n: int -> string +val strs: string [] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -328,7 +325,7 @@ val strs : string [] = "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]; ...|] -val str7s : string [] = +val str7s: string [] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -426,7 +423,7 @@ val str7s : string [] = "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]; ...|] -val grids : string [,] = +val grids: string [,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -461,16 +458,16 @@ val grids : string [,] = > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree = +val tree_2_4: tree = N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]] > [Building 2 6...done] -val tree_2_6 : tree = +val tree_2_6: tree = N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -480,7 +477,7 @@ val tree_2_6 : tree = N [N [N [N ...; ...]; ...]; ...]; ...]; ...] > [Building 2 8...done] -val tree_2_8 : tree = +val tree_2_8: tree = N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -490,7 +487,7 @@ val tree_2_8 : tree = N [N ...; ...]; ...]; ...]; ...]; ...] > [Building 2 10...done] -val tree_2_10 : tree = +val tree_2_10: tree = N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -501,7 +498,7 @@ val tree_2_10 : tree = ...]; ...]; ...]; ...]; ...] > [Building 2 12...done] -val tree_2_12 : tree = +val tree_2_12: tree = N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -512,7 +509,7 @@ val tree_2_12 : tree = ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 14...done] -val tree_2_14 : tree = +val tree_2_14: tree = N [N [N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; @@ -529,7 +526,7 @@ val tree_2_14 : tree = ...] > [Building 3 8...done] -val tree_3_8 : tree = +val tree_3_8: tree = N [N [N [N [N [N [N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]]; @@ -540,7 +537,7 @@ val tree_3_8 : tree = ...]; ...]; ...]; ...]; ...] > [Building 4 8...done] -val tree_4_8 : tree = +val tree_4_8: tree = N [N [N [N [N [N [N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]]; N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; @@ -553,7 +550,7 @@ val tree_4_8 : tree = ...]; ...]; ...] > [Building 5 8...done] -val tree_5_8 : tree = +val tree_5_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -563,7 +560,7 @@ val tree_5_8 : tree = ...]; ...]; ...]; ...] > [Building 6 8...done] -val tree_6_8 : tree = +val tree_6_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]]; @@ -574,7 +571,7 @@ val tree_6_8 : tree = ...]; ...] > [Building 5 3...done] -val tree_5_3 : tree = +val tree_5_3: tree = N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -586,9 +583,9 @@ val tree_5_3 : tree = > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X +val generate: x: int -> X -> val exps : X list = +> val exps: X list = [Bop (1, Var 0, Var 0); Var 2; Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)); Var 4; Bop (5, Var 2, Bop (1, Var 0, Var 0)); Var 6; @@ -604,8 +601,8 @@ val generate : x:int -> X (35, Bop (17, Var 8, Bop (5, Var 2, Bop (1, Var 0, Var 0))), Bop (11, ..., ...)), ...)); ...] -> module Exprs = begin - val x1 : X = +> module Exprs = + val x1: X = Bop (213, Var 106, Bop @@ -623,18 +620,18 @@ val generate : x:int -> X Bop (7, Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)), Var 2)))) - val x2 : X = Var 21342314 - val x3 : X = Var 3214 - val x4 : X = Bop (1231357, Var 615678, Var 410452) - val x5 : X = + val x2: X = Var 21342314 + val x3: X = Var 3214 + val x4: X = Bop (1231357, Var 615678, Var 410452) + val x5: X = Bop (5234547, Bop (2617273, Var 1308636, Var 872424), Bop (1744849, Var 872424, Var 581616)) - val x6 : X = + val x6: X = Bop (923759825, Var 461879912, Bop (307919941, Var 153959970, Var 102639980)) - val x7 : X = Var 2435234 - val x8 : X = + val x7: X = Var 2435234 + val x8: X = Bop (12396777, Var 6198388, Bop @@ -677,7 +674,7 @@ val generate : x:int -> X (4251, Bop (2125, Var 1062, Var 708), Bop (1417, Var 708, Var 472)))), Bop (25507, ..., ...)))), ...))) - val x9 : X = + val x9: X = Bop (3333333, Var 1666666, Bop @@ -685,7 +682,7 @@ val generate : x:int -> X Bop (555555, Bop (277777, Var 138888, Var 92592), Bop (185185, Var 92592, Var 61728)), Var 370370)) - val x10 : X = + val x10: X = Bop (1312311237, Var 656155618, Bop @@ -753,7 +750,7 @@ val generate : x:int -> X (781, Var 390, Var 260)), Var 1562), ...), ...), ...)), ...))), ...)))), ...), ...)) - val x11 : X = + val x11: X = Bop (2147483647, Bop @@ -865,13 +862,12 @@ val generate : x:int -> X ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...), ...) -end > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C = -val csA : C [] = + new: x: string -> C + override ToString: unit -> string +val c1: C = +val csA: C [] = [|; ; ; ; ; ; @@ -922,7 +918,7 @@ val csA : C [] = ; ; ; ; ; ; ...|] -val csB : C [] = +val csB: C [] = [|; ; ; ; ; ; @@ -973,7 +969,7 @@ val csB : C [] = ; ; ; ; ; ; ...|] -val csC : C [] = +val csC: C [] = [|; ; ; ; ; ; @@ -1035,62 +1031,60 @@ val csC : C [] = > exception AbcException of System.Exception list -> val exA1 : exn = Abc -val exA2 : exn = AbcInt 2 -val exA3 : exn = AbcString "3" -val exA4 : exn = AbcExn [Abc; AbcInt 2; AbcString "3"] -val exA5 : exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] +> val exA1: exn = Abc +val exA2: exn = AbcInt 2 +val exA3: exn = AbcString "3" +val exA4: exn = AbcExn [Abc; AbcInt 2; AbcString "3"] +val exA5: exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn = Ex0 -val exU : exn = ExUnit () -val exUs : exn = ExUnits ((), ()) -val exUSome : exn = ExUnitOption (Some ()) -val exUNone : exn = ExUnitOption None +val ex0: exn = Ex0 +val exU: exn = ExUnit () +val exUs: exn = ExUnits ((), ()) +val exUSome: exn = ExUnitOption (Some ()) +val exUNone: exn = ExUnitOption None type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 = AT4063 12 +> val valAT3063_12: int T4063 = AT4063 12 -> val valAT3063_True : bool T4063 = AT4063 true +> val valAT3063_True: bool T4063 = AT4063 true -> val valAT3063_text : string T4063 = AT4063 "text" +> val valAT3063_text: string T4063 = AT4063 "text" -> val valAT3063_null : System.Object T4063 = AT4063 null +> val valAT3063_null: System.Object T4063 = AT4063 null > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -1109,7 +1103,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -1117,9 +1111,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -1135,7 +1129,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -1168,7 +1162,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -1177,46 +1171,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -1229,17 +1223,17 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r = { f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 } -val r10s : r [] = +val r10: r = { f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 } +val r10s: r [] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -1286,7 +1280,7 @@ val r10s : r [] = f7 = 7 f8 = 8 f9 = 9 }; ...|] -val r10s' : string * r [] = +val r10s': string * r [] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -1335,36 +1329,36 @@ val r10s' : string * r [] = f8 = 8 f9 = ... }; ...|]) -> val x1564_A1 : int = 1 +> val x1564_A1: int = 1 --> Added '\' to library include path -val x1564_A2 : int = 2 +val x1564_A2: int = 2 --> Added '\' to library include path -val x1564_A3 : int = 3 +val x1564_A3: int = 3 > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int = 1 +> module internal InternalM = + val x: int = 1 type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -1372,7 +1366,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1395,15 +1389,14 @@ val x1564_A3 : int = 3 private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int = 1 + new: unit -> T14 +module internal PrivateM = + val private x: int = 1 type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -1411,7 +1404,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1434,1145 +1427,1124 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string = +> module Test4343a = + val mk: i: int -> string + val x100: string = "0123456789012345678901234567890123456789012345678901234567890"+[39 chars] - val x90 : string = + val x90: string = "0123456789012345678901234567890123456789012345678901234567890"+[29 chars] - val x80 : string = + val x80: string = "0123456789012345678901234567890123456789012345678901234567890"+[19 chars] - val x75 : string = + val x75: string = "0123456789012345678901234567890123456789012345678901234567890"+[14 chars] - val x74 : string = + val x74: string = "0123456789012345678901234567890123456789012345678901234567890"+[13 chars] - val x73 : string = + val x73: string = "0123456789012345678901234567890123456789012345678901234567890"+[12 chars] - val x72 : string = + val x72: string = "012345678901234567890123456789012345678901234567890123456789012345678901" - val x71 : string = + val x71: string = "01234567890123456789012345678901234567890123456789012345678901234567890" - val x70 : string = + val x70: string = "0123456789012345678901234567890123456789012345678901234567890123456789" -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list = [1; 2; 3] - val xArray : int [] = [|1; 2; 3|] - val xString : string = "abcdef" - val xOption : int option = Some 12 - val xArray2 : (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list = [1; 2; 3] + val xArray: int [] = [|1; 2; 3|] + val xString: string = "abcdef" + val xOption: int option = Some 12 + val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: int -> C + 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]) type D = - new : x:int -> D - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: 'a -> CGeneric<'a> + 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]) type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - val dC : D = D(True) - val boxed_dABC : obj list = [D(1); D(2); D(True)] - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + val dC: D = D(True) + val boxed_dABC: obj list = [D(1); D(2); D(True)] type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either = +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqFindFailure : Either = +val seqFindFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqPickFailure : Either = +val seqPickFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -module Regression5218 = begin - val t1 : int = 1 - val t2 : int * int = (1, 2) - val t3 : int * int * int = (1, 2, 3) - val t4 : int * int * int * int = (1, 2, 3, 4) - val t5 : int * int * int * int * int = (1, 2, 3, 4, 5) - val t6 : int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) - val t7 : int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) - val t8 : int * int * int * int * int * int * int * int = +module Regression5218 = + val t1: int = 1 + val t2: int * int = (1, 2) + val t3: int * int * int = (1, 2, 3) + val t4: int * int * int * int = (1, 2, 3, 4) + val t5: int * int * int * int * int = (1, 2, 3, 4, 5) + val t6: int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) + val t7: int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) + val t8: int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8) - val t9 : int * int * int * int * int * int * int * int * int = + val t9: int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9) - val t10 : int * int * int * int * int * int * int * int * int * int = + val t10: int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val t11 : int * int * int * int * int * int * int * int * int * int * int = + val t11: int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) - val t12 : + val t12: int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 = FSI_0107+Regression4469 -val it : unit = () + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 = FSI_0107+Regression4469 +val it: unit = () > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end -module Regression1019_long = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end +> module Regression1019_short = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf +module Regression1019_long = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref = { contents = 1 } -val f : (unit -> int) +> val x: int ref = { contents = 1 } +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string = +> val note_ExpectDupMethod: string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> > val note_ExpectDupProperty : string = +> > val note_ExpectDupProperty: string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -2582,8 +2554,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU = Case1 (5, "") -val namedFieldVar2 : MyDU = Case7 25 +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -2592,15 +2564,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +val namedEx1: exn = MyNamedException1 (5, "") +val namedEx2: exn = MyNamedException7 25 > type optionRecord = { x: int option } -val x : optionRecord = { x = None } +val x: optionRecord = { x = None } > type optionRecord = { x: obj } -val x : optionRecord = { x = null } +val x: optionRecord = { x = null } > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl index 4ae32a6ed01..50f1d16cc58 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' +stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index 1a50269bac9..56f33c4bdbb 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -1,48 +1,48 @@ -> val it : unit = () +> val it: unit = () -> > val repeatId : string = "A" +> > val repeatId: string = "A" -> val repeatId : string = "B" +> val repeatId: string = "B" namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy - -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs : System.Windows.Forms.Form [] = + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy + +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form +val fs: System.Windows.Forms.Form [] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -63,87 +63,84 @@ val fs : System.Windows.Forms.Form [] = System.Windows.Forms.Form, Text: fs #17; System.Windows.Forms.Form, Text: fs #18; System.Windows.Forms.Form, Text: fs #19; ...|] -val xs : string list = +val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...] -val xa : string [] = +val xa: string [] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...|] -val xa2 : string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; ...] - ...] -val sxs0 : Set = set [] +val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; ...] + ...] +val sxs0: Set = set [] -> val sxs1 : Set = set ["0"] +> val sxs1: Set = set ["0"] -> val sxs2 : Set = set ["0"; "1"] +> val sxs2: Set = set ["0"; "1"] -> val sxs3 : Set = set ["0"; "1"; "2"] +> val sxs3: Set = set ["0"; "1"; "2"] -> val sxs4 : Set = set ["0"; "1"; "2"; "3"] +> val sxs4: Set = set ["0"; "1"; "2"; "3"] -> val sxs200 : Set = +> val sxs200: Set = set ["0"; "1"; "10"; "100"; "101"; "102"; "103"; "104"; "105"; ...] -> val msxs0 : Map = map [] +> val msxs0: Map = map [] -> val msxs1 : Map = map [(0, "0")] +> val msxs1: Map = map [(0, "0")] -> val msxs2 : Map = map [(0, "0"); (1, "1")] +> val msxs2: Map = map [(0, "0"); (1, "1")] -> val msxs3 : Map = map [(0, "0"); (1, "1"); (2, "2")] +> val msxs3: Map = map [(0, "0"); (1, "1"); (2, "2")] -> val msxs4 : Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] +> val msxs4: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] -> val msxs200 : Map = +> val msxs200: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3"); (4, "4"); (5, "5"); (6, "6"); (7, "7"); (8, "8"); ...] -> module M = begin - val a : string = "sub-binding" - val b : +> module M = + val a: string = "sub-binding" + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; ...], ..., ...)) -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref = { contents = "value" } -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option = None -val opt4 : 'a option option option option -val opt4b : int option option option option = Some (Some (Some None)) -val opt5 : int list option option option option option list = + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref = { contents = "value" } +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option = None +val opt4: 'a option option option option +val opt4b: int option option option option = Some (Some (Some None)) +val opt5: int list option option option option option list = [Some (Some (Some (Some None))); Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some (Some (Some (Some ...))); ...] -val mkStr : n:int -> string -val strs : string [] = +val mkStr: n: int -> string +val strs: string [] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; "-----------------"; "------------------"; "-------------------"; ...|] -val str7s : string [] = +val str7s: string [] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -161,7 +158,7 @@ val str7s : string [] = "-------------------------------------------------------------"+[65 chars]; "-------------------------------------------------------------"+[72 chars]; ...|] -val grids : string [,] = +val grids: string [,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ...] ...] @@ -169,95 +166,95 @@ val grids : string [,] = > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree = +val tree_2_4: tree = N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; ...]; ...]; ...]; ...] > [Building 2 6...done] -val tree_2_6 : tree = +val tree_2_6: tree = N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N ...; ...]; ...]; ...]; ...] > [Building 2 8...done] -val tree_2_8 : tree = +val tree_2_8: tree = N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 10...done] -val tree_2_10 : tree = +val tree_2_10: tree = N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 12...done] -val tree_2_12 : tree = +val tree_2_12: tree = N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 14...done] -val tree_2_14 : tree = +val tree_2_14: tree = N [N [N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 3 8...done] -val tree_3_8 : tree = +val tree_3_8: tree = N [N [N [N [N [N [N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N ...; ...]; ...]; ...]; ...]; ...]; ...] > [Building 4 8...done] -val tree_4_8 : tree = +val tree_4_8: tree = N [N [N [N [N [N [N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 8...done] -val tree_5_8 : tree = +val tree_5_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 6 8...done] -val tree_6_8 : tree = +val tree_6_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L; L]; N [L; L; L; L; L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 3...done] -val tree_5_3 : tree = +val tree_5_3: tree = N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L; ...]; ...]; ...] > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X +val generate: x: int -> X -> val exps : X list = +> val exps: X list = [Bop (1, Var 0, Var 0); Var 2; Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, ...)); ...] -> module Exprs = begin - val x1 : X = +> module Exprs = + val x1: X = Bop (213, Var 106, Bop (71, Bop (35, Bop (17, Var 8, Bop (5, Var 2, Bop (1, Var 0, ...))), ...), ...)) - val x2 : X = Var 21342314 - val x3 : X = Var 3214 - val x4 : X = Bop (1231357, Var 615678, Var 410452) - val x5 : X = + val x2: X = Var 21342314 + val x3: X = Var 3214 + val x4: X = Bop (1231357, Var 615678, Var 410452) + val x5: X = Bop (5234547, Bop (2617273, Var 1308636, Var 872424), Bop (1744849, Var 872424, Var 581616)) - val x6 : X = + val x6: X = Bop (923759825, Var 461879912, Bop (307919941, Var 153959970, Var 102639980)) - val x7 : X = Var 2435234 - val x8 : X = + val x7: X = Var 2435234 + val x8: X = Bop (12396777, Var 6198388, Bop @@ -267,7 +264,7 @@ val generate : x:int -> X Bop (688709, Var 344354, Bop (229569, Var 114784, Bop (76523, ..., ...)))), ...)) - val x9 : X = + val x9: X = Bop (3333333, Var 1666666, Bop @@ -275,7 +272,7 @@ val generate : x:int -> X Bop (555555, Bop (277777, Var 138888, Var 92592), Bop (185185, Var 92592, Var 61728)), ...)) - val x10 : X = + val x10: X = Bop (1312311237, Var 656155618, Bop @@ -286,7 +283,7 @@ val generate : x:int -> X (109359269, Var 54679634, Bop (36453089, Var 18226544, Bop (12151029, Var 6075514, ...))), ...), ...)) - val x11 : X = + val x11: X = Bop (2147483647, Bop @@ -305,13 +302,12 @@ val generate : x:int -> X (16777215, Bop (8388607, Bop (4194303, ..., ...), ...), ...), ...), ...), ...), ...), ...), ...), ...) -end > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C = -val csA : C [] = + new: x: string -> C + override ToString: unit -> string +val c1: C = +val csA: C [] = [|; ; ; ; ; ; @@ -322,7 +318,7 @@ val csA : C [] = ; ; ; ; ; ; ...|] -val csB : C [] = +val csB: C [] = [|; ; ; ; ; ; @@ -333,7 +329,7 @@ val csB : C [] = ; ; ; ; ; ; ...|] -val csC : C [] = +val csC: C [] = [|; ; ; ; ; ; @@ -355,62 +351,60 @@ val csC : C [] = > exception AbcException of System.Exception list -> val exA1 : exn = Abc -val exA2 : exn = AbcInt 2 -val exA3 : exn = AbcString "3" -val exA4 : exn = AbcExn [Abc; AbcInt 2; AbcString "3"] -val exA5 : exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] +> val exA1: exn = Abc +val exA2: exn = AbcInt 2 +val exA3: exn = AbcString "3" +val exA4: exn = AbcExn [Abc; AbcInt 2; AbcString "3"] +val exA5: exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn = Ex0 -val exU : exn = ExUnit () -val exUs : exn = ExUnits ((), ()) -val exUSome : exn = ExUnitOption (Some ()) -val exUNone : exn = ExUnitOption None +val ex0: exn = Ex0 +val exU: exn = ExUnit () +val exUs: exn = ExUnits ((), ()) +val exUSome: exn = ExUnitOption (Some ()) +val exUNone: exn = ExUnitOption None type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 = AT4063 12 +> val valAT3063_12: int T4063 = AT4063 12 -> val valAT3063_True : bool T4063 = AT4063 true +> val valAT3063_True: bool T4063 = AT4063 true -> val valAT3063_text : string T4063 = AT4063 "text" +> val valAT3063_text: string T4063 = AT4063 "text" -> val valAT3063_null : System.Object T4063 = AT4063 null +> val valAT3063_null: System.Object T4063 = AT4063 null > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -427,7 +421,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -435,9 +429,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -453,7 +447,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -486,7 +480,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -495,46 +489,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -547,67 +541,67 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r = { f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 } -val r10s : r [] = [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 }; ...|] -val r10s' : string * r [] = ("one extra node", [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = ... }; ...|]) - -> val x1564_A1 : int = 1 +val r10: r = { f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 } +val r10s: r [] = [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 }; ...|] +val r10s': string * r [] = ("one extra node", [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = ... }; ...|]) + +> val x1564_A1: int = 1 --> Added '\' to library include path -val x1564_A2 : int = 2 +val x1564_A2: int = 2 --> Added '\' to library include path -val x1564_A3 : int = 3 +val x1564_A3: int = 3 > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int = 1 +> module internal InternalM = + val x: int = 1 type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -615,7 +609,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -638,15 +632,14 @@ val x1564_A3 : int = 3 private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int = 1 + new: unit -> T14 +module internal PrivateM = + val private x: int = 1 type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -654,7 +647,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -677,1145 +670,1124 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string = +> module Test4343a = + val mk: i: int -> string + val x100: string = "0123456789012345678901234567890123456789012345678901234567890"+[39 chars] - val x90 : string = + val x90: string = "0123456789012345678901234567890123456789012345678901234567890"+[29 chars] - val x80 : string = + val x80: string = "0123456789012345678901234567890123456789012345678901234567890"+[19 chars] - val x75 : string = + val x75: string = "0123456789012345678901234567890123456789012345678901234567890"+[14 chars] - val x74 : string = + val x74: string = "0123456789012345678901234567890123456789012345678901234567890"+[13 chars] - val x73 : string = + val x73: string = "0123456789012345678901234567890123456789012345678901234567890"+[12 chars] - val x72 : string = + val x72: string = "012345678901234567890123456789012345678901234567890123456789012345678901" - val x71 : string = + val x71: string = "01234567890123456789012345678901234567890123456789012345678901234567890" - val x70 : string = + val x70: string = "0123456789012345678901234567890123456789012345678901234567890123456789" -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list = [1; 2; 3] - val xArray : int [] = [|1; 2; 3|] - val xString : string = "abcdef" - val xOption : int option = Some 12 - val xArray2 : (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list = [1; 2; 3] + val xArray: int [] = [|1; 2; 3|] + val xString: string = "abcdef" + val xOption: int option = Some 12 + val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: int -> C + 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]) type D = - new : x:int -> D - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: 'a -> CGeneric<'a> + 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]) type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - val dC : D = D(True) - val boxed_dABC : obj list = [D(1); D(2); D(True)] - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + val dC: D = D(True) + val boxed_dABC: obj list = [D(1); D(2); D(True)] type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either = +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqFindFailure : Either = +val seqFindFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqPickFailure : Either = +val seqPickFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -module Regression5218 = begin - val t1 : int = 1 - val t2 : int * int = (1, 2) - val t3 : int * int * int = (1, 2, 3) - val t4 : int * int * int * int = (1, 2, 3, 4) - val t5 : int * int * int * int * int = (1, 2, 3, 4, 5) - val t6 : int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) - val t7 : int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) - val t8 : int * int * int * int * int * int * int * int = +module Regression5218 = + val t1: int = 1 + val t2: int * int = (1, 2) + val t3: int * int * int = (1, 2, 3) + val t4: int * int * int * int = (1, 2, 3, 4) + val t5: int * int * int * int * int = (1, 2, 3, 4, 5) + val t6: int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) + val t7: int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) + val t8: int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8) - val t9 : int * int * int * int * int * int * int * int * int = + val t9: int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9) - val t10 : int * int * int * int * int * int * int * int * int * int = + val t10: int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val t11 : int * int * int * int * int * int * int * int * int * int * int = + val t11: int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) - val t12 : + val t12: int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 = FSI_0107+Regression4469 -val it : unit = () + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 = FSI_0107+Regression4469 +val it: unit = () > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end -module Regression1019_long = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end +> module Regression1019_short = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf +module Regression1019_long = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref = { contents = 1 } -val f : (unit -> int) +> val x: int ref = { contents = 1 } +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string = +> val note_ExpectDupMethod: string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> > val note_ExpectDupProperty : string = +> > val note_ExpectDupProperty: string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -1825,8 +1797,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU = Case1 (5, "") -val namedFieldVar2 : MyDU = Case7 25 +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -1835,15 +1807,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +val namedEx1: exn = MyNamedException1 (5, "") +val namedEx2: exn = MyNamedException7 25 > type optionRecord = { x: int option } -val x : optionRecord = { x = None } +val x: optionRecord = { x = None } > type optionRecord = { x: obj } -val x : optionRecord = { x = null } +val x: optionRecord = { x = null } > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index 410c07644ca..f49046b54bf 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -1,48 +1,48 @@ -> val it : unit = () +> val it: unit = () -> > val repeatId : string = "A" +> > val repeatId: string = "A" -> val repeatId : string = "B" +> val repeatId: string = "B" namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy - -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs : System.Windows.Forms.Form [] = + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy + +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form +val fs: System.Windows.Forms.Form [] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -63,87 +63,84 @@ val fs : System.Windows.Forms.Form [] = System.Windows.Forms.Form, Text: fs #17; System.Windows.Forms.Form, Text: fs #18; System.Windows.Forms.Form, Text: fs #19; ...|] -val xs : string list = +val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...] -val xa : string [] = +val xa: string [] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...|] -val xa2 : string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; ...] - ...] -val sxs0 : Set = set [] +val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; ...] + ...] +val sxs0: Set = set [] -> val sxs1 : Set = set ["0"] +> val sxs1: Set = set ["0"] -> val sxs2 : Set = set ["0"; "1"] +> val sxs2: Set = set ["0"; "1"] -> val sxs3 : Set = set ["0"; "1"; "2"] +> val sxs3: Set = set ["0"; "1"; "2"] -> val sxs4 : Set = set ["0"; "1"; "2"; "3"] +> val sxs4: Set = set ["0"; "1"; "2"; "3"] -> val sxs200 : Set = +> val sxs200: Set = set ["0"; "1"; "10"; "100"; "101"; "102"; "103"; "104"; "105"; ...] -> val msxs0 : Map = map [] +> val msxs0: Map = map [] -> val msxs1 : Map = map [(0, "0")] +> val msxs1: Map = map [(0, "0")] -> val msxs2 : Map = map [(0, "0"); (1, "1")] +> val msxs2: Map = map [(0, "0"); (1, "1")] -> val msxs3 : Map = map [(0, "0"); (1, "1"); (2, "2")] +> val msxs3: Map = map [(0, "0"); (1, "1"); (2, "2")] -> val msxs4 : Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] +> val msxs4: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] -> val msxs200 : Map = +> val msxs200: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3"); (4, "4"); (5, "5"); (6, "6"); (7, "7"); (8, "8"); ...] -> module M = begin - val a : string = "sub-binding" - val b : +> module M = + val a: string = "sub-binding" + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; ...], ..., ...)) -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref = { contents = "value" } -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option = None -val opt4 : 'a option option option option -val opt4b : int option option option option = Some (Some (Some None)) -val opt5 : int list option option option option option list = + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref = { contents = "value" } +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option = None +val opt4: 'a option option option option +val opt4b: int option option option option = Some (Some (Some None)) +val opt5: int list option option option option option list = [Some (Some (Some (Some None))); Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some (Some (Some (Some ...))); ...] -val mkStr : n:int -> string -val strs : string [] = +val mkStr: n: int -> string +val strs: string [] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; "-----------------"; "------------------"; "-------------------"; ...|] -val str7s : string [] = +val str7s: string [] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -161,7 +158,7 @@ val str7s : string [] = "-------------------------------------------------------------"+[65 chars]; "-------------------------------------------------------------"+[72 chars]; ...|] -val grids : string [,] = +val grids: string [,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ...] ...] @@ -169,95 +166,95 @@ val grids : string [,] = > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree = +val tree_2_4: tree = N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; ...]; ...]; ...]; ...] > [Building 2 6...done] -val tree_2_6 : tree = +val tree_2_6: tree = N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N ...; ...]; ...]; ...]; ...] > [Building 2 8...done] -val tree_2_8 : tree = +val tree_2_8: tree = N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 10...done] -val tree_2_10 : tree = +val tree_2_10: tree = N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 12...done] -val tree_2_12 : tree = +val tree_2_12: tree = N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 14...done] -val tree_2_14 : tree = +val tree_2_14: tree = N [N [N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 3 8...done] -val tree_3_8 : tree = +val tree_3_8: tree = N [N [N [N [N [N [N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N ...; ...]; ...]; ...]; ...]; ...]; ...] > [Building 4 8...done] -val tree_4_8 : tree = +val tree_4_8: tree = N [N [N [N [N [N [N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 8...done] -val tree_5_8 : tree = +val tree_5_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 6 8...done] -val tree_6_8 : tree = +val tree_6_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L; L]; N [L; L; L; L; L; ...]; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 3...done] -val tree_5_3 : tree = +val tree_5_3: tree = N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L; ...]; ...]; ...] > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X +val generate: x: int -> X -> val exps : X list = +> val exps: X list = [Bop (1, Var 0, Var 0); Var 2; Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, ...)); ...] -> module Exprs = begin - val x1 : X = +> module Exprs = + val x1: X = Bop (213, Var 106, Bop (71, Bop (35, Bop (17, Var 8, Bop (5, Var 2, Bop (1, Var 0, ...))), ...), ...)) - val x2 : X = Var 21342314 - val x3 : X = Var 3214 - val x4 : X = Bop (1231357, Var 615678, Var 410452) - val x5 : X = + val x2: X = Var 21342314 + val x3: X = Var 3214 + val x4: X = Bop (1231357, Var 615678, Var 410452) + val x5: X = Bop (5234547, Bop (2617273, Var 1308636, Var 872424), Bop (1744849, Var 872424, Var 581616)) - val x6 : X = + val x6: X = Bop (923759825, Var 461879912, Bop (307919941, Var 153959970, Var 102639980)) - val x7 : X = Var 2435234 - val x8 : X = + val x7: X = Var 2435234 + val x8: X = Bop (12396777, Var 6198388, Bop @@ -267,7 +264,7 @@ val generate : x:int -> X Bop (688709, Var 344354, Bop (229569, Var 114784, Bop (76523, ..., ...)))), ...)) - val x9 : X = + val x9: X = Bop (3333333, Var 1666666, Bop @@ -275,7 +272,7 @@ val generate : x:int -> X Bop (555555, Bop (277777, Var 138888, Var 92592), Bop (185185, Var 92592, Var 61728)), ...)) - val x10 : X = + val x10: X = Bop (1312311237, Var 656155618, Bop @@ -286,7 +283,7 @@ val generate : x:int -> X (109359269, Var 54679634, Bop (36453089, Var 18226544, Bop (12151029, Var 6075514, ...))), ...), ...)) - val x11 : X = + val x11: X = Bop (2147483647, Bop @@ -305,13 +302,12 @@ val generate : x:int -> X (16777215, Bop (8388607, Bop (4194303, ..., ...), ...), ...), ...), ...), ...), ...), ...), ...), ...) -end > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C = -val csA : C [] = + new: x: string -> C + override ToString: unit -> string +val c1: C = +val csA: C [] = [|; ; ; ; ; ; @@ -322,7 +318,7 @@ val csA : C [] = ; ; ; ; ; ; ...|] -val csB : C [] = +val csB: C [] = [|; ; ; ; ; ; @@ -333,7 +329,7 @@ val csB : C [] = ; ; ; ; ; ; ...|] -val csC : C [] = +val csC: C [] = [|; ; ; ; ; ; @@ -355,62 +351,60 @@ val csC : C [] = > exception AbcException of System.Exception list -> val exA1 : exn = Abc -val exA2 : exn = AbcInt 2 -val exA3 : exn = AbcString "3" -val exA4 : exn = AbcExn [Abc; AbcInt 2; AbcString "3"] -val exA5 : exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] +> val exA1: exn = Abc +val exA2: exn = AbcInt 2 +val exA3: exn = AbcString "3" +val exA4: exn = AbcExn [Abc; AbcInt 2; AbcString "3"] +val exA5: exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn = Ex0 -val exU : exn = ExUnit () -val exUs : exn = ExUnits ((), ()) -val exUSome : exn = ExUnitOption (Some ()) -val exUNone : exn = ExUnitOption None +val ex0: exn = Ex0 +val exU: exn = ExUnit () +val exUs: exn = ExUnits ((), ()) +val exUSome: exn = ExUnitOption (Some ()) +val exUNone: exn = ExUnitOption None type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 = AT4063 12 +> val valAT3063_12: int T4063 = AT4063 12 -> val valAT3063_True : bool T4063 = AT4063 true +> val valAT3063_True: bool T4063 = AT4063 true -> val valAT3063_text : string T4063 = AT4063 "text" +> val valAT3063_text: string T4063 = AT4063 "text" -> val valAT3063_null : System.Object T4063 = AT4063 null +> val valAT3063_null: System.Object T4063 = AT4063 null > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -429,7 +423,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -437,9 +431,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -455,7 +449,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -488,7 +482,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -497,46 +491,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -549,67 +543,67 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r = { f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 } -val r10s : r [] = [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 }; ...|] -val r10s' : string * r [] = ("one extra node", [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = ... }; ...|]) - -> val x1564_A1 : int = 1 +val r10: r = { f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 } +val r10s: r [] = [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 }; ...|] +val r10s': string * r [] = ("one extra node", [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = ... }; ...|]) + +> val x1564_A1: int = 1 --> Added '\' to library include path -val x1564_A2 : int = 2 +val x1564_A2: int = 2 --> Added '\' to library include path -val x1564_A3 : int = 3 +val x1564_A3: int = 3 > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int = 1 +> module internal InternalM = + val x: int = 1 type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -617,7 +611,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -640,15 +634,14 @@ val x1564_A3 : int = 3 private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int = 1 + new: unit -> T14 +module internal PrivateM = + val private x: int = 1 type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -656,7 +649,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -679,1145 +672,1124 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string = +> module Test4343a = + val mk: i: int -> string + val x100: string = "0123456789012345678901234567890123456789012345678901234567890"+[39 chars] - val x90 : string = + val x90: string = "0123456789012345678901234567890123456789012345678901234567890"+[29 chars] - val x80 : string = + val x80: string = "0123456789012345678901234567890123456789012345678901234567890"+[19 chars] - val x75 : string = + val x75: string = "0123456789012345678901234567890123456789012345678901234567890"+[14 chars] - val x74 : string = + val x74: string = "0123456789012345678901234567890123456789012345678901234567890"+[13 chars] - val x73 : string = + val x73: string = "0123456789012345678901234567890123456789012345678901234567890"+[12 chars] - val x72 : string = + val x72: string = "012345678901234567890123456789012345678901234567890123456789012345678901" - val x71 : string = + val x71: string = "01234567890123456789012345678901234567890123456789012345678901234567890" - val x70 : string = + val x70: string = "0123456789012345678901234567890123456789012345678901234567890123456789" -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list = [1; 2; 3] - val xArray : int [] = [|1; 2; 3|] - val xString : string = "abcdef" - val xOption : int option = Some 12 - val xArray2 : (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list = [1; 2; 3] + val xArray: int [] = [|1; 2; 3|] + val xString: string = "abcdef" + val xOption: int option = Some 12 + val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: int -> C + 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]) type D = - new : x:int -> D - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: 'a -> CGeneric<'a> + 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]) type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - val dC : D = D(True) - val boxed_dABC : obj list = [D(1); D(2); D(True)] - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + val dC: D = D(True) + val boxed_dABC: obj list = [D(1); D(2); D(True)] type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either = +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqFindFailure : Either = +val seqFindFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqPickFailure : Either = +val seqPickFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -module Regression5218 = begin - val t1 : int = 1 - val t2 : int * int = (1, 2) - val t3 : int * int * int = (1, 2, 3) - val t4 : int * int * int * int = (1, 2, 3, 4) - val t5 : int * int * int * int * int = (1, 2, 3, 4, 5) - val t6 : int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) - val t7 : int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) - val t8 : int * int * int * int * int * int * int * int = +module Regression5218 = + val t1: int = 1 + val t2: int * int = (1, 2) + val t3: int * int * int = (1, 2, 3) + val t4: int * int * int * int = (1, 2, 3, 4) + val t5: int * int * int * int * int = (1, 2, 3, 4, 5) + val t6: int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) + val t7: int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) + val t8: int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8) - val t9 : int * int * int * int * int * int * int * int * int = + val t9: int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9) - val t10 : int * int * int * int * int * int * int * int * int * int = + val t10: int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val t11 : int * int * int * int * int * int * int * int * int * int * int = + val t11: int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) - val t12 : + val t12: int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 = FSI_0107+Regression4469 -val it : unit = () + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 = FSI_0107+Regression4469 +val it: unit = () > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end -module Regression1019_long = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end +> module Regression1019_short = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf +module Regression1019_long = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref = { contents = 1 } -val f : (unit -> int) +> val x: int ref = { contents = 1 } +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string = +> val note_ExpectDupMethod: string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> > val note_ExpectDupProperty : string = +> > val note_ExpectDupProperty: string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -1827,8 +1799,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU = Case1 (5, "") -val namedFieldVar2 : MyDU = Case7 25 +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -1837,15 +1809,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +val namedEx1: exn = MyNamedException1 (5, "") +val namedEx2: exn = MyNamedException7 25 > type optionRecord = { x: int option } -val x : optionRecord = { x = None } +val x: optionRecord = { x = None } > type optionRecord = { x: obj } -val x : optionRecord = { x = null } +val x: optionRecord = { x = null } > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl index 4ae32a6ed01..50f1d16cc58 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' +stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index 4df4b39469e..42af9640a55 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -1,46 +1,46 @@ -> > val repeatId : string = "A" +> > val repeatId: string = "A" -> val repeatId : string = "B" +> val repeatId: string = "B" namespace FSI_0004 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy - -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs : System.Windows.Forms.Form [] = + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy + +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form +val fs: System.Windows.Forms.Form [] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -141,7 +141,7 @@ val fs : System.Windows.Forms.Form [] = System.Windows.Forms.Form, Text: fs #97; System.Windows.Forms.Form, Text: fs #98; System.Windows.Forms.Form, Text: fs #99; ...|] -val xs : string list = +val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -151,7 +151,7 @@ val xs : string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa : string [] = +val xa: string [] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -161,45 +161,45 @@ val xa : string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2 : string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] -val sxs0 : Set = set [] +val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val sxs0: Set = set [] -> val sxs1 : Set = set ["0"] +> val sxs1: Set = set ["0"] -> val sxs2 : Set = set ["0"; "1"] +> val sxs2: Set = set ["0"; "1"] -> val sxs3 : Set = set ["0"; "1"; "2"] +> val sxs3: Set = set ["0"; "1"; "2"] -> val sxs4 : Set = set ["0"; "1"; "2"; "3"] +> val sxs4: Set = set ["0"; "1"; "2"; "3"] -> val sxs200 : Set = +> val sxs200: Set = set ["0"; "1"; "10"; "100"; "101"; "102"; "103"; "104"; "105"; ...] -> val msxs0 : Map = map [] +> val msxs0: Map = map [] -> val msxs1 : Map = map [(0, "0")] +> val msxs1: Map = map [(0, "0")] -> val msxs2 : Map = map [(0, "0"); (1, "1")] +> val msxs2: Map = map [(0, "0"); (1, "1")] -> val msxs3 : Map = map [(0, "0"); (1, "1"); (2, "2")] +> val msxs3: Map = map [(0, "0"); (1, "1"); (2, "2")] -> val msxs4 : Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] +> val msxs4: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] -> val msxs200 : Map = +> val msxs200: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3"); (4, "4"); (5, "5"); (6, "6"); (7, "7"); (8, "8"); ...] -> module M = begin - val a : string = "sub-binding" - val b : +> module M = + val a: string = "sub-binding" + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), @@ -230,30 +230,27 @@ val sxs0 : Set = set [] ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]])) -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref = { contents = "value" } -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option = None -val opt4 : 'a option option option option -val opt4b : int option option option option = Some (Some (Some None)) -val opt5 : int list option option option option option list = + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref = { contents = "value" } +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option = None +val opt4: 'a option option option option +val opt4b: int option option option option = Some (Some (Some None)) +val opt5: int list option option option option option list = [Some (Some (Some (Some None))); Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some @@ -264,8 +261,8 @@ val opt5 : int list option option option option option list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] -val mkStr : n:int -> string -val strs : string [] = +val mkStr: n: int -> string +val strs: string [] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -342,7 +339,7 @@ val strs : string [] = "-------------------------------------------------------------"+[36 chars]; "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]|] -val str7s : string [] = +val str7s: string [] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -439,7 +436,7 @@ val str7s : string [] = "-------------------------------------------------------------"+[618 chars]; "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]|] -val grids : string [,] = +val grids: string [,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -1309,16 +1306,16 @@ val grids : string [,] = > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree = +val tree_2_4: tree = N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]] > [Building 2 6...done] -val tree_2_6 : tree = +val tree_2_6: tree = N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1329,7 +1326,7 @@ val tree_2_6 : tree = N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]]] > [Building 2 8...done] -val tree_2_8 : tree = +val tree_2_8: tree = N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1364,7 +1361,7 @@ val tree_2_8 : tree = N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]]]]] > [Building 2 10...done] -val tree_2_10 : tree = +val tree_2_10: tree = N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1431,7 +1428,7 @@ val tree_2_10 : tree = ...]; ...]; ...]; ...] > [Building 2 12...done] -val tree_2_12 : tree = +val tree_2_12: tree = N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1498,7 +1495,7 @@ val tree_2_12 : tree = ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 14...done] -val tree_2_14 : tree = +val tree_2_14: tree = N [N [N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; @@ -1627,7 +1624,7 @@ val tree_2_14 : tree = ...]; ...]; ...]; ...]; ...]; ...] > [Building 3 8...done] -val tree_3_8 : tree = +val tree_3_8: tree = N [N [N [N [N [N [N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]]; @@ -1705,7 +1702,7 @@ val tree_3_8 : tree = ...]; ...]; ...]; ...] > [Building 4 8...done] -val tree_4_8 : tree = +val tree_4_8: tree = N [N [N [N [N [N [N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]]; N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; @@ -1802,7 +1799,7 @@ val tree_4_8 : tree = ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 8...done] -val tree_5_8 : tree = +val tree_5_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -1870,7 +1867,7 @@ val tree_5_8 : tree = ...]; ...] > [Building 6 8...done] -val tree_6_8 : tree = +val tree_6_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]]; @@ -1943,7 +1940,7 @@ val tree_6_8 : tree = N [N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 3...done] -val tree_5_3 : tree = +val tree_5_3: tree = N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -1958,9 +1955,9 @@ val tree_5_3 : tree = > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X +val generate: x: int -> X -> val exps : X list = +> val exps: X list = [Bop (1, Var 0, Var 0); Var 2; Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)); Var 4; Bop (5, Var 2, Bop (1, Var 0, Var 0)); Var 6; @@ -2443,8 +2440,8 @@ val generate : x:int -> X Var 1350114))), Bop (24302059, Bop (12151029, ..., ...), ...))), ...)); ...] -> module Exprs = begin - val x1 : X = +> module Exprs = + val x1: X = Bop (213, Var 106, Bop @@ -2462,18 +2459,18 @@ val generate : x:int -> X Bop (7, Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)), Var 2)))) - val x2 : X = Var 21342314 - val x3 : X = Var 3214 - val x4 : X = Bop (1231357, Var 615678, Var 410452) - val x5 : X = + val x2: X = Var 21342314 + val x3: X = Var 3214 + val x4: X = Bop (1231357, Var 615678, Var 410452) + val x5: X = Bop (5234547, Bop (2617273, Var 1308636, Var 872424), Bop (1744849, Var 872424, Var 581616)) - val x6 : X = + val x6: X = Bop (923759825, Var 461879912, Bop (307919941, Var 153959970, Var 102639980)) - val x7 : X = Var 2435234 - val x8 : X = + val x7: X = Var 2435234 + val x8: X = Bop (12396777, Var 6198388, Bop @@ -2543,7 +2540,7 @@ val generate : x:int -> X (4251, Bop (2125, Var 1062, Var 708), Bop (1417, Var 708, Var 472))), Var 8502))), Var 153046)))) - val x9 : X = + val x9: X = Bop (3333333, Var 1666666, Bop @@ -2551,7 +2548,7 @@ val generate : x:int -> X Bop (555555, Bop (277777, Var 138888, Var 92592), Bop (185185, Var 92592, Var 61728)), Var 370370)) - val x10 : X = + val x10: X = Bop (1312311237, Var 656155618, Bop @@ -3196,7 +3193,7 @@ val generate : x:int -> X ...), ...))), ...)))), ...), ...)), ...))), ...))), ...), ...))) - val x11 : X = + val x11: X = Bop (2147483647, Bop @@ -3824,13 +3821,12 @@ val generate : x:int -> X (6628035, Bop (3314017, Var 1657008, Var 1104672), Bop (2209345, Var 1104672, Var 736448)), Var 4418690))))), Var 715827882) -end > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C = -val csA : C [] = + new: x: string -> C + override ToString: unit -> string +val c1: C = +val csA: C [] = [|; ; ; ; ; ; @@ -3881,7 +3877,7 @@ val csA : C [] = ; ; ; ; ; ; ...|] -val csB : C [] = +val csB: C [] = [|; ; ; ; ; ; @@ -3932,7 +3928,7 @@ val csB : C [] = ; ; ; ; ; ; ...|] -val csC : C [] = +val csC: C [] = [|; ; ; ; ; ; @@ -3994,62 +3990,60 @@ val csC : C [] = > exception AbcException of System.Exception list -> val exA1 : exn = Abc -val exA2 : exn = AbcInt 2 -val exA3 : exn = AbcString "3" -val exA4 : exn = AbcExn [Abc; AbcInt 2; AbcString "3"] -val exA5 : exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] +> val exA1: exn = Abc +val exA2: exn = AbcInt 2 +val exA3: exn = AbcString "3" +val exA4: exn = AbcExn [Abc; AbcInt 2; AbcString "3"] +val exA5: exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn = Ex0 -val exU : exn = ExUnit () -val exUs : exn = ExUnits ((), ()) -val exUSome : exn = ExUnitOption (Some ()) -val exUNone : exn = ExUnitOption None +val ex0: exn = Ex0 +val exU: exn = ExUnit () +val exUs: exn = ExUnits ((), ()) +val exUSome: exn = ExUnitOption (Some ()) +val exUNone: exn = ExUnitOption None type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 = AT4063 12 +> val valAT3063_12: int T4063 = AT4063 12 -> val valAT3063_True : bool T4063 = AT4063 true +> val valAT3063_True: bool T4063 = AT4063 true -> val valAT3063_text : string T4063 = AT4063 "text" +> val valAT3063_text: string T4063 = AT4063 "text" -> val valAT3063_null : System.Object T4063 = AT4063 null +> val valAT3063_null: System.Object T4063 = AT4063 null > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -4066,7 +4060,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -4074,9 +4068,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -4092,7 +4086,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -4125,7 +4119,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -4134,46 +4128,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -4186,17 +4180,17 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r = { f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 } -val r10s : r [] = +val r10: r = { f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 } +val r10s: r [] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -4537,7 +4531,7 @@ val r10s : r [] = f7 = 7 f8 = 8 f9 = 9 }|] -val r10s' : string * r [] = +val r10s': string * r [] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -4880,36 +4874,36 @@ val r10s' : string * r [] = f8 = 8 f9 = 9 }|]) -> val x1564_A1 : int = 1 +> val x1564_A1: int = 1 --> Added '\' to library include path -val x1564_A2 : int = 2 +val x1564_A2: int = 2 --> Added '\' to library include path -val x1564_A3 : int = 3 +val x1564_A3: int = 3 > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int = 1 +> module internal InternalM = + val x: int = 1 type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -4917,7 +4911,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4940,15 +4934,14 @@ val x1564_A3 : int = 3 private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int = 1 + new: unit -> T14 +module internal PrivateM = + val private x: int = 1 type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -4956,7 +4949,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4979,1145 +4972,1124 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string = +> module Test4343a = + val mk: i: int -> string + val x100: string = "0123456789012345678901234567890123456789012345678901234567890"+[39 chars] - val x90 : string = + val x90: string = "0123456789012345678901234567890123456789012345678901234567890"+[29 chars] - val x80 : string = + val x80: string = "0123456789012345678901234567890123456789012345678901234567890"+[19 chars] - val x75 : string = + val x75: string = "0123456789012345678901234567890123456789012345678901234567890"+[14 chars] - val x74 : string = + val x74: string = "0123456789012345678901234567890123456789012345678901234567890"+[13 chars] - val x73 : string = + val x73: string = "0123456789012345678901234567890123456789012345678901234567890"+[12 chars] - val x72 : string = + val x72: string = "012345678901234567890123456789012345678901234567890123456789012345678901" - val x71 : string = + val x71: string = "01234567890123456789012345678901234567890123456789012345678901234567890" - val x70 : string = + val x70: string = "0123456789012345678901234567890123456789012345678901234567890123456789" -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list = [1; 2; 3] - val xArray : int [] = [|1; 2; 3|] - val xString : string = "abcdef" - val xOption : int option = Some 12 - val xArray2 : (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list = [1; 2; 3] + val xArray: int [] = [|1; 2; 3|] + val xString: string = "abcdef" + val xOption: int option = Some 12 + val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: int -> C + 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]) type D = - new : x:int -> D - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: 'a -> CGeneric<'a> + 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]) type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - val dC : D = D(True) - val boxed_dABC : obj list = [D(1); D(2); D(True)] - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + val dC: D = D(True) + val boxed_dABC: obj list = [D(1); D(2); D(True)] type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either = +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqFindFailure : Either = +val seqFindFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqPickFailure : Either = +val seqPickFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -module Regression5218 = begin - val t1 : int = 1 - val t2 : int * int = (1, 2) - val t3 : int * int * int = (1, 2, 3) - val t4 : int * int * int * int = (1, 2, 3, 4) - val t5 : int * int * int * int * int = (1, 2, 3, 4, 5) - val t6 : int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) - val t7 : int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) - val t8 : int * int * int * int * int * int * int * int = +module Regression5218 = + val t1: int = 1 + val t2: int * int = (1, 2) + val t3: int * int * int = (1, 2, 3) + val t4: int * int * int * int = (1, 2, 3, 4) + val t5: int * int * int * int * int = (1, 2, 3, 4, 5) + val t6: int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) + val t7: int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) + val t8: int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8) - val t9 : int * int * int * int * int * int * int * int * int = + val t9: int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9) - val t10 : int * int * int * int * int * int * int * int * int * int = + val t10: int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val t11 : int * int * int * int * int * int * int * int * int * int * int = + val t11: int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) - val t12 : + val t12: int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 = FSI_0106+Regression4469 -val it : unit = () + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 = FSI_0106+Regression4469 +val it: unit = () > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end -module Regression1019_long = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end +> module Regression1019_short = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf +module Regression1019_long = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref = { contents = 1 } -val f : (unit -> int) +> val x: int ref = { contents = 1 } +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string = +> val note_ExpectDupMethod: string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> > val note_ExpectDupProperty : string = +> > val note_ExpectDupProperty: string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -6127,8 +6099,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU = Case1 (5, "") -val namedFieldVar2 : MyDU = Case7 25 +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -6137,15 +6109,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +val namedEx1: exn = MyNamedException1 (5, "") +val namedEx2: exn = MyNamedException7 25 > type optionRecord = { x: int option } -val x : optionRecord = { x = None } +val x: optionRecord = { x = None } > type optionRecord = { x: obj } -val x : optionRecord = { x = null } +val x: optionRecord = { x = null } > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index 7d0f21ca77b..6da776b06b5 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -1,46 +1,46 @@ -> > val repeatId : string = "A" +> > val repeatId: string = "A" -> val repeatId : string = "B" +> val repeatId: string = "B" namespace FSI_0004 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy - -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs : System.Windows.Forms.Form [] = + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy + +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form +val fs: System.Windows.Forms.Form [] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -141,7 +141,7 @@ val fs : System.Windows.Forms.Form [] = System.Windows.Forms.Form, Text: fs #97; System.Windows.Forms.Form, Text: fs #98; System.Windows.Forms.Form, Text: fs #99; ...|] -val xs : string list = +val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -151,7 +151,7 @@ val xs : string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa : string [] = +val xa: string [] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -161,45 +161,45 @@ val xa : string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2 : string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] -val sxs0 : Set = set [] +val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val sxs0: Set = set [] -> val sxs1 : Set = set ["0"] +> val sxs1: Set = set ["0"] -> val sxs2 : Set = set ["0"; "1"] +> val sxs2: Set = set ["0"; "1"] -> val sxs3 : Set = set ["0"; "1"; "2"] +> val sxs3: Set = set ["0"; "1"; "2"] -> val sxs4 : Set = set ["0"; "1"; "2"; "3"] +> val sxs4: Set = set ["0"; "1"; "2"; "3"] -> val sxs200 : Set = +> val sxs200: Set = set ["0"; "1"; "10"; "100"; "101"; "102"; "103"; "104"; "105"; ...] -> val msxs0 : Map = map [] +> val msxs0: Map = map [] -> val msxs1 : Map = map [(0, "0")] +> val msxs1: Map = map [(0, "0")] -> val msxs2 : Map = map [(0, "0"); (1, "1")] +> val msxs2: Map = map [(0, "0"); (1, "1")] -> val msxs3 : Map = map [(0, "0"); (1, "1"); (2, "2")] +> val msxs3: Map = map [(0, "0"); (1, "1"); (2, "2")] -> val msxs4 : Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] +> val msxs4: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3")] -> val msxs200 : Map = +> val msxs200: Map = map [(0, "0"); (1, "1"); (2, "2"); (3, "3"); (4, "4"); (5, "5"); (6, "6"); (7, "7"); (8, "8"); ...] -> module M = begin - val a : string = "sub-binding" - val b : +> module M = + val a: string = "sub-binding" + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), @@ -230,30 +230,27 @@ val sxs0 : Set = set [] ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]])) -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref = { contents = "value" } -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option = None -val opt4 : 'a option option option option -val opt4b : int option option option option = Some (Some (Some None)) -val opt5 : int list option option option option option list = + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref = { contents = "value" } +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option = None +val opt4: 'a option option option option +val opt4b: int option option option option = Some (Some (Some None)) +val opt5: int list option option option option option list = [Some (Some (Some (Some None))); Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some @@ -264,8 +261,8 @@ val opt5 : int list option option option option option list = [1; 2; 3; 4; 5; 6; 7; 8; 9; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] -val mkStr : n:int -> string -val strs : string [] = +val mkStr: n: int -> string +val strs: string [] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -342,7 +339,7 @@ val strs : string [] = "-------------------------------------------------------------"+[36 chars]; "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]|] -val str7s : string [] = +val str7s: string [] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -439,7 +436,7 @@ val str7s : string [] = "-------------------------------------------------------------"+[618 chars]; "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]|] -val grids : string [,] = +val grids: string [,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -1309,16 +1306,16 @@ val grids : string [,] = > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree = +val tree_2_4: tree = N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]] > [Building 2 6...done] -val tree_2_6 : tree = +val tree_2_6: tree = N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1329,7 +1326,7 @@ val tree_2_6 : tree = N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]]] > [Building 2 8...done] -val tree_2_8 : tree = +val tree_2_8: tree = N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1364,7 +1361,7 @@ val tree_2_8 : tree = N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]]]]] > [Building 2 10...done] -val tree_2_10 : tree = +val tree_2_10: tree = N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1431,7 +1428,7 @@ val tree_2_10 : tree = ...]; ...]; ...]; ...] > [Building 2 12...done] -val tree_2_12 : tree = +val tree_2_12: tree = N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]]; N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; @@ -1498,7 +1495,7 @@ val tree_2_12 : tree = ...]; ...]; ...]; ...]; ...]; ...] > [Building 2 14...done] -val tree_2_14 : tree = +val tree_2_14: tree = N [N [N [N [N [N [N [N [N [N [N [N [N [N [L; L]; N [L; L]]; N [N [L; L]; N [L; L]]]; N [N [N [L; L]; N [L; L]]; @@ -1627,7 +1624,7 @@ val tree_2_14 : tree = ...]; ...]; ...]; ...]; ...]; ...] > [Building 3 8...done] -val tree_3_8 : tree = +val tree_3_8: tree = N [N [N [N [N [N [N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]; N [N [L; L; L]; N [L; L; L]; N [L; L; L]]]; @@ -1705,7 +1702,7 @@ val tree_3_8 : tree = ...]; ...]; ...]; ...] > [Building 4 8...done] -val tree_4_8 : tree = +val tree_4_8: tree = N [N [N [N [N [N [N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]]; N [N [L; L; L; L]; N [L; L; L; L]; N [L; L; L; L]; @@ -1802,7 +1799,7 @@ val tree_4_8 : tree = ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 8...done] -val tree_5_8 : tree = +val tree_5_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -1870,7 +1867,7 @@ val tree_5_8 : tree = ...]; ...] > [Building 6 8...done] -val tree_6_8 : tree = +val tree_6_8: tree = N [N [N [N [N [N [N [N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]; N [L; L; L; L; L; L]]; @@ -1943,7 +1940,7 @@ val tree_6_8 : tree = N [N ...; ...]; ...]; ...]; ...]; ...]; ...]; ...] > [Building 5 3...done] -val tree_5_3 : tree = +val tree_5_3: tree = N [N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]]; N [N [L; L; L; L; L]; N [L; L; L; L; L]; N [L; L; L; L; L]; @@ -1958,9 +1955,9 @@ val tree_5_3 : tree = > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X +val generate: x: int -> X -> val exps : X list = +> val exps: X list = [Bop (1, Var 0, Var 0); Var 2; Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)); Var 4; Bop (5, Var 2, Bop (1, Var 0, Var 0)); Var 6; @@ -2443,8 +2440,8 @@ val generate : x:int -> X Var 1350114))), Bop (24302059, Bop (12151029, ..., ...), ...))), ...)); ...] -> module Exprs = begin - val x1 : X = +> module Exprs = + val x1: X = Bop (213, Var 106, Bop @@ -2462,18 +2459,18 @@ val generate : x:int -> X Bop (7, Bop (3, Bop (1, Var 0, Var 0), Bop (1, Var 0, Var 0)), Var 2)))) - val x2 : X = Var 21342314 - val x3 : X = Var 3214 - val x4 : X = Bop (1231357, Var 615678, Var 410452) - val x5 : X = + val x2: X = Var 21342314 + val x3: X = Var 3214 + val x4: X = Bop (1231357, Var 615678, Var 410452) + val x5: X = Bop (5234547, Bop (2617273, Var 1308636, Var 872424), Bop (1744849, Var 872424, Var 581616)) - val x6 : X = + val x6: X = Bop (923759825, Var 461879912, Bop (307919941, Var 153959970, Var 102639980)) - val x7 : X = Var 2435234 - val x8 : X = + val x7: X = Var 2435234 + val x8: X = Bop (12396777, Var 6198388, Bop @@ -2543,7 +2540,7 @@ val generate : x:int -> X (4251, Bop (2125, Var 1062, Var 708), Bop (1417, Var 708, Var 472))), Var 8502))), Var 153046)))) - val x9 : X = + val x9: X = Bop (3333333, Var 1666666, Bop @@ -2551,7 +2548,7 @@ val generate : x:int -> X Bop (555555, Bop (277777, Var 138888, Var 92592), Bop (185185, Var 92592, Var 61728)), Var 370370)) - val x10 : X = + val x10: X = Bop (1312311237, Var 656155618, Bop @@ -3196,7 +3193,7 @@ val generate : x:int -> X ...), ...))), ...)))), ...), ...)), ...))), ...))), ...), ...))) - val x11 : X = + val x11: X = Bop (2147483647, Bop @@ -3824,13 +3821,12 @@ val generate : x:int -> X (6628035, Bop (3314017, Var 1657008, Var 1104672), Bop (2209345, Var 1104672, Var 736448)), Var 4418690))))), Var 715827882) -end > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C = -val csA : C [] = + new: x: string -> C + override ToString: unit -> string +val c1: C = +val csA: C [] = [|; ; ; ; ; ; @@ -3881,7 +3877,7 @@ val csA : C [] = ; ; ; ; ; ; ...|] -val csB : C [] = +val csB: C [] = [|; ; ; ; ; ; @@ -3932,7 +3928,7 @@ val csB : C [] = ; ; ; ; ; ; ...|] -val csC : C [] = +val csC: C [] = [|; ; ; ; ; ; @@ -3994,62 +3990,60 @@ val csC : C [] = > exception AbcException of System.Exception list -> val exA1 : exn = Abc -val exA2 : exn = AbcInt 2 -val exA3 : exn = AbcString "3" -val exA4 : exn = AbcExn [Abc; AbcInt 2; AbcString "3"] -val exA5 : exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] +> val exA1: exn = Abc +val exA2: exn = AbcInt 2 +val exA3: exn = AbcString "3" +val exA4: exn = AbcExn [Abc; AbcInt 2; AbcString "3"] +val exA5: exn = AbcException [AbcExn [Abc; AbcInt 2; AbcString "3"]] exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn = Ex0 -val exU : exn = ExUnit () -val exUs : exn = ExUnits ((), ()) -val exUSome : exn = ExUnitOption (Some ()) -val exUNone : exn = ExUnitOption None +val ex0: exn = Ex0 +val exU: exn = ExUnit () +val exUs: exn = ExUnits ((), ()) +val exUSome: exn = ExUnitOption (Some ()) +val exUNone: exn = ExUnitOption None type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 = AT4063 12 +> val valAT3063_12: int T4063 = AT4063 12 -> val valAT3063_True : bool T4063 = AT4063 true +> val valAT3063_True: bool T4063 = AT4063 true -> val valAT3063_text : string T4063 = AT4063 "text" +> val valAT3063_text: string T4063 = AT4063 "text" -> val valAT3063_null : System.Object T4063 = AT4063 null +> val valAT3063_null: System.Object T4063 = AT4063 null > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] = [|12uy; 13uy; 14uy|] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -4068,7 +4062,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -4076,9 +4070,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -4094,7 +4088,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -4127,7 +4121,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -4136,46 +4130,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -4188,17 +4182,17 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r = { f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 } -val r10s : r [] = +val r10: r = { f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 } +val r10s: r [] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -4539,7 +4533,7 @@ val r10s : r [] = f7 = 7 f8 = 8 f9 = 9 }|] -val r10s' : string * r [] = +val r10s': string * r [] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -4882,36 +4876,36 @@ val r10s' : string * r [] = f8 = 8 f9 = 9 }|]) -> val x1564_A1 : int = 1 +> val x1564_A1: int = 1 --> Added '\' to library include path -val x1564_A2 : int = 2 +val x1564_A2: int = 2 --> Added '\' to library include path -val x1564_A3 : int = 3 +val x1564_A3: int = 3 > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int = 1 +> module internal InternalM = + val x: int = 1 type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -4919,7 +4913,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4942,15 +4936,14 @@ val x1564_A3 : int = 3 private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int = 1 + new: unit -> T14 +module internal PrivateM = + val private x: int = 1 type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -4958,7 +4951,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4981,1145 +4974,1124 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string = +> module Test4343a = + val mk: i: int -> string + val x100: string = "0123456789012345678901234567890123456789012345678901234567890"+[39 chars] - val x90 : string = + val x90: string = "0123456789012345678901234567890123456789012345678901234567890"+[29 chars] - val x80 : string = + val x80: string = "0123456789012345678901234567890123456789012345678901234567890"+[19 chars] - val x75 : string = + val x75: string = "0123456789012345678901234567890123456789012345678901234567890"+[14 chars] - val x74 : string = + val x74: string = "0123456789012345678901234567890123456789012345678901234567890"+[13 chars] - val x73 : string = + val x73: string = "0123456789012345678901234567890123456789012345678901234567890"+[12 chars] - val x72 : string = + val x72: string = "012345678901234567890123456789012345678901234567890123456789012345678901" - val x71 : string = + val x71: string = "01234567890123456789012345678901234567890123456789012345678901234567890" - val x70 : string = + val x70: string = "0123456789012345678901234567890123456789012345678901234567890123456789" -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list = [1; 2; 3] - val xArray : int [] = [|1; 2; 3|] - val xString : string = "abcdef" - val xOption : int option = Some 12 - val xArray2 : (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list = [1; 2; 3] + val xArray: int [] = [|1; 2; 3|] + val xString: string = "abcdef" + val xOption: int option = Some 12 + val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: int -> C + 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]) type D = - new : x:int -> D - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list = + new: x: 'a -> CGeneric<'a> + 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]) type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D = D(1) - val dB : D = D(2) - val dAB : D * D * D list = (D(1), D(2), [D(1); D(2)]) - val dC : D = D(True) - val boxed_dABC : obj list = [D(1); D(2); D(True)] - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D = D(1) + val dB: D = D(2) + val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) + val dC: D = D(True) + val boxed_dABC: obj list = [D(1); D(2); D(True)] type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either = +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqFindFailure : Either = +val seqFindFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -val seqPickFailure : Either = +val seqPickFailure: Either = That ("System.Collections.Generic.KeyNotFoundException", "An index satisfying the predicate was not found in the collection.") -module Regression5218 = begin - val t1 : int = 1 - val t2 : int * int = (1, 2) - val t3 : int * int * int = (1, 2, 3) - val t4 : int * int * int * int = (1, 2, 3, 4) - val t5 : int * int * int * int * int = (1, 2, 3, 4, 5) - val t6 : int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) - val t7 : int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) - val t8 : int * int * int * int * int * int * int * int = +module Regression5218 = + val t1: int = 1 + val t2: int * int = (1, 2) + val t3: int * int * int = (1, 2, 3) + val t4: int * int * int * int = (1, 2, 3, 4) + val t5: int * int * int * int * int = (1, 2, 3, 4, 5) + val t6: int * int * int * int * int * int = (1, 2, 3, 4, 5, 6) + val t7: int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7) + val t8: int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8) - val t9 : int * int * int * int * int * int * int * int * int = + val t9: int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9) - val t10 : int * int * int * int * int * int * int * int * int * int = + val t10: int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) - val t11 : int * int * int * int * int * int * int * int * int * int * int = + val t11: int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) - val t12 : + val t12: int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 = FSI_0106+Regression4469 -val it : unit = () + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 = FSI_0106+Regression4469 +val it: unit = () > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end -module Regression1019_long = begin - val double_nan : float = nan - val double_infinity : float = infinity - val single_nan : float32 = nanf - val single_infinity : float32 = infinityf -end +> module Regression1019_short = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf +module Regression1019_long = + val double_nan: float = nan + val double_infinity: float = infinity + val single_nan: float32 = nanf + val single_infinity: float32 = infinityf -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref = { contents = 1 } -val f : (unit -> int) +> val x: int ref = { contents = 1 } +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string = +> val note_ExpectDupMethod: string = "Regression4927: Expect error due to duplicate methods in the "+[20 chars] -> > val note_ExpectDupProperty : string = +> > val note_ExpectDupProperty: string = "Regression4927: Expect error due to duplicate properties in t"+[23 chars] -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -6129,8 +6101,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU = Case1 (5, "") -val namedFieldVar2 : MyDU = Case7 25 +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -6139,15 +6111,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +val namedEx1: exn = MyNamedException1 (5, "") +val namedEx2: exn = MyNamedException7 25 > type optionRecord = { x: int option } -val x : optionRecord = { x = None } +val x: optionRecord = { x = None } > type optionRecord = { x: obj } -val x : optionRecord = { x = null } +val x: optionRecord = { x = null } > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl index 4ae32a6ed01..50f1d16cc58 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' +stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index 5e4d80425d7..ee5efa04d2b 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -1,176 +1,172 @@ -> val it : unit = () +> val it: unit = () -> > val repeatId : string +> > val repeatId: string -> val repeatId : string +> val repeatId: string namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form -val fs : System.Windows.Forms.Form [] -val xs : string list -val xa : string [] -val xa2 : string [,] -val sxs0 : Set +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form +val fs: System.Windows.Forms.Form [] +val xs: string list +val xa: string [] +val xa2: string [,] +val sxs0: Set -> val sxs1 : Set +> val sxs1: Set -> val sxs2 : Set +> val sxs2: Set -> val sxs3 : Set +> val sxs3: Set -> val sxs4 : Set +> val sxs4: Set -> val sxs200 : Set +> val sxs200: Set -> val msxs0 : Map +> val msxs0: Map -> val msxs1 : Map +> val msxs1: Map -> val msxs2 : Map +> val msxs2: Map -> val msxs3 : Map +> val msxs3: Map -> val msxs4 : Map +> val msxs4: Map -> val msxs200 : Map +> val msxs200: Map -> module M = begin - val a : string - val b : +> module M = + val a: string + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option -val opt4 : 'a option option option option -val opt4b : int option option option option -val opt5 : int list option option option option option list -val mkStr : n:int -> string -val strs : string [] -val str7s : string [] -val grids : string [,] + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option +val opt4: 'a option option option option +val opt4b: int option option option option +val opt5: int list option option option option option list +val mkStr: n: int -> string +val strs: string [] +val str7s: string [] +val grids: string [,] > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree +val tree_2_4: tree > [Building 2 6...done] -val tree_2_6 : tree +val tree_2_6: tree > [Building 2 8...done] -val tree_2_8 : tree +val tree_2_8: tree > [Building 2 10...done] -val tree_2_10 : tree +val tree_2_10: tree > [Building 2 12...done] -val tree_2_12 : tree +val tree_2_12: tree > [Building 2 14...done] -val tree_2_14 : tree +val tree_2_14: tree > [Building 3 8...done] -val tree_3_8 : tree +val tree_3_8: tree > [Building 4 8...done] -val tree_4_8 : tree +val tree_4_8: tree > [Building 5 8...done] -val tree_5_8 : tree +val tree_5_8: tree > [Building 6 8...done] -val tree_6_8 : tree +val tree_6_8: tree > [Building 5 3...done] -val tree_5_3 : tree +val tree_5_3: tree > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X - -> val exps : X list - -> module Exprs = begin - val x1 : X - val x2 : X - val x3 : X - val x4 : X - val x5 : X - val x6 : X - val x7 : X - val x8 : X - val x9 : X - val x10 : X - val x11 : X -end +val generate: x: int -> X + +> val exps: X list + +> module Exprs = + val x1: X + val x2: X + val x3: X + val x4: X + val x5: X + val x6: X + val x7: X + val x8: X + val x9: X + val x10: X + val x11: X > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C -val csA : C [] -val csB : C [] -val csC : C [] + new: x: string -> C + override ToString: unit -> string +val c1: C +val csA: C [] +val csB: C [] +val csC: C [] > exception Abc @@ -182,62 +178,60 @@ val csC : C [] > exception AbcException of System.Exception list -> val exA1 : exn -val exA2 : exn -val exA3 : exn -val exA4 : exn -val exA5 : exn +> val exA1: exn +val exA2: exn +val exA3: exn +val exA4: exn +val exA5: exn exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn -val exU : exn -val exUs : exn -val exUSome : exn -val exUNone : exn +val ex0: exn +val exU: exn +val exUs: exn +val exUSome: exn +val exUNone: exn type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 +> val valAT3063_12: int T4063 -> val valAT3063_True : bool T4063 +> val valAT3063_True: bool T4063 -> val valAT3063_text : string T4063 +> val valAT3063_text: string T4063 -> val valAT3063_null : System.Object T4063 +> val valAT3063_null: System.Object T4063 > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -254,7 +248,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -262,9 +256,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -280,7 +274,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -313,7 +307,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -322,46 +316,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -374,40 +368,40 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r -val r10s : r [] -val r10s' : string * r [] +val r10: r +val r10s: r [] +val r10s': string * r [] -> val x1564_A1 : int +> val x1564_A1: int --> Added '\' to library include path -val x1564_A2 : int +val x1564_A2: int --> Added '\' to library include path -val x1564_A3 : int +val x1564_A3: int > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int +> module internal InternalM = + val x: int type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -415,7 +409,7 @@ val x1564_A3 : int { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -438,15 +432,14 @@ val x1564_A3 : int private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int + new: unit -> T14 +module internal PrivateM = + val private x: int type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -454,7 +447,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -477,1115 +470,1094 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string - val x90 : string - val x80 : string - val x75 : string - val x74 : string - val x73 : string - val x72 : string - val x71 : string - val x70 : string -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +> module Test4343a = + val mk: i: int -> string + val x100: string + val x90: string + val x80: string + val x75: string + val x74: string + val x73: string + val x72: string + val x71: string + val x70: string +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list - val xArray : int [] - val xString : string - val xOption : int option - val xArray2 : (int * int) [,] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list + val xArray: int [] + val xString: string + val xOption: int option + val xArray2: (int * int) [,] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list + new: x: int -> C + val cA: C + val cB: C + val cAB: C * C * C list type D = - new : x:int -> D - override ToString : unit -> string - val dA : D - val dB : D - val dAB : D * D * D list - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D + val dB: D + val dAB: D * D * D list + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list + new: x: 'a -> CGeneric<'a> + val cA: C + val cB: C + val cAB: C * C * C list type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D - val dB : D - val dAB : D * D * D list - val dC : D - val boxed_dABC : obj list - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D + val dB: D + val dAB: D * D * D list + val dC: D + val boxed_dABC: obj list type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either -val seqFindFailure : Either -val seqPickFailure : Either -module Regression5218 = begin - val t1 : int - val t2 : int * int - val t3 : int * int * int - val t4 : int * int * int * int - val t5 : int * int * int * int * int - val t6 : int * int * int * int * int * int - val t7 : int * int * int * int * int * int * int - val t8 : int * int * int * int * int * int * int * int - val t9 : int * int * int * int * int * int * int * int * int - val t10 : int * int * int * int * int * int * int * int * int * int - val t11 : int * int * int * int * int * int * int * int * int * int * int - val t12 : +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either +val seqFindFailure: Either +val seqPickFailure: Either +module Regression5218 = + val t1: int + val t2: int * int + val t3: int * int * int + val t4: int * int * int * int + val t5: int * int * int * int * int + val t6: int * int * int * int * int * int + val t7: int * int * int * int * int * int * int + val t8: int * int * int * int * int * int * int * int + val t9: int * int * int * int * int * int * int * int * int + val t10: int * int * int * int * int * int * int * int * int * int + val t11: int * int * int * int * int * int * int * int * int * int * int + val t12: int * int * int * int * int * int * int * int * int * int * int * int - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 -val it : unit + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 +val it: unit > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float - val double_infinity : float - val single_nan : float32 - val single_infinity : float32 -end -module Regression1019_long = begin - val double_nan : float - val double_infinity : float - val single_nan : float32 - val single_infinity : float32 -end +> module Regression1019_short = + val double_nan: float + val double_infinity: float + val single_nan: float32 + val single_infinity: float32 +module Regression1019_long = + val double_nan: float + val double_infinity: float + val single_nan: float32 + val single_infinity: float32 -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref -val f : (unit -> int) +> val x: int ref +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string +> val note_ExpectDupMethod: string -> > val note_ExpectDupProperty : string +> > val note_ExpectDupProperty: string -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -1595,8 +1567,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU -val namedFieldVar2 : MyDU +val namedFieldVar1: MyDU +val namedFieldVar2: MyDU > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -1605,15 +1577,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn -val namedEx2 : exn +val namedEx1: exn +val namedEx2: exn > type optionRecord = { x: int option } -val x : optionRecord +val x: optionRecord > type optionRecord = { x: obj } -val x : optionRecord +val x: optionRecord > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index b1fd18978b7..571416a9f07 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -1,176 +1,172 @@ -> val it : unit = () +> val it: unit = () -> > val repeatId : string +> > val repeatId: string -> val repeatId : string +> val repeatId: string namespace FSI_0005 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy namespace FSI_0006 - val x1 : int - val x2 : string - val x3 : 'a option - val x4 : int option - val x5 : 'a list - val x6 : int list - val x7 : System.Windows.Forms.Form - val x8 : int [,] - val x9 : Lazy + val x1: int + val x2: string + val x3: 'a option + val x4: int option + val x5: 'a list + val x6: int list + val x7: System.Windows.Forms.Form + val x8: int [,] + val x9: Lazy -> val x1 : seq -val x2 : seq -val x3 : seq -val f1 : System.Windows.Forms.Form -val fs : System.Windows.Forms.Form [] -val xs : string list -val xa : string [] -val xa2 : string [,] -val sxs0 : Set +> val x1: seq +val x2: seq +val x3: seq +val f1: System.Windows.Forms.Form +val fs: System.Windows.Forms.Form [] +val xs: string list +val xa: string [] +val xa2: string [,] +val sxs0: Set -> val sxs1 : Set +> val sxs1: Set -> val sxs2 : Set +> val sxs2: Set -> val sxs3 : Set +> val sxs3: Set -> val sxs4 : Set +> val sxs4: Set -> val sxs200 : Set +> val sxs200: Set -> val msxs0 : Map +> val msxs0: Map -> val msxs1 : Map +> val msxs1: Map -> val msxs2 : Map +> val msxs2: Map -> val msxs3 : Map +> val msxs3: Map -> val msxs4 : Map +> val msxs4: Map -> val msxs200 : Map +> val msxs200: Map -> module M = begin - val a : string - val b : +> module M = + val a: string + val b: (seq * seq * seq * System.Windows.Forms.Form) option * (string list * string list * string [,]) option -end type T = - new : a:int * b:int -> T - member AMethod : x:int -> int - static member StaticMethod : x:int -> int - member AProperty : int - static member StaticProperty : int -val f_as_method : x:int -> int -val f_as_thunk : (int -> int) -val refCell : string ref -module D1 = begin - val words : System.Collections.Generic.IDictionary - val words2000 : System.Collections.Generic.IDictionary -end - -> > module D2 = begin - val words : IDictionary - val words2000 : IDictionary -end -val opt1 : 'a option -val opt1b : int option -val opt4 : 'a option option option option -val opt4b : int option option option option -val opt5 : int list option option option option option list -val mkStr : n:int -> string -val strs : string [] -val str7s : string [] -val grids : string [,] + new: a: int * b: int -> T + member AMethod: x: int -> int + static member StaticMethod: x: int -> int + member AProperty: int + static member StaticProperty: int +val f_as_method: x: int -> int +val f_as_thunk: (int -> int) +val refCell: string ref +module D1 = + val words: System.Collections.Generic.IDictionary + val words2000: System.Collections.Generic.IDictionary + +> > module D2 = + val words: IDictionary + val words2000: IDictionary +val opt1: 'a option +val opt1b: int option +val opt4: 'a option option option option +val opt4b: int option option option option +val opt5: int list option option option option option list +val mkStr: n: int -> string +val strs: string [] +val str7s: string [] +val grids: string [,] > type tree = | L | N of tree list -val mkT : w:int -> d:int -> tree -val tree : w:int -> d:int -> tree +val mkT: w: int -> d: int -> tree +val tree: w: int -> d: int -> tree > [Building 2 4...done] -val tree_2_4 : tree +val tree_2_4: tree > [Building 2 6...done] -val tree_2_6 : tree +val tree_2_6: tree > [Building 2 8...done] -val tree_2_8 : tree +val tree_2_8: tree > [Building 2 10...done] -val tree_2_10 : tree +val tree_2_10: tree > [Building 2 12...done] -val tree_2_12 : tree +val tree_2_12: tree > [Building 2 14...done] -val tree_2_14 : tree +val tree_2_14: tree > [Building 3 8...done] -val tree_3_8 : tree +val tree_3_8: tree > [Building 4 8...done] -val tree_4_8 : tree +val tree_4_8: tree > [Building 5 8...done] -val tree_5_8 : tree +val tree_5_8: tree > [Building 6 8...done] -val tree_6_8 : tree +val tree_6_8: tree > [Building 5 3...done] -val tree_5_3 : tree +val tree_5_3: tree > > type X = | Var of int | Bop of int * X * X -val generate : x:int -> X - -> val exps : X list - -> module Exprs = begin - val x1 : X - val x2 : X - val x3 : X - val x4 : X - val x5 : X - val x6 : X - val x7 : X - val x8 : X - val x9 : X - val x10 : X - val x11 : X -end +val generate: x: int -> X + +> val exps: X list + +> module Exprs = + val x1: X + val x2: X + val x3: X + val x4: X + val x5: X + val x6: X + val x7: X + val x8: X + val x9: X + val x10: X + val x11: X > type C = - new : x:string -> C - override ToString : unit -> string -val c1 : C -val csA : C [] -val csB : C [] -val csC : C [] + new: x: string -> C + override ToString: unit -> string +val c1: C +val csA: C [] +val csB: C [] +val csC: C [] > exception Abc @@ -182,62 +178,60 @@ val csC : C [] > exception AbcException of System.Exception list -> val exA1 : exn -val exA2 : exn -val exA3 : exn -val exA4 : exn -val exA5 : exn +> val exA1: exn +val exA2: exn +val exA3: exn +val exA4: exn +val exA5: exn exception Ex0 exception ExUnit of unit exception ExUnits of unit * unit exception ExUnitOption of unit option -val ex0 : exn -val exU : exn -val exUs : exn -val exUSome : exn -val exUNone : exn +val ex0: exn +val exU: exn +val exUs: exn +val exUSome: exn +val exUNone: exn type 'a T4063 = | AT4063 of 'a -> val valAT3063_12 : int T4063 +> val valAT3063_12: int T4063 -> val valAT3063_True : bool T4063 +> val valAT3063_True: bool T4063 -> val valAT3063_text : string T4063 +> val valAT3063_text: string T4063 -> val valAT3063_null : System.Object T4063 +> val valAT3063_null: System.Object T4063 > type M4063<'a> = - new : x:'a -> M4063<'a> + new: x: 'a -> M4063<'a> -> val v4063 : M4063 +> val v4063: M4063 > type Taaaaa<'a> = - new : unit -> Taaaaa<'a> + new: unit -> Taaaaa<'a> > type Taaaaa2<'a> = inherit Taaaaa<'a> - new : unit -> Taaaaa2<'a> - member M : unit -> Taaaaa2<'a> + new: unit -> Taaaaa2<'a> + member M: unit -> Taaaaa2<'a> > type Tbbbbb<'a> = - new : x:'a -> Tbbbbb<'a> - member M : unit -> 'a + new: x: 'a -> Tbbbbb<'a> + member M: unit -> 'a > type Tbbbbb2 = inherit Tbbbbb - new : x:string -> Tbbbbb2 + new: x: string -> Tbbbbb2 -> val it : (unit -> string) = +> val it: (unit -> string) = -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] -end +> module RepeatedModule = + val repeatedByteLiteral: byte [] -> val it : string = "Check #help" +> val it: string = "Check #help" > F# Interactive directives: @@ -256,7 +250,7 @@ end -> val it : string = "Check #time on and then off" +> val it: string = "Check #time on and then off" > --> Timing now on @@ -264,9 +258,9 @@ end > --> Timing now off -> val it : string = "Check #unknown command" +> val it: string = "Check #unknown command" -> val it : string = +> val it: string = "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" > @@ -282,7 +276,7 @@ end > type internal T3 > type internal T4 = - new : unit -> T4 + new: unit -> T4 > type T1 = internal | A @@ -315,7 +309,7 @@ end > type private T3 > type private T4 = - new : unit -> T4 + new: unit -> T4 > exception X1 of int @@ -324,46 +318,46 @@ end > exception internal X3 of int > type T0 = - new : unit -> T0 + new: unit -> T0 type T1Post<'a> = - new : unit -> T1Post<'a> + new: unit -> T1Post<'a> type 'a T1Pre = - new : unit -> 'a T1Pre + new: unit -> 'a T1Pre > type T0 with - member M : unit -> T0 list + member M: unit -> T0 list type T0 with - member P : T0 * T0 + member P: T0 * T0 type T0 with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type T1Post<'a> with - member M : unit -> T1Post<'a> list + member M: unit -> T1Post<'a> list type T1Post<'a> with - member P : T1Post<'a> * T1Post<'a> + member P: T1Post<'a> * T1Post<'a> type T1Post<'a> with - member E : IEvent + member E: IEvent > type 'a T1Pre with - member M : unit -> 'a T1Pre list + member M: unit -> 'a T1Pre list type 'a T1Pre with - member P : 'a T1Pre * 'a T1Pre + member P: 'a T1Pre * 'a T1Pre type 'a T1Pre with - member E : IEvent + member E: IEvent > type r = { f0: int @@ -376,40 +370,40 @@ type 'a T1Pre with f7: int f8: int f9: int } -val r10 : r -val r10s : r [] -val r10s' : string * r [] +val r10: r +val r10s: r [] +val r10s': string * r [] -> val x1564_A1 : int +> val x1564_A1: int --> Added '\' to library include path -val x1564_A2 : int +val x1564_A2: int --> Added '\' to library include path -val x1564_A3 : int +val x1564_A3: int > type internal Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int -> module internal InternalM = begin - val x : int +> module internal InternalM = + val x: int type Foo2 = - private new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member private Prop3 : int + private new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member private Prop3: int type private Foo3 = - new : x:int * y:int * z:int -> Foo3 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo3 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -417,7 +411,7 @@ val x1564_A3 : int { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -440,15 +434,14 @@ val x1564_A3 : int private { x: int } type private T13 type private T14 = - new : unit -> T14 -end -module internal PrivateM = begin - val private x : int + new: unit -> T14 +module internal PrivateM = + val private x: int type private Foo2 = - new : x:int * y:int * z:int -> Foo2 + 3 overloads - member Prop1 : int - member Prop2 : int - member Prop3 : int + new: x: int * y: int * z: int -> Foo2 + 3 overloads + member Prop1: int + member Prop2: int + member Prop3: int type T1 = | A | B @@ -456,7 +449,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -479,1115 +472,1094 @@ module internal PrivateM = begin private { x: int } type private T13 type private T14 = - new : unit -> T14 -end + new: unit -> T14 -> val it : seq = +> val it: seq = seq [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); (58, "2/10/2009", 1)] -> module Test4343a = begin - val mk : i:int -> string - val x100 : string - val x90 : string - val x80 : string - val x75 : string - val x74 : string - val x73 : string - val x72 : string - val x71 : string - val x70 : string -end -module Test4343b = begin - val fA : x:int -> int - val fB : x:'a -> y:'a -> 'a list - val gA : (int -> int) - val gB : ('a -> 'a -> 'a list) - val gAB : (int -> int) * ('a -> 'a -> 'a list) - val hB : ('a -> 'a -> 'a list) - val hA : (int -> int) -end -module Test4343c = begin +> module Test4343a = + val mk: i: int -> string + val x100: string + val x90: string + val x80: string + val x75: string + val x74: string + val x73: string + val x72: string + val x71: string + val x70: string +module Test4343b = + val fA: x: int -> int + val fB: x: 'a -> y: 'a -> 'a list + val gA: (int -> int) + val gB: ('a -> 'a -> 'a list) + val gAB: (int -> int) * ('a -> 'a -> 'a list) + val hB: ('a -> 'a -> 'a list) + val hA: (int -> int) +module Test4343c = val typename<'a> : string val typename2<'a> : string * string -end -module Test4343d = begin - val xList : int list - val xArray : int [] - val xString : string - val xOption : int option - val xArray2 : (int * int) [,] - val xSeq : seq -end -module Test4343e = begin +module Test4343d = + val xList: int list + val xArray: int [] + val xString: string + val xOption: int option + val xArray2: (int * int) [,] + val xSeq: seq +module Test4343e = type C = - new : x:int -> C - val cA : C - val cB : C - val cAB : C * C * C list + new: x: int -> C + val cA: C + val cB: C + val cAB: C * C * C list type D = - new : x:int -> D - override ToString : unit -> string - val dA : D - val dB : D - val dAB : D * D * D list - module Generic = begin + new: x: int -> D + override ToString: unit -> string + val dA: D + val dB: D + val dAB: D * D * D list + module Generic = type CGeneric<'a> = - new : x:'a -> CGeneric<'a> - val cA : C - val cB : C - val cAB : C * C * C list + new: x: 'a -> CGeneric<'a> + val cA: C + val cB: C + val cAB: C * C * C list type D<'a> = - new : x:'a -> D<'a> - override ToString : unit -> string - val dA : D - val dB : D - val dAB : D * D * D list - val dC : D - val boxed_dABC : obj list - end -end + new: x: 'a -> D<'a> + override ToString: unit -> string + val dA: D + val dB: D + val dAB: D * D * D list + val dC: D + val boxed_dABC: obj list type F1 = inherit System.Windows.Forms.Form interface System.IDisposable val x: F1 val x2: F1 - member B : unit -> int - member D : x:int -> int + 2 overloads - abstract member MMM : bool -> bool - override ToString : unit -> string - static member A : unit -> int - static member C : unit -> int - abstract member AAA : int - abstract member BBB : bool with set - member D2 : int - member E : int - abstract member ZZZ : int + member B: unit -> int + member D: x: int -> int + 2 overloads + abstract member MMM: bool -> bool + override ToString: unit -> string + static member A: unit -> int + static member C: unit -> int + abstract member AAA: int + abstract member BBB: bool with set + member D2: int + member E: int + abstract member ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] type IP = - new : x:int * y:int -> IP + new: x: int * y: int -> IP static val mutable private AA: IP -module Regression4643 = begin +module Regression4643 = [] type RIP = - new : x:int -> RIP + new: x: int -> RIP static val mutable private y: RIP [] type arg_unused_is_RIP = - new : x:RIP -> arg_unused_is_RIP + new: x: RIP -> arg_unused_is_RIP [] type arg_used_is_RIP = - new : x:RIP -> arg_used_is_RIP - member X : RIP + new: x: RIP -> arg_used_is_RIP + member X: RIP [] type field_is_RIP = val x: RIP -end type Either<'a,'b> = | This of 'a | That of 'b -val catch : f:(unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure : Either -val seqFindFailure : Either -val seqPickFailure : Either -module Regression5218 = begin - val t1 : int - val t2 : int * int - val t3 : int * int * int - val t4 : int * int * int * int - val t5 : int * int * int * int * int - val t6 : int * int * int * int * int * int - val t7 : int * int * int * int * int * int * int - val t8 : int * int * int * int * int * int * int * int - val t9 : int * int * int * int * int * int * int * int * int - val t10 : int * int * int * int * int * int * int * int * int * int - val t11 : int * int * int * int * int * int * int * int * int * int * int - val t12 : +val catch: f: (unit -> 'a) -> Either<'a,(string * string)> +val seqFindIndexFailure: Either +val seqFindFailure: Either +val seqPickFailure: Either +module Regression5218 = + val t1: int + val t2: int * int + val t3: int * int * int + val t4: int * int * int * int + val t5: int * int * int * int * int + val t6: int * int * int * int * int * int + val t7: int * int * int * int * int * int * int + val t8: int * int * int * int * int * int * int * int + val t9: int * int * int * int * int * int * int * int * int + val t10: int * int * int * int * int * int * int * int * int * int + val t11: int * int * int * int * int * int * int * int * int * int * int + val t12: int * int * int * int * int * int * int * int * int * int * int * int - val t13 : + val t13: int * int * int * int * int * int * int * int * int * int * int * int * int - val t14 : + val t14: int * int * int * int * int * int * int * int * int * int * int * int * int * int - val t15 : + val t15: int * int * int * int * int * int * int * int * int * int * int * int * int * int * int -end -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3739 = begin +> module Regression3739 = type IB = - abstract member AbstractMember : int -> int + abstract member AbstractMember: int -> int type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end + new: unit -> C<'a> + static member StaticMember: x: 'a -> int -> module Regression3740 = begin +> module Regression3740 = type Writer<'a> = - abstract member get_path : unit -> string + abstract member get_path: unit -> string type MyClass = interface Writer val path: string -end > type Regression4319_T2 = - static member ( +-+-+ ) : x:'a * y:'b -> string + static member ( +-+-+ ): x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member ( +-+-+ ): string > type Regression4319_T1 = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x:'a -> string + static member ( +-+-+ ): x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x:('a * 'b) -> string + static member ( +-+-+ ): x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x:(int * int) -> string + static member ( +-+-+ ): x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x:'a -> moreArgs:'b -> string + static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x:'a * y:'b -> moreArgs:'c -> string + static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x:'a * y:'b * z:'c -> moreArgs:'d -> string + static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string - static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string - static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string - static member ( * ) : string - static member ( - ) : string + static member ( & ): string + static member ( &^ ): string + static member ( @ ): string + static member ( != ): string + static member ( := ): string + static member ( ^ ): string + static member ( / ): string + static member ( $ ): string + static member ( ...@ ): string + static member ( ...!= ): string + static member ( .../ ): string + static member ( ...= ): string + static member ( ...> ): string + static member ( ...^ ): string + static member ( ...< ): string + static member ( ...* ): string + static member ( ...% ): string + static member ( = ): string + static member ( ** ): string + static member ( > ): string + static member ( < ): string + static member ( % ): string + static member ( * ): string + static member ( - ): string > Expect ABC = ABC type Regression4469 = - new : unit -> Regression4469 - member ToString : unit -> string -val r4469 : Regression4469 -val it : unit + new: unit -> Regression4469 + member ToString: unit -> string +val r4469: Regression4469 +val it: unit > Expect ABC = ABC -val it : unit = () +val it: unit = () -> module Regression1019_short = begin - val double_nan : float - val double_infinity : float - val single_nan : float32 - val single_infinity : float32 -end -module Regression1019_long = begin - val double_nan : float - val double_infinity : float - val single_nan : float32 - val single_infinity : float32 -end +> module Regression1019_short = + val double_nan: float + val double_infinity: float + val single_nan: float32 + val single_infinity: float32 +module Regression1019_long = + val double_nan: float + val double_infinity: float + val single_nan: float32 + val single_infinity: float32 -> val it : int ref = { contents = 1 } +> val it: int ref = { contents = 1 } -> val x : int ref -val f : (unit -> int) +> val x: int ref +val f: (unit -> int) -> val it : int = 1 +> val it: int = 1 -> val it : unit = () +> val it: unit = () -> val it : int = 3 +> val it: int = 3 -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : int [] = +> val it: int [] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it : 'a list +> val it: 'a list -> val it : 'a list list +> val it: 'a list list -> val it : 'a option +> val it: 'a option -> val it : 'a list * 'b list +> val it: 'a list * 'b list -> val it : x:'a -> 'a +> val it: x: 'a -> 'a -> val fff : x:'a -> 'a +> val fff: x: 'a -> 'a -> val it : ('a -> 'a) +> val it: ('a -> 'a) -> val note_ExpectDupMethod : string +> val note_ExpectDupMethod: string -> > val note_ExpectDupProperty : string +> > val note_ExpectDupProperty: string -> > > val it : string = "NOTE: Expect IAPrivate less accessible IBPublic" +> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" -> > val it : string = "NOTE: Expect IAPrivate less accessible IBInternal" +> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" -> > module Regression5265_PriPri = begin +> > module Regression5265_PriPri = type private IAPrivate = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract member Q: int -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" +> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" -> > module Regression5265_IntInt = begin +> > module Regression5265_IntInt = type internal IAInternal = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract member P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract member P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract member P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract member Q: int -> val it : string = +> val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" -> > val it : string = +> > val it: string = "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" > type AnAxHostSubClass = inherit System.Windows.Forms.AxHost - new : x:string -> AnAxHostSubClass + new: x: string -> AnAxHostSubClass -> val it : string = +> val it: string = "** Expect error because the active pattern result contains free type variables" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (match value generic)" -> > val it : string = +> > val it: string = "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" -> > val it : string = +> > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x:int -> Choice +> val ( |A|B| ): x: int -> Choice -> val it : string = "** Expect error since active pattern is not a function!" +> val it: string = "** Expect error since active pattern is not a function!" -> > val it : string = +> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p:bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval:'a -> bval:'b -> x:bool -> Choice<'a,'b> +> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> -> val it : string = +> val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" -> val outer : x:'a -> (int -> 'a option) +> val outer: x: 'a -> (int -> 'a option) -> val it : string = +> val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a:int -> int * 'a option +> val ( |Check1| ): a: int -> int * 'a option -> > module ReflectionEmit = begin +> > module ReflectionEmit = type IA = - abstract member M : #IB -> int + abstract member M: #IB -> int and IB = - abstract member M : #IA -> int + abstract member M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int + abstract member M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end + abstract member M: int -> val it : string = +> val it: string = "Regression_139182: Expect the follow code to be accepted without error" > [] type S = - member TheMethod : unit -> int64 -val theMethod : s:S -> int64 + member TheMethod: unit -> int64 +val theMethod: s: S -> int64 type T = - new : unit -> T - member Prop5 : int64 - static member Prop1 : int64 - static member Prop2 : int64 - static member Prop3 : int64 - static member Prop4 : string + new: unit -> T + member Prop5: int64 + static member Prop1: int64 + static member Prop2: int64 + static member Prop3: int64 + static member Prop4: string -> val it : System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] +> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; + Values = ?;}] > type MyDU = | Case1 of Val1: int * Val2: string @@ -1597,8 +1569,8 @@ type T = | Case5 of bool * string | Case6 of Val1: int * bool * string | Case7 of Big Name: int -val namedFieldVar1 : MyDU -val namedFieldVar2 : MyDU +val namedFieldVar1: MyDU +val namedFieldVar2: MyDU > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -1607,15 +1579,15 @@ exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float exception MyNamedException7 of Big Named Field: int -val namedEx1 : exn -val namedEx2 : exn +val namedEx1: exn +val namedEx2: exn > type optionRecord = { x: int option } -val x : optionRecord +val x: optionRecord > type optionRecord = { x: obj } -val x : optionRecord +val x: optionRecord > > > diff --git a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl index 4ae32a6ed01..50f1d16cc58 100644 --- a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M : 'U -> int' and 'abstract member Regression4232.D.M : 'T -> int' +stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' let (|A|B|) (x:int) = A x;; diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs index 3be5dba44ae..dd63013392d 100644 --- a/tests/fsharp/tests.fs +++ b/tests/fsharp/tests.fs @@ -1066,39 +1066,39 @@ module CoreTests = | diffs -> Assert.Fail (sprintf "'%s' and '%s' differ; %A" diffFileErr expectedFileErr diffs) [] - let ``printing-1 --langversion:4_7`` () = + let ``printing-default-stdout-47 --langversion:4_7`` () = printing "--langversion:4.7" "z.output.test.default.stdout.47.txt" "z.output.test.default.stdout.47.bsl" "z.output.test.default.stderr.txt" "z.output.test.default.stderr.bsl" [] - let ``printing-1 --langversion:5_0`` () = + let ``printing-default-stdout-50 --langversion:5_0`` () = printing "--langversion:5.0" "z.output.test.default.stdout.50.txt" "z.output.test.default.stdout.50.bsl" "z.output.test.default.stderr.txt" "z.output.test.default.stderr.bsl" [] - let ``printing-2 --langversion:4_7`` () = + let ``printing-1000-stdout-47 --langversion:4_7`` () = printing "--langversion:4.7 --use:preludePrintSize1000.fsx" "z.output.test.1000.stdout.47.txt" "z.output.test.1000.stdout.47.bsl" "z.output.test.1000.stderr.txt" "z.output.test.1000.stderr.bsl" [] - let ``printing-2 --langversion:5_0`` () = + let ``printing-1000-stdout-50 --langversion:5_0`` () = printing "--langversion:5.0 --use:preludePrintSize1000.fsx" "z.output.test.1000.stdout.50.txt" "z.output.test.1000.stdout.50.bsl" "z.output.test.1000.stderr.txt" "z.output.test.1000.stderr.bsl" [] - let ``printing-3 --langversion:4_7`` () = + let ``printing-200-stdout-47 --langversion:4_7`` () = printing "--langversion:4.7 --use:preludePrintSize200.fsx" "z.output.test.200.stdout.47.txt" "z.output.test.200.stdout.47.bsl" "z.output.test.200.stderr.txt" "z.output.test.200.stderr.bsl" [] - let ``printing-3 --langversion:5_0`` () = + let ``printing-200-stdout-50 --langversion:5_0`` () = printing "--langversion:5.0 --use:preludePrintSize200.fsx" "z.output.test.200.stdout.50.txt" "z.output.test.200.stdout.50.bsl" "z.output.test.200.stderr.txt" "z.output.test.200.stderr.bsl" [] - let ``printing-4 --langversion:4_7`` () = + let ``printing-off-stdout-47 --langversion:4_7`` () = printing "--langversion:4.7 --use:preludeShowDeclarationValuesFalse.fsx" "z.output.test.off.stdout.47.txt" "z.output.test.off.stdout.47.bsl" "z.output.test.off.stderr.txt" "z.output.test.off.stderr.bsl" [] - let ``printing-4 --langversion:5_0`` () = + let ``printing-off-stdout-50 --langversion:5_0`` () = printing "--langversion:5.0 --use:preludeShowDeclarationValuesFalse.fsx" "z.output.test.off.stdout.50.txt" "z.output.test.off.stdout.50.bsl" "z.output.test.off.stderr.txt" "z.output.test.off.stderr.bsl" [] - let ``printing-5`` () = + let ``printing-quiet-stdout`` () = printing "--quiet" "z.output.test.quiet.stdout.txt" "z.output.test.quiet.stdout.bsl" "z.output.test.quiet.stderr.txt" "z.output.test.quiet.stderr.bsl" type SigningType = From ebd109085bc37d339d9f66b6db33f1229e4e0448 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Tue, 31 Aug 2021 22:18:54 +0100 Subject: [PATCH 02/25] printing updates --- src/fsharp/NicePrint.fs | 96 ++--- .../E_NotMemberOrFunction01.fsx | 4 +- .../TypeInferenceVariable01.fsx | 2 +- .../printing/z.output.test.1000.stdout.47.bsl | 334 ++++++++-------- .../printing/z.output.test.1000.stdout.50.bsl | 334 ++++++++-------- .../printing/z.output.test.200.stdout.47.bsl | 362 +++++++++--------- .../printing/z.output.test.200.stdout.50.bsl | 362 +++++++++--------- .../z.output.test.default.stdout.47.bsl | 334 ++++++++-------- .../z.output.test.default.stdout.50.bsl | 334 ++++++++-------- .../printing/z.output.test.off.stdout.47.bsl | 318 +++++++-------- .../printing/z.output.test.off.stdout.50.bsl | 318 +++++++-------- .../neg_generic_known_argument_types.bsl | 6 +- ...n_return_type_and_known_type_arguments.bsl | 36 +- tests/fsharp/typecheck/sigs/neg10.bsl | 4 +- tests/fsharp/typecheck/sigs/neg112.bsl | 6 +- tests/fsharp/typecheck/sigs/neg117.bsl | 4 +- tests/fsharp/typecheck/sigs/neg119.bsl | 2 +- tests/fsharp/typecheck/sigs/neg26.bsl | 2 +- tests/fsharp/typecheck/sigs/neg45.fs | 18 +- tests/fsharp/typecheck/sigs/neg98.bsl | 4 +- .../fsc/noframework/noframework01.fsx | 4 +- .../Generator/Generator.fs | 4 +- .../LetBindings/Basic/E_Literals02.fsi | 4 +- .../BindingExpressions/Binding/in02.fsx | 2 +- .../BindingExpressions/Binding/in03.fsx | 2 +- .../BindingExpressions/Binding/in04.fsx | 2 +- .../ExpressionQuotations/Baselines/E_Cast.fs | 2 +- .../E_GenInterfaceWGenMethods01.fs | 2 +- .../E_NoMoreValueRestriction01.fs | 4 +- .../NoMoreValueRestriction01.fs | 2 +- .../E_NotMemberOrFunction01.fsx | 4 +- .../TypeInferenceVariable01.fsx | 2 +- .../W_NonGenVarInValueRestrictionWarning.fs | 4 +- .../TypeChecker/W_LessGeneric01.fsx | 4 +- .../Diagnostics/NONTERM/fileModuleImpl03b.fs | 2 +- .../Misc/DefaultReferences.fsx | 6 +- .../Misc/DontShowCompilerGenNames01.fsx | 6 +- .../InteractiveSession/Misc/EmptyList.fsx | 2 +- .../Misc/InterfaceCrossConstrained01.fsx | 4 +- .../Misc/InterfaceCrossConstrained02.fsx | 4 +- .../Misc/NativeIntSuffix01.fs | 2 +- .../Misc/NoExpansionOfAbbrevUoMInFSI.fsx | 2 +- .../InteractiveSession/Misc/PublicField.fsx | 2 +- .../Misc/ReferenceFullPathGenTest.fsx | 4 +- .../Misc/ReflectionBugOnMono6433.fsx | 6 +- .../Misc/ReflectionTypeNameMangling01.fsx | 6 +- .../SubtypeArgInterfaceWithAbstractMember.fsx | 6 +- .../InteractiveSession/Misc/ToStringNull.fsx | 2 +- .../Misc/UNativeIntSuffix01.fs | 2 +- .../Misc/UnitConstInput_6323.fsx | 2 +- .../Misc/UnitConstInput_6323b.fsx | 4 +- .../Misc/VerbatimIdentifier01.fsx | 6 +- .../Source/Printing/BindingsWithValues01.fsx | 60 +-- tests/fsharpqa/Source/Printing/Choice01.fsx | 6 +- .../fsharpqa/Source/Printing/LazyValues01.fsx | 8 +- .../Source/Printing/LazyValues01NetFx4.fsx | 8 +- .../fsharpqa/Source/Printing/LazyValues02.fsx | 12 +- .../Source/Printing/LazyValues02NetFx4.fsx | 12 +- .../fsharpqa/Source/Printing/LazyValues03.fsx | 2 +- .../Source/Printing/LazyValues03NetFx4.fsx | 2 +- tests/fsharpqa/Source/Printing/Quotation01.fs | 2 +- .../UnitsOfMeasureIdentifiersRoundTrip01.fsx | 6 +- .../UnitsOfMeasureIdentifiersRoundTrip02.fsx | 6 +- .../UnitsOfMeasuresGenericSignature01.fsx | 2 +- .../UnitsOfMeasuresGenericSignature02.fsx | 2 +- .../Source/Printing/VariantTypes01.fs | 2 +- .../Source/Printing/array2D.blit_01.fsx | 18 +- tests/fsharpqa/Source/Printing/array2D_01.fsx | 12 +- tests/service/EditorTests.fs | 6 +- tests/service/FsiTests.fs | 2 +- .../ProvidedTypes.fsi | 10 +- vsintegration/tests/Salsa/VsMocks.fs | 2 +- .../Tests.LanguageService.Completion.fs | 20 +- .../Tests.LanguageService.ErrorList.fs | 14 +- .../Tests.LanguageService.ParameterInfo.fs | 10 +- .../Tests.LanguageService.QuickInfo.fs | 188 ++++----- .../tests/UnitTests/QuickInfoProviderTests.fs | 36 +- .../tests/UnitTests/QuickInfoTests.fs | 20 +- 78 files changed, 1730 insertions(+), 1728 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 2f870a92472..80d8a879c2d 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -3,6 +3,9 @@ /// Print Signatures/Types, for signatures, intellisense, quick info, FSI responses module internal FSharp.Compiler.NicePrint +open System +open System.Globalization +open System.IO open Internal.Utilities.Collections open Internal.Utilities.Library open Internal.Utilities.Library.Extras @@ -40,10 +43,20 @@ module internal PrintUtilities = let braceBarL x = wordL leftBraceBar ^^ x ^^ wordL rightBraceBar - let addColonL l = if endsWithL ">" l then l ^^ WordL.colon else l ^^ RightL.colon + // Use a space before a colon if there is an unusual character to the left + let addColonL l = + if endsWithL ">" l || endsWithL ")" l || endsWithL "`" l then + l ^^ WordL.colon + else + l ^^ RightL.colon let comment str = wordL (tagText (sprintf "(* %s *)" str)) + let ensureFloat (s: string) = + if String.forall (fun c -> Char.IsDigit c || c = '-') s then + s + ".0" + else s + let layoutsL (ls: Layout list) : Layout = match ls with | [] -> emptyL @@ -100,10 +113,17 @@ module internal PrintUtilities = String.dropSuffix name "Attribute" else name - let tyconTextL = + + let tyconTagged = tagEntityRefName tcref demangled |> mkNav tcref.DefinitionRange - |> wordL + + let tyconTextL = + if demangled.StartsWith "[" then + tyconTagged |> rightL + else + tyconTagged |> wordL + if denv.shortTypeNames then tyconTextL else @@ -125,11 +145,9 @@ module internal PrintUtilities = /// layout the xml docs immediately before another block let layoutXmlDoc (denv: DisplayEnv) (xml: XmlDoc) restL = - if denv.showDocumentation - then + if denv.showDocumentation then let xmlDocL = - if xml.IsEmpty - then + if xml.IsEmpty then emptyL else xml.UnprocessedLines @@ -150,7 +168,7 @@ module internal PrintUtilities = if possibleXmlDoc.IsEmpty then match info with | Some(Some ccuFileName, xmlDocSig) -> - infoReader.amap.assemblyLoader.TryFindXmlDocumentationInfo(System.IO.Path.GetFileNameWithoutExtension ccuFileName) + infoReader.amap.assemblyLoader.TryFindXmlDocumentationInfo(Path.GetFileNameWithoutExtension ccuFileName) |> Option.bind (fun xmlDocInfo -> xmlDocInfo.TryGetXmlDocBySig(xmlDocSig) ) @@ -262,7 +280,7 @@ module private PrintIL = let numParams = // can't find a way to see the number of generic parameters for *this* class (the GenericParams also include type variables for enclosing classes); this will have to do let rightMost = className |> SplitNamesForILPath |> List.last - match System.Int32.TryParse(rightMost, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture) with + match Int32.TryParse(rightMost, NumberStyles.Integer, CultureInfo.InvariantCulture) with | true, n -> n | false, _ -> 0 // looks like it's non-generic ilTyparSubst |> List.rev |> List.truncate numParams |> List.rev @@ -306,9 +324,10 @@ module private PrintIL = | Some init -> match init with | ILFieldInit.Bool x -> - if x - then Some keywordTrue - else Some keywordFalse + if x then + Some keywordTrue + else + Some keywordFalse | ILFieldInit.Char c -> ("'" + (char c).ToString () + "'") |> (tagStringLiteral >> Some) | ILFieldInit.Int8 x -> ((x |> int32 |> string) + "y") |> (tagNumericLiteral >> Some) | ILFieldInit.Int16 x -> ((x |> int32 |> string) + "s") |> (tagNumericLiteral >> Some) @@ -319,18 +338,12 @@ module private PrintIL = | ILFieldInit.UInt32 x -> (x |> int64 |> string) + "u" |> (tagNumericLiteral >> Some) | ILFieldInit.UInt64 x -> ((x |> int64 |> string) + "UL") |> (tagNumericLiteral >> Some) | ILFieldInit.Single d -> - let s = d.ToString ("g12", System.Globalization.CultureInfo.InvariantCulture) - let s = - if String.forall (fun c -> System.Char.IsDigit c || c = '-') s - then s + ".0" - else s + let s = d.ToString ("g12", CultureInfo.InvariantCulture) + let s = ensureFloat s (s + "f") |> (tagNumericLiteral >> Some) | ILFieldInit.Double d -> - let s = d.ToString ("g12", System.Globalization.CultureInfo.InvariantCulture) - let s = - if String.forall (fun c -> System.Char.IsDigit c || c = '-') s - then (s + ".0") - else s + let s = d.ToString ("g12", CultureInfo.InvariantCulture) + let s = ensureFloat s s |> (tagNumericLiteral >> Some) | _ -> None | None -> None @@ -358,15 +371,13 @@ module private PrintTypes = | Const.IntPtr x -> (x |> string)+"n" |> tagNumericLiteral | Const.UIntPtr x -> (x |> string)+"un" |> tagNumericLiteral | Const.Single d -> - ((let s = d.ToString("g12", System.Globalization.CultureInfo.InvariantCulture) - if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s - then s + ".0" - else s) + "f") |> tagNumericLiteral + let s = d.ToString("g12", CultureInfo.InvariantCulture) + let s = ensureFloat s + (s + "f") |> tagNumericLiteral | Const.Double d -> - let s = d.ToString("g12", System.Globalization.CultureInfo.InvariantCulture) - (if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s - then s + ".0" - else s) |> tagNumericLiteral + let s = d.ToString("g12", CultureInfo.InvariantCulture) + let s = ensureFloat s + s |> tagNumericLiteral | Const.Char c -> "'" + c.ToString() + "'" |> tagStringLiteral | Const.String bs -> "\"" + bs + "\"" |> tagNumericLiteral | Const.Unit -> "()" |> tagPunctuation @@ -494,17 +505,15 @@ module private PrintTypes = | ILAttribElem.UInt64 x -> wordL (tagNumericLiteral ((x |> string)+"UL")) | ILAttribElem.Single x -> let str = - let s = x.ToString("g12", System.Globalization.CultureInfo.InvariantCulture) - (if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s - then s + ".0" - else s) + "f" + let s = x.ToString("g12", CultureInfo.InvariantCulture) + let s = ensureFloat s + s + "f" wordL (tagNumericLiteral str) | ILAttribElem.Double x -> let str = - let s = x.ToString("g12", System.Globalization.CultureInfo.InvariantCulture) - if String.forall (fun c -> System.Char.IsDigit(c) || c = '-') s - then s + ".0" - else s + let s = x.ToString("g12", CultureInfo.InvariantCulture) + let s = ensureFloat s + s wordL (tagNumericLiteral str) | ILAttribElem.Null -> wordL (tagKeyword "null") | ILAttribElem.Array (_, xs) -> @@ -750,6 +759,7 @@ module private PrintTypes = layoutTypeWithInfoAndPrec denv env prec (reduceTyconRefMeasureableOrProvided denv.g tc args) // Layout a type application + | TType_ucase (UnionCaseRef(tc, _), args) | TType_app (tc, args) -> let usePrefix = match denv.genericParameterStyle with @@ -758,14 +768,6 @@ module private PrintTypes = | GenericParameterStyle.Suffix -> false layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefImpl denv tc) prec usePrefix args - | TType_ucase (UnionCaseRef(tc, _), args) -> - let usePrefix = - match denv.genericParameterStyle with - | GenericParameterStyle.Implicit -> tc.IsPrefixDisplay - | GenericParameterStyle.Prefix -> true - | GenericParameterStyle.Suffix -> false - layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefImpl denv tc) prec usePrefix args - // Layout a tuple type | TType_anon (anonInfo, tys) -> let core = sepListL (rightL (tagPunctuation ";")) (List.map2 (fun nm ty -> wordL (tagField nm) ^^ rightL (tagPunctuation ":") ^^ layoutTypeWithInfoAndPrec denv env prec ty) (Array.toList anonInfo.SortedNames) tys) @@ -2232,7 +2234,7 @@ let stringOfMethInfo infoReader m denv minfo = let multiLineStringOfMethInfos infoReader m denv minfos = minfos |> List.map (stringOfMethInfo infoReader m denv) - |> List.map (sprintf "%s %s" System.Environment.NewLine) + |> List.map (sprintf "%s %s" Environment.NewLine) |> String.concat "" /// Convert a ParamData to a string diff --git a/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx b/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx index 9a3d2351965..182fb04be48 100644 --- a/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx +++ b/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx @@ -1,9 +1,9 @@ // #Conformance #ObjectOrientedTypes #Classes #TypeInference #ValueRestriction -//Value restriction\. The value 'x1' has been inferred to have generic type. val x1 : \('_a -> unit\) .Either make the arguments to 'x1' explicit or, if you do not intend for it to be generic, add a type annotation\.$ +//Value restriction\. The value 'x1' has been inferred to have generic type. val x1: \('_a -> unit\) .Either make the arguments to 'x1' explicit or, if you do not intend for it to be generic, add a type annotation\.$ // We expect a value restriction here. The inferred signature is: -// val x1 : (?1 -> unit) +// val x1: (?1 -> unit) // Here 'x1' is not a member/function. Further, looking at the signature alone, the type inference // variable could have feasibly be genrealized at 'x1' (c.f. the case above, where it // was generalized). diff --git a/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx b/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx index baceab8e5db..56b49d2466d 100644 --- a/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx +++ b/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx @@ -3,7 +3,7 @@ // // We expect no value restriction here. The inferred signature is: -// val x0 : ('T -> unit) +// val x0: ('T -> unit) // Here the type inference variable is generalized at 'x0'. let f0 (x:obj) = () let x0 = f0 diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index d48c27a4dac..53048b2a45d 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -13,7 +13,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -24,7 +24,7 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -35,14 +35,14 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs: System.Windows.Forms.Form [] = +val fs: System.Windows.Forms.Form[] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -153,7 +153,7 @@ val xs: string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa: string [] = +val xa: string[] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -163,14 +163,14 @@ val xa: string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val xa2: string[,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] val sxs0: Set = set [] > val sxs1: Set = set ["0"] @@ -203,7 +203,7 @@ val sxs0: Set = set [] val a: string = "sub-binding" val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option = + (string list * string list * string[,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; @@ -247,7 +247,7 @@ val opt5: int list option option option option option list = 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] val mkStr: n: int -> string -val strs: string [] = +val strs: string[] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -325,7 +325,7 @@ val strs: string [] = "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]; ...|] -val str7s: string [] = +val str7s: string[] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -423,7 +423,7 @@ val str7s: string [] = "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]; ...|] -val grids: string [,] = +val grids: string[,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -867,7 +867,7 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C = -val csA: C [] = +val csA: C[] = [|; ; ; ; ; ; @@ -918,7 +918,7 @@ val csA: C [] = ; ; ; ; ; ; ...|] -val csB: C [] = +val csB: C[] = [|; ; ; ; ; ; @@ -969,7 +969,7 @@ val csB: C [] = ; ; ; ; ; ; ...|] -val csC: C [] = +val csC: C[] = [|; ; ; ; ; ; @@ -1079,10 +1079,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > val it: string = "Check #help" @@ -1231,7 +1231,7 @@ val r10: r = { f0 = 0 f7 = 7 f8 = 8 f9 = 9 } -val r10s: r [] = +val r10s: r[] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -1278,7 +1278,7 @@ val r10s: r [] = f7 = 7 f8 = 8 f9 = 9 }; ...|] -val r10s': string * r [] = +val r10s': string * r[] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -1465,11 +1465,11 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list = [1; 2; 3] - val xArray: int [] = [|1; 2; 3|] + val xArray: int[] = [|1; 2; 3|] val xString: string = "abcdef" val xOption: int option = Some 12 - val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] + val xArray2: (int * int)[,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] val xSeq: seq module Test4343e = type C = @@ -1605,63 +1605,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -1695,707 +1695,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -2492,19 +2492,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -2514,7 +2514,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index 28a77bedcab..9b2212a23af 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -13,7 +13,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -24,7 +24,7 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -35,14 +35,14 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs: System.Windows.Forms.Form [] = +val fs: System.Windows.Forms.Form[] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -153,7 +153,7 @@ val xs: string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa: string [] = +val xa: string[] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -163,14 +163,14 @@ val xa: string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val xa2: string[,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] val sxs0: Set = set [] > val sxs1: Set = set ["0"] @@ -203,7 +203,7 @@ val sxs0: Set = set [] val a: string = "sub-binding" val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option = + (string list * string list * string[,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; @@ -247,7 +247,7 @@ val opt5: int list option option option option option list = 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] val mkStr: n: int -> string -val strs: string [] = +val strs: string[] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -325,7 +325,7 @@ val strs: string [] = "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]; ...|] -val str7s: string [] = +val str7s: string[] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -423,7 +423,7 @@ val str7s: string [] = "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]; ...|] -val grids: string [,] = +val grids: string[,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -867,7 +867,7 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C = -val csA: C [] = +val csA: C[] = [|; ; ; ; ; ; @@ -918,7 +918,7 @@ val csA: C [] = ; ; ; ; ; ; ...|] -val csB: C [] = +val csB: C[] = [|; ; ; ; ; ; @@ -969,7 +969,7 @@ val csB: C [] = ; ; ; ; ; ; ...|] -val csC: C [] = +val csC: C[] = [|; ; ; ; ; ; @@ -1079,10 +1079,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > val it: string = "Check #help" @@ -1233,7 +1233,7 @@ val r10: r = { f0 = 0 f7 = 7 f8 = 8 f9 = 9 } -val r10s: r [] = +val r10s: r[] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -1280,7 +1280,7 @@ val r10s: r [] = f7 = 7 f8 = 8 f9 = 9 }; ...|] -val r10s': string * r [] = +val r10s': string * r[] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -1467,11 +1467,11 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list = [1; 2; 3] - val xArray: int [] = [|1; 2; 3|] + val xArray: int[] = [|1; 2; 3|] val xString: string = "abcdef" val xOption: int option = Some 12 - val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] + val xArray2: (int * int)[,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] val xSeq: seq module Test4343e = type C = @@ -1607,63 +1607,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -1697,707 +1697,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -2494,19 +2494,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -2516,7 +2516,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index 56f33c4bdbb..c9818981ca6 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -13,7 +13,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -24,7 +24,7 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -35,14 +35,14 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs: System.Windows.Forms.Form [] = +val fs: System.Windows.Forms.Form[] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -66,13 +66,13 @@ val fs: System.Windows.Forms.Form [] = val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...] -val xa: string [] = +val xa: string[] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...|] -val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; ...] - ...] +val xa2: string[,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; ...] + ...] val sxs0: Set = set [] > val sxs1: Set = set ["0"] @@ -105,7 +105,7 @@ val sxs0: Set = set [] val a: string = "sub-binding" val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option = + (string list * string list * string[,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; @@ -135,12 +135,12 @@ val opt5: int list option option option option option list = Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some (Some (Some (Some ...))); ...] val mkStr: n: int -> string -val strs: string [] = +val strs: string[] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; "-----------------"; "------------------"; "-------------------"; ...|] -val str7s: string [] = +val str7s: string[] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -158,7 +158,7 @@ val str7s: string [] = "-------------------------------------------------------------"+[65 chars]; "-------------------------------------------------------------"+[72 chars]; ...|] -val grids: string [,] = +val grids: string[,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ...] ...] @@ -307,7 +307,7 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C = -val csA: C [] = +val csA: C[] = [|; ; ; ; ; ; @@ -318,7 +318,7 @@ val csA: C [] = ; ; ; ; ; ; ...|] -val csB: C [] = +val csB: C[] = [|; ; ; ; ; ; @@ -329,7 +329,7 @@ val csB: C [] = ; ; ; ; ; ; ...|] -val csC: C [] = +val csC: C[] = [|; ; ; ; ; ; @@ -399,10 +399,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > val it: string = "Check #help" @@ -551,26 +551,26 @@ val r10: r = { f0 = 0 f7 = 7 f8 = 8 f9 = 9 } -val r10s: r [] = [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 }; ...|] -val r10s': string * r [] = ("one extra node", [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = ... }; ...|]) +val r10s: r[] = [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 }; ...|] +val r10s': string * r[] = ("one extra node", [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = ... }; ...|]) > val x1564_A1: int = 1 @@ -710,11 +710,11 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list = [1; 2; 3] - val xArray: int [] = [|1; 2; 3|] + val xArray: int[] = [|1; 2; 3|] val xString: string = "abcdef" val xOption: int option = Some 12 - val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] + val xArray2: (int * int)[,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] val xSeq: seq module Test4343e = type C = @@ -850,63 +850,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -940,707 +940,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -1737,19 +1737,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1759,7 +1759,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index f49046b54bf..cac19da585a 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -13,7 +13,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -24,7 +24,7 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -35,14 +35,14 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs: System.Windows.Forms.Form [] = +val fs: System.Windows.Forms.Form[] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -66,13 +66,13 @@ val fs: System.Windows.Forms.Form [] = val xs: string list = ["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...] -val xa: string [] = +val xa: string[] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; ...|] -val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; ...] - ...] +val xa2: string[,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; ...] + ...] val sxs0: Set = set [] > val sxs1: Set = set ["0"] @@ -105,7 +105,7 @@ val sxs0: Set = set [] val a: string = "sub-binding" val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option = + (string list * string list * string[,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; @@ -135,12 +135,12 @@ val opt5: int list option option option option option list = Some (Some (Some (Some (Some [1; 2; 3; 4; 5; 6])))); Some (Some (Some (Some ...))); ...] val mkStr: n: int -> string -val strs: string [] = +val strs: string[] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; "-----------------"; "------------------"; "-------------------"; ...|] -val str7s: string [] = +val str7s: string[] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -158,7 +158,7 @@ val str7s: string [] = "-------------------------------------------------------------"+[65 chars]; "-------------------------------------------------------------"+[72 chars]; ...|] -val grids: string [,] = +val grids: string[,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ...] ...] @@ -307,7 +307,7 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C = -val csA: C [] = +val csA: C[] = [|; ; ; ; ; ; @@ -318,7 +318,7 @@ val csA: C [] = ; ; ; ; ; ; ...|] -val csB: C [] = +val csB: C[] = [|; ; ; ; ; ; @@ -329,7 +329,7 @@ val csB: C [] = ; ; ; ; ; ; ...|] -val csC: C [] = +val csC: C[] = [|; ; ; ; ; ; @@ -399,10 +399,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > val it: string = "Check #help" @@ -553,26 +553,26 @@ val r10: r = { f0 = 0 f7 = 7 f8 = 8 f9 = 9 } -val r10s: r [] = [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = 9 }; ...|] -val r10s': string * r [] = ("one extra node", [|{ f0 = 0 - f1 = 1 - f2 = 2 - f3 = 3 - f4 = 4 - f5 = 5 - f6 = 6 - f7 = 7 - f8 = 8 - f9 = ... }; ...|]) +val r10s: r[] = [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = 9 }; ...|] +val r10s': string * r[] = ("one extra node", [|{ f0 = 0 + f1 = 1 + f2 = 2 + f3 = 3 + f4 = 4 + f5 = 5 + f6 = 6 + f7 = 7 + f8 = 8 + f9 = ... }; ...|]) > val x1564_A1: int = 1 @@ -712,11 +712,11 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list = [1; 2; 3] - val xArray: int [] = [|1; 2; 3|] + val xArray: int[] = [|1; 2; 3|] val xString: string = "abcdef" val xOption: int option = Some 12 - val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] + val xArray2: (int * int)[,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] val xSeq: seq module Test4343e = type C = @@ -852,63 +852,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -942,707 +942,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -1739,19 +1739,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1761,7 +1761,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index 42af9640a55..39fbb98d75e 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -11,7 +11,7 @@ namespace FSI_0004 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0005 @@ -22,7 +22,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0005 @@ -33,14 +33,14 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs: System.Windows.Forms.Form [] = +val fs: System.Windows.Forms.Form[] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -151,7 +151,7 @@ val xs: string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa: string [] = +val xa: string[] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -161,14 +161,14 @@ val xa: string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val xa2: string[,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] val sxs0: Set = set [] > val sxs1: Set = set ["0"] @@ -201,7 +201,7 @@ val sxs0: Set = set [] val a: string = "sub-binding" val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option = + (string list * string list * string[,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; @@ -262,7 +262,7 @@ val opt5: int list option option option option option list = 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] val mkStr: n: int -> string -val strs: string [] = +val strs: string[] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -339,7 +339,7 @@ val strs: string [] = "-------------------------------------------------------------"+[36 chars]; "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]|] -val str7s: string [] = +val str7s: string[] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -436,7 +436,7 @@ val str7s: string [] = "-------------------------------------------------------------"+[618 chars]; "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]|] -val grids: string [,] = +val grids: string[,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -3826,7 +3826,7 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C = -val csA: C [] = +val csA: C[] = [|; ; ; ; ; ; @@ -3877,7 +3877,7 @@ val csA: C [] = ; ; ; ; ; ; ...|] -val csB: C [] = +val csB: C[] = [|; ; ; ; ; ; @@ -3928,7 +3928,7 @@ val csB: C [] = ; ; ; ; ; ; ...|] -val csC: C [] = +val csC: C[] = [|; ; ; ; ; ; @@ -4038,10 +4038,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > val it: string = "Check #help" @@ -4190,7 +4190,7 @@ val r10: r = { f0 = 0 f7 = 7 f8 = 8 f9 = 9 } -val r10s: r [] = +val r10s: r[] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -4531,7 +4531,7 @@ val r10s: r [] = f7 = 7 f8 = 8 f9 = 9 }|] -val r10s': string * r [] = +val r10s': string * r[] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -5012,11 +5012,11 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list = [1; 2; 3] - val xArray: int [] = [|1; 2; 3|] + val xArray: int[] = [|1; 2; 3|] val xString: string = "abcdef" val xOption: int option = Some 12 - val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] + val xArray2: (int * int)[,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] val xSeq: seq module Test4343e = type C = @@ -5152,63 +5152,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -5242,707 +5242,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -6039,19 +6039,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -6061,7 +6061,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index 6da776b06b5..a48ebadd2e3 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -11,7 +11,7 @@ namespace FSI_0004 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0005 @@ -22,7 +22,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0005 @@ -33,14 +33,14 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form = System.Windows.Forms.Form, Text: f1 form -val fs: System.Windows.Forms.Form [] = +val fs: System.Windows.Forms.Form[] = [|System.Windows.Forms.Form, Text: fs #0; System.Windows.Forms.Form, Text: fs #1; System.Windows.Forms.Form, Text: fs #2; @@ -151,7 +151,7 @@ val xs: string list = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...] -val xa: string [] = +val xa: string[] = [|"0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"; "18"; "19"; "20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"; "28"; "29"; "30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"; @@ -161,14 +161,14 @@ val xa: string [] = "74"; "75"; "76"; "77"; "78"; "79"; "80"; "81"; "82"; "83"; "84"; "85"; "86"; "87"; "88"; "89"; "90"; "91"; "92"; "93"; "94"; "95"; "96"; "97"; "98"; "99"; ...|] -val xa2: string [,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] - ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] - ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] - ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] - ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] - ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] - ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] - ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] +val xa2: string[,] = [["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"] + ["10"; "11"; "12"; "13"; "14"; "15"; "16"; "17"] + ["20"; "21"; "22"; "23"; "24"; "25"; "26"; "27"] + ["30"; "31"; "32"; "33"; "34"; "35"; "36"; "37"] + ["40"; "41"; "42"; "43"; "44"; "45"; "46"; "47"] + ["50"; "51"; "52"; "53"; "54"; "55"; "56"; "57"] + ["60"; "61"; "62"; "63"; "64"; "65"; "66"; "67"] + ["70"; "71"; "72"; "73"; "74"; "75"; "76"; "77"]] val sxs0: Set = set [] > val sxs1: Set = set ["0"] @@ -201,7 +201,7 @@ val sxs0: Set = set [] val a: string = "sub-binding" val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option = + (string list * string list * string[,]) option = (Some (, , , System.Windows.Forms.Form, Text: f1 form), Some (["0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; "8"; "9"; "10"; "11"; "12"; @@ -262,7 +262,7 @@ val opt5: int list option option option option option list = 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 1; 2; 3; 4; 5; 6; 7; 8; 9; 0]))))] val mkStr: n: int -> string -val strs: string [] = +val strs: string[] = [|""; "-"; "--"; "---"; "----"; "-----"; "------"; "-------"; "--------"; "---------"; "----------"; "-----------"; "------------"; "-------------"; "--------------"; "---------------"; "----------------"; @@ -339,7 +339,7 @@ val strs: string [] = "-------------------------------------------------------------"+[36 chars]; "-------------------------------------------------------------"+[37 chars]; "-------------------------------------------------------------"+[38 chars]|] -val str7s: string [] = +val str7s: string[] = [|""; "-------"; "--------------"; "---------------------"; "----------------------------"; "-----------------------------------"; "------------------------------------------"; @@ -436,7 +436,7 @@ val str7s: string [] = "-------------------------------------------------------------"+[618 chars]; "-------------------------------------------------------------"+[625 chars]; "-------------------------------------------------------------"+[632 chars]|] -val grids: string [,] = +val grids: string[,] = [[""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""; ""] @@ -3826,7 +3826,7 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C = -val csA: C [] = +val csA: C[] = [|; ; ; ; ; ; @@ -3877,7 +3877,7 @@ val csA: C [] = ; ; ; ; ; ; ...|] -val csB: C [] = +val csB: C[] = [|; ; ; ; ; ; @@ -3928,7 +3928,7 @@ val csB: C [] = ; ; ; ; ; ; ...|] -val csC: C [] = +val csC: C[] = [|; ; ; ; ; ; @@ -4038,10 +4038,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > module RepeatedModule = - val repeatedByteLiteral: byte [] = [|12uy; 13uy; 14uy|] + val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] > val it: string = "Check #help" @@ -4192,7 +4192,7 @@ val r10: r = { f0 = 0 f7 = 7 f8 = 8 f9 = 9 } -val r10s: r [] = +val r10s: r[] = [|{ f0 = 0 f1 = 1 f2 = 2 @@ -4533,7 +4533,7 @@ val r10s: r [] = f7 = 7 f8 = 8 f9 = 9 }|] -val r10s': string * r [] = +val r10s': string * r[] = ("one extra node", [|{ f0 = 0 f1 = 1 @@ -5014,11 +5014,11 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list = [1; 2; 3] - val xArray: int [] = [|1; 2; 3|] + val xArray: int[] = [|1; 2; 3|] val xString: string = "abcdef" val xOption: int option = Some 12 - val xArray2: (int * int) [,] = [[(0, 0); (0, 1)] - [(1, 0); (1, 1)]] + val xArray2: (int * int)[,] = [[(0, 0); (0, 1)] + [(1, 0); (1, 1)]] val xSeq: seq module Test4343e = type C = @@ -5154,63 +5154,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -5244,707 +5244,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -6041,19 +6041,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -6063,7 +6063,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index ee5efa04d2b..11e4dbb6ad3 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -13,7 +13,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -24,7 +24,7 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -35,17 +35,17 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form -val fs: System.Windows.Forms.Form [] +val fs: System.Windows.Forms.Form[] val xs: string list -val xa: string [] -val xa2: string [,] +val xa: string[] +val xa2: string[,] val sxs0: Set > val sxs1: Set @@ -74,7 +74,7 @@ val sxs0: Set val a: string val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option + (string list * string list * string[,]) option type T = new: a: int * b: int -> T member AMethod: x: int -> int @@ -97,9 +97,9 @@ val opt4: 'a option option option option val opt4b: int option option option option val opt5: int list option option option option option list val mkStr: n: int -> string -val strs: string [] -val str7s: string [] -val grids: string [,] +val strs: string[] +val str7s: string[] +val grids: string[,] > type tree = | L @@ -164,9 +164,9 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C -val csA: C [] -val csB: C [] -val csC: C [] +val csA: C[] +val csB: C[] +val csC: C[] > exception Abc @@ -226,10 +226,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] + val repeatedByteLiteral: byte[] > module RepeatedModule = - val repeatedByteLiteral: byte [] + val repeatedByteLiteral: byte[] > val it: string = "Check #help" @@ -369,8 +369,8 @@ type 'a T1Pre with f8: int f9: int } val r10: r -val r10s: r [] -val r10s': string * r [] +val r10s: r[] +val r10s': string * r[] > val x1564_A1: int @@ -501,10 +501,10 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list - val xArray: int [] + val xArray: int[] val xString: string val xOption: int option - val xArray2: (int * int) [,] + val xArray2: (int * int)[,] val xSeq: seq module Test4343e = type C = @@ -622,63 +622,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -712,707 +712,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -1507,19 +1507,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1529,7 +1529,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index 571416a9f07..f41b2b0bd6c 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -13,7 +13,7 @@ namespace FSI_0005 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -24,7 +24,7 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy namespace FSI_0006 @@ -35,17 +35,17 @@ namespace FSI_0006 val x5: 'a list val x6: int list val x7: System.Windows.Forms.Form - val x8: int [,] + val x8: int[,] val x9: Lazy > val x1: seq val x2: seq val x3: seq val f1: System.Windows.Forms.Form -val fs: System.Windows.Forms.Form [] +val fs: System.Windows.Forms.Form[] val xs: string list -val xa: string [] -val xa2: string [,] +val xa: string[] +val xa2: string[,] val sxs0: Set > val sxs1: Set @@ -74,7 +74,7 @@ val sxs0: Set val a: string val b: (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string [,]) option + (string list * string list * string[,]) option type T = new: a: int * b: int -> T member AMethod: x: int -> int @@ -97,9 +97,9 @@ val opt4: 'a option option option option val opt4b: int option option option option val opt5: int list option option option option option list val mkStr: n: int -> string -val strs: string [] -val str7s: string [] -val grids: string [,] +val strs: string[] +val str7s: string[] +val grids: string[,] > type tree = | L @@ -164,9 +164,9 @@ val generate: x: int -> X new: x: string -> C override ToString: unit -> string val c1: C -val csA: C [] -val csB: C [] -val csC: C [] +val csA: C[] +val csB: C[] +val csC: C[] > exception Abc @@ -226,10 +226,10 @@ type 'a T4063 = | AT4063 of 'a > val it: (unit -> string) = > module RepeatedModule = - val repeatedByteLiteral: byte [] + val repeatedByteLiteral: byte[] > module RepeatedModule = - val repeatedByteLiteral: byte [] + val repeatedByteLiteral: byte[] > val it: string = "Check #help" @@ -371,8 +371,8 @@ type 'a T1Pre with f8: int f9: int } val r10: r -val r10s: r [] -val r10s': string * r [] +val r10s: r[] +val r10s': string * r[] > val x1564_A1: int @@ -503,10 +503,10 @@ module Test4343c = val typename2<'a> : string * string module Test4343d = val xList: int list - val xArray: int [] + val xArray: int[] val xString: string val xOption: int option - val xArray2: (int * int) [,] + val xArray2: (int * int)[,] val xSeq: seq module Test4343e = type C = @@ -624,63 +624,63 @@ module Regression5218 = val path: string > type Regression4319_T2 = - static member ( +-+-+ ): x: 'a * y: 'b -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ): string + static member ( +-+-+ ) : string > type Regression4319_T1 = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ): x: 'a -> string + static member ( +-+-+ ) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ): x: ('a * 'b) -> string + static member ( +-+-+ ) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ): x: (int * int) -> string + static member ( +-+-+ ) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ): x: 'a -> moreArgs: 'b -> string + static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ): x: 'a * y: 'b -> moreArgs: 'c -> string + static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ): x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ): string - static member ( &^ ): string - static member ( @ ): string - static member ( != ): string - static member ( := ): string - static member ( ^ ): string - static member ( / ): string - static member ( $ ): string - static member ( ...@ ): string - static member ( ...!= ): string - static member ( .../ ): string - static member ( ...= ): string - static member ( ...> ): string - static member ( ...^ ): string - static member ( ...< ): string - static member ( ...* ): string - static member ( ...% ): string - static member ( = ): string - static member ( ** ): string - static member ( > ): string - static member ( < ): string - static member ( % ): string - static member ( * ): string - static member ( - ): string + static member ( & ) : string + static member ( &^ ) : string + static member ( @ ) : string + static member ( != ) : string + static member ( := ) : string + static member ( ^ ) : string + static member ( / ) : string + static member ( $ ) : string + static member ( ...@ ) : string + static member ( ...!= ) : string + static member ( .../ ) : string + static member ( ...= ) : string + static member ( ...> ) : string + static member ( ...^ ) : string + static member ( ...< ) : string + static member ( ...* ) : string + static member ( ...% ) : string + static member ( = ) : string + static member ( ** ) : string + static member ( > ) : string + static member ( < ) : string + static member ( % ) : string + static member ( * ) : string + static member ( - ) : string > Expect ABC = ABC type Regression4469 = @@ -714,707 +714,707 @@ val f: (unit -> int) > val it: int = 3 -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; ...|] -> val it: int [] = +> val it: int[] = [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; @@ -1509,19 +1509,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ): x: int -> Choice +> val ( |A|B| ) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ): p: bool -> 'a * 'b -> Choice<'a,'b> +> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ): aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1531,7 +1531,7 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ): a: int -> int * 'a option +> val ( |Check1| ) : a: int -> int * 'a option > > module ReflectionEmit = type IA = diff --git a/tests/fsharp/typecheck/overloads/neg_generic_known_argument_types.bsl b/tests/fsharp/typecheck/overloads/neg_generic_known_argument_types.bsl index 8567bfa1055..ee9b9d3dde2 100644 --- a/tests/fsharp/typecheck/overloads/neg_generic_known_argument_types.bsl +++ b/tests/fsharp/typecheck/overloads/neg_generic_known_argument_types.bsl @@ -1,8 +1,8 @@ neg_generic_known_argument_types.fsx(9,16,9,49): typecheck error FS0041: A unique overload for method 'Foo' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known types of arguments: ^fa * 'fb * 'a * argD:'c when ^fa : (member X : ^fa * ^b -> ^b) and ^b : (member BBBB : ^b -> unit) +Known types of arguments: ^fa * 'fb * 'a * argD: 'c when ^fa: (member X: ^fa * ^b -> ^b) and ^b: (member BBBB: ^b -> unit) Candidates: - - static member A.Foo : argA1:'a * argB1:('a -> 'b) * argC1:('a -> 'b) * argD:('a -> 'b) * argZ1:'zzz -> 'b - - static member A.Foo : argA2:'a * argB2:('a -> 'b) * argC2:('b -> 'c) * argD:('c -> 'd) * argZ2:'zzz -> 'd + - static member A.Foo: argA1: 'a * argB1: ('a -> 'b) * argC1: ('a -> 'b) * argD: ('a -> 'b) * argZ1: 'zzz -> 'b + - static member A.Foo: argA2: 'a * argB2: ('a -> 'b) * argC2: ('b -> 'c) * argD: ('c -> 'd) * argZ2: 'zzz -> 'd diff --git a/tests/fsharp/typecheck/overloads/neg_known_return_type_and_known_type_arguments.bsl b/tests/fsharp/typecheck/overloads/neg_known_return_type_and_known_type_arguments.bsl index 700fc0eb9fb..9dadb19ee6e 100644 --- a/tests/fsharp/typecheck/overloads/neg_known_return_type_and_known_type_arguments.bsl +++ b/tests/fsharp/typecheck/overloads/neg_known_return_type_and_known_type_arguments.bsl @@ -6,21 +6,21 @@ Known return type: MonoidSample Known type parameters: < MonoidSample , Zero > Available overloads: - - static member Zero.Zero : ^t * Default1 -> ^t when ^t : (static member get_Zero : -> ^t) // Argument at index 1 doesn't match - - static member Zero.Zero : ^t * Default1 -> ('a1 -> 'a1) when ^t : null and ^t : struct // Argument at index 1 doesn't match - - static member Zero.Zero : ^t * Default2 -> ^t when (FromInt32 or ^t) : (static member FromInt32 : ^t * FromInt32 -> (int32 -> ^t)) // Argument at index 1 doesn't match - - static member Zero.Zero : ^t * Default2 -> ('a1 -> 'a1) when ^t : null and ^t : struct // Argument at index 1 doesn't match - - static member Zero.Zero : ^t * Default3 -> ^t when ^t : (static member get_Empty : -> ^t) // Argument at index 1 doesn't match - - static member Zero.Zero : 'a array * Zero -> 'a array // Argument at index 1 doesn't match - - static member Zero.Zero : 'a list * Zero -> 'a list // Argument at index 1 doesn't match - - static member Zero.Zero : 'a option * Zero -> 'a option // Argument at index 1 doesn't match - - static member Zero.Zero : ('T -> ^Monoid) * Zero -> ('T -> ^Monoid) when (Zero or ^Monoid) : (static member Zero : ^Monoid * Zero -> ^Monoid) // Argument at index 1 doesn't match - - static member Zero.Zero : Async< ^a> * Zero -> Async< ^a> when (Zero or ^a) : (static member Zero : ^a * Zero -> ^a) // Argument at index 1 doesn't match - - static member Zero.Zero : Lazy< ^a> * Zero -> Lazy< ^a> when (Zero or ^a) : (static member Zero : ^a * Zero -> ^a) // Argument at index 1 doesn't match - - static member Zero.Zero : Map<'a,'b> * Zero -> Map<'a,'b> when 'a : comparison // Argument at index 1 doesn't match - - static member Zero.Zero : ResizeArray<'a> * Zero -> ResizeArray<'a> // Argument at index 1 doesn't match - - static member Zero.Zero : Set<'a> * Zero -> Set<'a> when 'a : comparison // Argument at index 1 doesn't match - - static member Zero.Zero : System.TimeSpan * Zero -> System.TimeSpan // Argument at index 1 doesn't match - - static member Zero.Zero : seq<'a> * Zero -> seq<'a> // Argument at index 1 doesn't match - - static member Zero.Zero : string * Zero -> string // Argument at index 1 doesn't match - - static member Zero.Zero : unit * Zero -> unit // Argument at index 1 doesn't match + - static member Zero.Zero: ^t * Default1 -> ^t when ^t: (static member get_Zero: -> ^t) // Argument at index 1 doesn't match + - static member Zero.Zero: ^t * Default1 -> ('a1 -> 'a1) when ^t: null and ^t: struct // Argument at index 1 doesn't match + - static member Zero.Zero: ^t * Default2 -> ^t when (FromInt32 or ^t) : (static member FromInt32: ^t * FromInt32 -> (int32 -> ^t)) // Argument at index 1 doesn't match + - static member Zero.Zero: ^t * Default2 -> ('a1 -> 'a1) when ^t: null and ^t: struct // Argument at index 1 doesn't match + - static member Zero.Zero: ^t * Default3 -> ^t when ^t: (static member get_Empty: -> ^t) // Argument at index 1 doesn't match + - static member Zero.Zero: 'a array * Zero -> 'a array // Argument at index 1 doesn't match + - static member Zero.Zero: 'a list * Zero -> 'a list // Argument at index 1 doesn't match + - static member Zero.Zero: 'a option * Zero -> 'a option // Argument at index 1 doesn't match + - static member Zero.Zero: ('T -> ^Monoid) * Zero -> ('T -> ^Monoid) when (Zero or ^Monoid) : (static member Zero: ^Monoid * Zero -> ^Monoid) // Argument at index 1 doesn't match + - static member Zero.Zero: Async< ^a> * Zero -> Async< ^a> when (Zero or ^a) : (static member Zero: ^a * Zero -> ^a) // Argument at index 1 doesn't match + - static member Zero.Zero: Lazy< ^a> * Zero -> Lazy< ^a> when (Zero or ^a) : (static member Zero: ^a * Zero -> ^a) // Argument at index 1 doesn't match + - static member Zero.Zero: Map<'a,'b> * Zero -> Map<'a,'b> when 'a: comparison // Argument at index 1 doesn't match + - static member Zero.Zero: ResizeArray<'a> * Zero -> ResizeArray<'a> // Argument at index 1 doesn't match + - static member Zero.Zero: Set<'a> * Zero -> Set<'a> when 'a: comparison // Argument at index 1 doesn't match + - static member Zero.Zero: System.TimeSpan * Zero -> System.TimeSpan // Argument at index 1 doesn't match + - static member Zero.Zero: seq<'a> * Zero -> seq<'a> // Argument at index 1 doesn't match + - static member Zero.Zero: string * Zero -> string // Argument at index 1 doesn't match + - static member Zero.Zero: unit * Zero -> unit // Argument at index 1 doesn't match diff --git a/tests/fsharp/typecheck/sigs/neg10.bsl b/tests/fsharp/typecheck/sigs/neg10.bsl index efbe9b93b80..5e897ad9f16 100644 --- a/tests/fsharp/typecheck/sigs/neg10.bsl +++ b/tests/fsharp/typecheck/sigs/neg10.bsl @@ -57,7 +57,7 @@ neg10.fs(131,23,131,29): typecheck error FS0906: Type abbreviations cannot have neg10.fs(169,32,169,35): typecheck error FS0035: This construct is deprecated: This form of object expression is not used in F#. Use 'member this.MemberName ... = ...' to define member implementations in object expressions. -neg10.fs(169,32,169,33): typecheck error FS3213: The member 'X : unit -> 'a' matches multiple overloads of the same method. +neg10.fs(169,32,169,33): typecheck error FS3213: The member 'X: unit -> 'a' matches multiple overloads of the same method. Please restrict it to one of the following: X : unit -> 'a X : unit -> 'a. @@ -70,7 +70,7 @@ neg10.fs(180,10,180,11): typecheck error FS0866: Interfaces cannot contain defin neg10.fs(193,39,193,46): typecheck error FS0767: The type Foo contains the member 'MyX' but it is not a virtual or abstract method that is available to override or implement. -neg10.fs(193,41,193,44): typecheck error FS0017: The member 'MyX : unit -> int' does not have the correct type to override any given virtual method +neg10.fs(193,41,193,44): typecheck error FS0017: The member 'MyX: unit -> int' does not have the correct type to override any given virtual method neg10.fs(193,20,193,23): typecheck error FS0783: At least one override did not correctly implement its corresponding abstract member diff --git a/tests/fsharp/typecheck/sigs/neg112.bsl b/tests/fsharp/typecheck/sigs/neg112.bsl index 68db38df095..e6d4ed7bc8e 100644 --- a/tests/fsharp/typecheck/sigs/neg112.bsl +++ b/tests/fsharp/typecheck/sigs/neg112.bsl @@ -1,6 +1,6 @@ -neg112.fs(20,49,20,62): typecheck error FS0001: A type parameter is missing a constraint 'when (Tuple or ^options) : (static member TupleMap : ^options * Tuple -> (('item -> ^value) -> ^values))' +neg112.fs(20,49,20,62): typecheck error FS0001: A type parameter is missing a constraint 'when (Tuple or ^options) : (static member TupleMap: ^options * Tuple -> (('item -> ^value) -> ^values))' -neg112.fs(20,31,20,39): typecheck error FS0043: A type parameter is missing a constraint 'when (Tuple or ^options) : (static member TupleMap : ^options * Tuple -> (('item -> ^value) -> ^values))' +neg112.fs(20,31,20,39): typecheck error FS0043: A type parameter is missing a constraint 'when (Tuple or ^options) : (static member TupleMap: ^options * Tuple -> (('item -> ^value) -> ^values))' -neg112.fs(20,31,20,39): typecheck error FS0043: A type parameter is missing a constraint 'when (Tuple or ^options) : (static member TupleMap : ^options * Tuple -> (('item -> ^value) -> ^values))' +neg112.fs(20,31,20,39): typecheck error FS0043: A type parameter is missing a constraint 'when (Tuple or ^options) : (static member TupleMap: ^options * Tuple -> (('item -> ^value) -> ^values))' diff --git a/tests/fsharp/typecheck/sigs/neg117.bsl b/tests/fsharp/typecheck/sigs/neg117.bsl index 9ad81d0003f..5dea2c245f6 100644 --- a/tests/fsharp/typecheck/sigs/neg117.bsl +++ b/tests/fsharp/typecheck/sigs/neg117.bsl @@ -6,5 +6,5 @@ Known return type: ('a -> Neg117.TargetA.M1 Microsoft.FSharp.Core.[]) Known type parameters: < Neg117.TargetA.M1 Microsoft.FSharp.Core.[] , Microsoft.FSharp.Core.obj , Neg117.Superpower.Transformer > Available overloads: - - static member Neg117.Superpower.Transformer.Transform : ^f * Neg117.TargetB.TargetB * Neg117.Superpower.Transformer -> (Neg117.TargetB.TransformerKind -> ^f) when (Neg117.TargetB.TargetB or ^f) : (static member Transform : ^f * Neg117.TargetB.TargetB -> (Neg117.TargetB.TransformerKind -> ^f)) // Argument at index 1 doesn't match - - static member Neg117.Superpower.Transformer.Transform : ^r * Neg117.TargetA.TargetA * Neg117.Superpower.Transformer -> (Neg117.TargetA.TransformerKind -> ^r) when (Neg117.TargetA.TargetA or ^r) : (static member Transform : ^r * Neg117.TargetA.TargetA -> (Neg117.TargetA.TransformerKind -> ^r)) // Argument at index 1 doesn't match + - static member Neg117.Superpower.Transformer.Transform : ^f * Neg117.TargetB.TargetB * Neg117.Superpower.Transformer -> (Neg117.TargetB.TransformerKind -> ^f) when (Neg117.TargetB.TargetB or ^f) : (static member Transform: ^f * Neg117.TargetB.TargetB -> (Neg117.TargetB.TransformerKind -> ^f)) // Argument at index 1 doesn't match + - static member Neg117.Superpower.Transformer.Transform : ^r * Neg117.TargetA.TargetA * Neg117.Superpower.Transformer -> (Neg117.TargetA.TransformerKind -> ^r) when (Neg117.TargetA.TargetA or ^r) : (static member Transform: ^r * Neg117.TargetA.TargetA -> (Neg117.TargetA.TransformerKind -> ^r)) // Argument at index 1 doesn't match diff --git a/tests/fsharp/typecheck/sigs/neg119.bsl b/tests/fsharp/typecheck/sigs/neg119.bsl index 975fc46185a..e19bbd6581d 100644 --- a/tests/fsharp/typecheck/sigs/neg119.bsl +++ b/tests/fsharp/typecheck/sigs/neg119.bsl @@ -8,5 +8,5 @@ Known type parameters: < obj , Applicatives.Ap > Available overloads: - static member Applicatives.Ap.Return : ('r -> 'a) * Ap:Applicatives.Ap -> (('a -> 'r -> 'a2) -> 'a3 -> 'a -> 'r -> 'a2) // Argument at index 1 doesn't match - static member Applicatives.Ap.Return : System.Tuple<'a> * Ap:Applicatives.Ap -> ('a -> System.Tuple<'a>) // Argument at index 1 doesn't match - - static member Applicatives.Ap.Return : r: ^R * obj -> ('a1 -> ^R) when ^R : (static member Return : 'a1 -> ^R) // Argument 'r' doesn't match + - static member Applicatives.Ap.Return : r: ^R * obj -> ('a1 -> ^R) when ^R : (static member Return: 'a1 -> ^R) // Argument 'r' doesn't match - static member Applicatives.Ap.Return : seq<'a> * Ap:Applicatives.Ap -> ('a -> seq<'a>) // Argument at index 1 doesn't match Consider adding further type constraints diff --git a/tests/fsharp/typecheck/sigs/neg26.bsl b/tests/fsharp/typecheck/sigs/neg26.bsl index 74a0337d928..7347454e992 100644 --- a/tests/fsharp/typecheck/sigs/neg26.bsl +++ b/tests/fsharp/typecheck/sigs/neg26.bsl @@ -5,7 +5,7 @@ neg26.fs(27,13,27,66): typecheck error FS0366: No implementation was given for ' neg26.fs(40,27,40,32): typecheck error FS0361: The override 'Meth1 : int -> int' implements more than one abstract slot, e.g. 'abstract member ITestSub.Meth1 : int -> int' and 'abstract member ITest.Meth1 : int -> int' -neg26.fs(53,27,53,32): typecheck error FS3213: The member 'Meth1 : 'a -> 'a' matches multiple overloads of the same method. +neg26.fs(53,27,53,32): typecheck error FS3213: The member 'Meth1: 'a -> 'a' matches multiple overloads of the same method. Please restrict it to one of the following: Meth1 : int -> int Meth1 : int -> int. diff --git a/tests/fsharp/typecheck/sigs/neg45.fs b/tests/fsharp/typecheck/sigs/neg45.fs index 2958041e5e4..3f651a02211 100644 --- a/tests/fsharp/typecheck/sigs/neg45.fs +++ b/tests/fsharp/typecheck/sigs/neg45.fs @@ -70,15 +70,15 @@ module CheckThatNoConstraintPropagationHappensForTypeParameters = member x.P = 1 type Negative1<'T> = C<'T> - type Negative2<'T>() = inherit C<'T>() /// EXPECT ERROR - type Negative3<'T >() = abstract X : C<'T> /// EXPECT ERROR - type Negative4<'T > = UnionCase1 of C<'T> /// EXPECT ERROR - type Negative5<'T > = { rf1 : C<'T> } /// EXPECT ERROR - type Negative6<'T >(rf1: C<'T>) = struct end /// EXPECT ERROR - type Negative7<'T > = val rf1 : C<'T> /// EXPECT ERROR - type Negative8<'T >(c: C<'T>) = member x.P = 1 /// EXPECT ERROR - type Negative9<'T>(x : C<'T> when 'T :> System.IComparable) = member x.P = 1 /// EXPECT ERROR - type Negative10<'T when 'T :> C<'T> > = member x.P = 1 /// EXPECT ERROR + type Negative2<'T>() = inherit C<'T>() // EXPECT ERROR + type Negative3<'T >() = abstract X : C<'T> // EXPECT ERROR + type Negative4<'T > = UnionCase1 of C<'T> // EXPECT ERROR + type Negative5<'T > = { rf1 : C<'T> } // EXPECT ERROR + type Negative6<'T >(rf1: C<'T>) = struct end // EXPECT ERROR + type Negative7<'T > = val rf1 : C<'T> // EXPECT ERROR + type Negative8<'T >(c: C<'T>) = member x.P = 1 // EXPECT ERROR + type Negative9<'T>(x : C<'T> when 'T :> System.IComparable) = member x.P = 1 // EXPECT ERROR + type Negative10<'T when 'T :> C<'T> > = member x.P = 1 // EXPECT ERROR module CheckNoOverloadResolutionAgainstSignatureInformationGivenByTUpledAndRecordPatterns = diff --git a/tests/fsharp/typecheck/sigs/neg98.bsl b/tests/fsharp/typecheck/sigs/neg98.bsl index 1aef477debf..0ec384e7e58 100644 --- a/tests/fsharp/typecheck/sigs/neg98.bsl +++ b/tests/fsharp/typecheck/sigs/neg98.bsl @@ -1,8 +1,8 @@ neg98.fs(10,20,10,34): typecheck error FS0768: The member 'Eval' does not accept the correct number of arguments. 2 argument(s) are expected, but 2 were given. The required signature is 'member Evaluator.Eval : ('t -> 'u) -> 'u list -> 'ret'. -neg98.fs(10,23,10,27): typecheck error FS0017: The member 'Eval : 'a * 'b -> 'c' does not have the correct type to override the corresponding abstract method. The required signature is 'Eval<'u> : ('t -> 'u) -> 'u list -> 'a'. +neg98.fs(10,23,10,27): typecheck error FS0017: The member 'Eval: 'a * 'b -> 'c' does not have the correct type to override the corresponding abstract method. The required signature is 'Eval<'u> : ('t -> 'u) -> 'u list -> 'a'. -neg98.fs(10,23,10,27): typecheck error FS0367: The member 'Eval : 'a * 'b -> 'c' does not have the correct number of arguments. The required signature is 'Eval<'u> : ('t -> 'u) -> 'u list -> 'a'. +neg98.fs(10,23,10,27): typecheck error FS0367: The member 'Eval: 'a * 'b -> 'c' does not have the correct number of arguments. The required signature is 'Eval<'u> : ('t -> 'u) -> 'u list -> 'a'. neg98.fs(9,22,9,36): typecheck error FS0783: At least one override did not correctly implement its corresponding abstract member diff --git a/tests/fsharpqa/Source/CompilerOptions/fsc/noframework/noframework01.fsx b/tests/fsharpqa/Source/CompilerOptions/fsc/noframework/noframework01.fsx index 758e6cfc2ae..6799d820b70 100644 --- a/tests/fsharpqa/Source/CompilerOptions/fsc/noframework/noframework01.fsx +++ b/tests/fsharpqa/Source/CompilerOptions/fsc/noframework/noframework01.fsx @@ -3,8 +3,8 @@ // System.Func<...> is in System.Core.dll (NetFx3.5) -//val f : d:System\.Func -> int -//val it : int = 11 +//val f: d: System\.Func -> int +//val it: int = 11 let f ( d : System.Func ) = d.Invoke() + 1;; diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/ArgumentsOfAllTypes/Generator/Generator.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/ArgumentsOfAllTypes/Generator/Generator.fs index 2a4dfb3b27e..fe688dcec26 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/ArgumentsOfAllTypes/Generator/Generator.fs +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/CustomAttributes/ArgumentsOfAllTypes/Generator/Generator.fs @@ -5,7 +5,7 @@ // type T1() = class end // let t1 = (typeof.GetCustomAttributes(false) |> Array.map (fun x -> x :?> System.Attribute)).[0] // t1 -// // val it : System.Attribute = +// // val it: System.Attribute = // // CSAttributes.A1Attribute {PositionalString = "X"; // // TypeId = CSAttributes.A1Attribute; // // pa_int = 1;} @@ -15,7 +15,7 @@ // type T1() = class end // let t1 = (typeof.GetCustomAttributes(false) |> Array.map (fun x -> x :?> System.Attribute)).[0] // t1 -// // val it : System.Attribute = +// // val it: System.Attribute = // // CSAttributes.A1Attribute {PositionalString = "A"; // // TypeId = CSAttributes.A1Attribute; // // pa_int = 2;} diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/LetBindings/Basic/E_Literals02.fsi b/tests/fsharpqa/Source/Conformance/DeclarationElements/LetBindings/Basic/E_Literals02.fsi index e530d73ea85..7e04ac9de15 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/LetBindings/Basic/E_Literals02.fsi +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/LetBindings/Basic/E_Literals02.fsi @@ -1,6 +1,6 @@ // #Regression #Conformance #DeclarationElements #LetBindings -//A declaration may only be the \[\] attribute if a constant value is also given, e\.g\. 'val x : int = 1'$ -//A declaration may only be the \[\] attribute if a constant value is also given, e\.g\. 'val x : int = 1'$ +//A declaration may only be the \[\] attribute if a constant value is also given, e\.g\. 'val x: int = 1'$ +//A declaration may only be the \[\] attribute if a constant value is also given, e\.g\. 'val x: int = 1'$ // FSB 1981, Signature must contain the literal value diff --git a/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in02.fsx b/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in02.fsx index e05b179a9d8..49d6d21c084 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in02.fsx +++ b/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in02.fsx @@ -4,7 +4,7 @@ // I'm adding these cases to make sure we do not accidentally change the behavior from version to version // Eventually, we will deprecated them - and the specs will be updated. // -//val it : bool = false$ +//val it: bool = false$ // let a = 3 in a + 1 |> ignore diff --git a/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in03.fsx b/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in03.fsx index 586a72d51d1..1965ad97351 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in03.fsx +++ b/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in03.fsx @@ -4,7 +4,7 @@ // I'm adding these cases to make sure we do not accidentally change the behavior from version to version // Eventually, we will deprecated them - and the specs will be updated. // -//val a : int = 3 +//val a: int = 3 // let a = 3 a + 1 |> ignore diff --git a/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in04.fsx b/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in04.fsx index 85337766783..ef2162aa647 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in04.fsx +++ b/tests/fsharpqa/Source/Conformance/Expressions/BindingExpressions/Binding/in04.fsx @@ -4,7 +4,7 @@ // I'm adding these cases to make sure we do not accidentally change the behavior from version to version // Eventually, we will deprecated them - and the specs will be updated. // -//val it : bool = false +//val it: bool = false // let a = 3 in diff --git a/tests/fsharpqa/Source/Conformance/Expressions/ExpressionQuotations/Baselines/E_Cast.fs b/tests/fsharpqa/Source/Conformance/Expressions/ExpressionQuotations/Baselines/E_Cast.fs index e55f2d161e0..fdfeed0171e 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/ExpressionQuotations/Baselines/E_Cast.fs +++ b/tests/fsharpqa/Source/Conformance/Expressions/ExpressionQuotations/Baselines/E_Cast.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #Quotations // Verify type annotation is required for casting quotes -//Value restriction\. The value 'tq' has been inferred to have generic type. val tq : Expr<'_a> .Either define 'tq' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation\.$ +//Value restriction\. The value 'tq' has been inferred to have generic type. val tq: Expr<'_a> .Either define 'tq' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation\.$ // open Microsoft.FSharp.Quotations diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs index 509ca899548..063c814b08a 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypeInference // FSHARP1.0:1445. See also FSHARP1.0:4721 // Failure when generating code for generic interface with generic method -//Value restriction\. The value 'result' has been inferred to have generic type. val result : '_a array when '_a : equality and '_a : null .Either define 'result' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation\.$ +//Value restriction\. The value 'result' has been inferred to have generic type. val result: '_a array when '_a : equality and '_a : null .Either define 'result' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation\.$ type 'a IFoo = interface abstract DoStuff<'b> : 'a -> 'b array end diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_NoMoreValueRestriction01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_NoMoreValueRestriction01.fs index bda8af6bac2..eb925d7537c 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_NoMoreValueRestriction01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_NoMoreValueRestriction01.fs @@ -2,9 +2,9 @@ // Verify error if you only specify some, but not all, type args //This expression was expected to have type 'char' but here has type 'float32' -let f<'a> x (y : 'a) = (x, y) // used to be error "Value restriction...". In Beta2, it is ok (val f : obj -> 'a -> obj * 'a) +let f<'a> x (y : 'a) = (x, y) // used to be error "Value restriction...". In Beta2, it is ok (val f: obj -> 'a -> obj * 'a) -let p = f 'a' 1 // At this point, (val f : char -> 'a -> char * 'a) +let p = f 'a' 1 // At this point, (val f: char -> 'a -> char * 'a) let q = f 1.f 1 // This is an error! diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/NoMoreValueRestriction01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/NoMoreValueRestriction01.fs index 97af65cbebd..57b549b2e24 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/NoMoreValueRestriction01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/NoMoreValueRestriction01.fs @@ -2,7 +2,7 @@ // Verify error if you only specify some, but not all, type args // -let f<'a> x (y : 'a) = (x, y) // used to be error "Value restriction...". In Beta2, it is ok (val f : obj -> 'a -> obj * 'a) +let f<'a> x (y : 'a) = (x, y) // used to be error "Value restriction...". In Beta2, it is ok (val f: obj -> 'a -> obj * 'a) let p = f 'a' 1 diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx index 9a3d2351965..182fb04be48 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/E_NotMemberOrFunction01.fsx @@ -1,9 +1,9 @@ // #Conformance #ObjectOrientedTypes #Classes #TypeInference #ValueRestriction -//Value restriction\. The value 'x1' has been inferred to have generic type. val x1 : \('_a -> unit\) .Either make the arguments to 'x1' explicit or, if you do not intend for it to be generic, add a type annotation\.$ +//Value restriction\. The value 'x1' has been inferred to have generic type. val x1: \('_a -> unit\) .Either make the arguments to 'x1' explicit or, if you do not intend for it to be generic, add a type annotation\.$ // We expect a value restriction here. The inferred signature is: -// val x1 : (?1 -> unit) +// val x1: (?1 -> unit) // Here 'x1' is not a member/function. Further, looking at the signature alone, the type inference // variable could have feasibly be genrealized at 'x1' (c.f. the case above, where it // was generalized). diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx index baceab8e5db..56b49d2466d 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/ValueRestriction/TypeInferenceVariable01.fsx @@ -3,7 +3,7 @@ // // We expect no value restriction here. The inferred signature is: -// val x0 : ('T -> unit) +// val x0: ('T -> unit) // Here the type inference variable is generalized at 'x0'. let f0 (x:obj) = () let x0 = f0 diff --git a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/Diagnostics/W_NonGenVarInValueRestrictionWarning.fs b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/Diagnostics/W_NonGenVarInValueRestrictionWarning.fs index 671316e2316..12ca2be2ce8 100644 --- a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/Diagnostics/W_NonGenVarInValueRestrictionWarning.fs +++ b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/Diagnostics/W_NonGenVarInValueRestrictionWarning.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #UnitsOfMeasure #Diagnostics // Regression test for FSHARP1.0:4969 // Non-generalized unit-of-measure variables should display with "_" in value restriction warning -//.+val x : float<'_u> list ref -//.+val y : '_a list ref +//.+val x: float<'_u> list ref +//.+val y: '_a list ref let x = ref ([] : float<_> list) let y = ref ([] : _ list) diff --git a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx index a0e07fc02dd..f192e9f2f84 100644 --- a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx +++ b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx @@ -5,8 +5,8 @@ // let fn \(x:float<'u>\) = // ----------------\^\^ //This construct causes code to be less generic than indicated by the type annotations\. The unit-of-measure variable 'u has been constrained to be measure '1'\.$ -//val loop : f:\('a -> 'a\) -> init:'a -> comp:\('a -> 'a -> bool\) -> 'a -//val fn : x:float -> float +//val loop: f: \('a -> 'a\) -> init: 'a -> comp: \('a -> 'a -> bool\) -> 'a +//val fn: x:float -> float let rec loop f init comp = let next = f init diff --git a/tests/fsharpqa/Source/Diagnostics/NONTERM/fileModuleImpl03b.fs b/tests/fsharpqa/Source/Diagnostics/NONTERM/fileModuleImpl03b.fs index 5ead465dd99..ea3b05a44ae 100644 --- a/tests/fsharpqa/Source/Diagnostics/NONTERM/fileModuleImpl03b.fs +++ b/tests/fsharpqa/Source/Diagnostics/NONTERM/fileModuleImpl03b.fs @@ -1,6 +1,6 @@ // #Regression #Diagnostics #ReqNOMT // Regression test for FSHARP1.0:2681 //NONTERM -//val it : char = +//val it: char = '\U00002620';; exit 0;; diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/DefaultReferences.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/DefaultReferences.fsx index ed595872da4..1ebbd0291dc 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/DefaultReferences.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/DefaultReferences.fsx @@ -2,10 +2,10 @@ // Regression for FSB 3594 // Verify System.Core.dll is referenced in FSI by default -//val a : System\.Action +//val a: System\.Action //stuff -//val it : unit = \(\) -//val hs : Collections\.Generic\.HashSet +//val it: unit = \(\) +//val hs: Collections\.Generic\.HashSet //type A = Action //type B = Action diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/DontShowCompilerGenNames01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/DontShowCompilerGenNames01.fsx index 4ee62f9f7c0..71aba802477 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/DontShowCompilerGenNames01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/DontShowCompilerGenNames01.fsx @@ -3,11 +3,11 @@ // Regression test for FSHARP1.0:2549 // See also CL:14579 //type T = -//member M1 : x:int \* y:string -> \('a -> unit\) -//member M2 : \(int \* string\) -> \('a -> unit\) +//member M1: x: int \* y: string -> \('a -> unit\) +//member M2: \(int \* string\) -> \('a -> unit\) //exception ExnType of int \* string //type DiscUnion = \| DataTag of int \* string -//val f : x:int -> y:int -> int +//val f: x: int -> y: int -> int type T = diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/EmptyList.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/EmptyList.fsx index bb0428ae7d9..da86405eec7 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/EmptyList.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/EmptyList.fsx @@ -1,7 +1,7 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:5599 // -//val it : 'a list$ +//val it: 'a list$ [];; #q;; diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx index 6436c722ed8..765908f7e73 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx @@ -3,9 +3,9 @@ // Interfaces cross-constrained via method gps //type IA = -// abstract member M : #IB -> int +// abstract member M: #IB -> int //and IB = -// abstract member M : #IA -> int +// abstract member M: #IA -> int type IA = abstract M : 'a -> int when 'a :> IB diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx index a4fad849e49..7cb6362626a 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx @@ -1,9 +1,9 @@ // #Regression #NoMT #FSI #RequiresENU // Regression test for DEV10#832789 //type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = -// abstract member M : int +// abstract member M: int //and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = -// abstract member M : int +// abstract member M: int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M : int diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/NativeIntSuffix01.fs b/tests/fsharpqa/Source/InteractiveSession/Misc/NativeIntSuffix01.fs index 190ca4a5b95..21c0a233b2b 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/NativeIntSuffix01.fs +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/NativeIntSuffix01.fs @@ -1,7 +1,7 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:4118 // FSI: PrettyPrinting of nativeint or unativeint does not emit the suffix (n or un, respectively) -//val it : nativeint = 2n +//val it: nativeint = 2n nativeint 2;; #q;; diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/NoExpansionOfAbbrevUoMInFSI.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/NoExpansionOfAbbrevUoMInFSI.fsx index a4566d84d22..13b2502a64e 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/NoExpansionOfAbbrevUoMInFSI.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/NoExpansionOfAbbrevUoMInFSI.fsx @@ -1,7 +1,7 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:5056 // F# expands unit-of-measure abbreviations unnecessarily -//val it : float \* float = \(2\.0, 2\.0\) +//val it: float \* float = \(2\.0, 2\.0\) [] type kg [] type m diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/PublicField.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/PublicField.fsx index d3ac670bff1..35488259541 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/PublicField.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/PublicField.fsx @@ -1,6 +1,6 @@ // #Regression #NoMT #FSI // Public fields did not print. -//val it : PublicField = FSI_0002+PublicField \{X = 2; +//val it: PublicField = FSI_0002+PublicField \{X = 2; // Y = 1;\} [] type PublicField = diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/ReferenceFullPathGenTest.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/ReferenceFullPathGenTest.fsx index fc7b8cd5391..badd72da55a 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ReferenceFullPathGenTest.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ReferenceFullPathGenTest.fsx @@ -3,8 +3,8 @@ let fwkdir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirecto let path = System.IO.Path.Combine(fwkdir, "System.Security.dll") printfn "//.+System\\.Security\\.dll" -printfn "//val f : unit -> System\\.Security\\.Cryptography\\.Xml\\.Signature" -printfn "//val it : System\\.Security\\.Cryptography\\.Xml\\.Signature =" +printfn "//val f: unit -> System\\.Security\\.Cryptography\\.Xml\\.Signature" +printfn "//val it: System\\.Security\\.Cryptography\\.Xml\\.Signature =" //printfn "//System\\.Security\\.Cryptography\\.Xml\\.Signature {Id = null;" printfn "//KeyInfo = seq \\[\\];" printfn "//ObjectList = seq \\[\\];" diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionBugOnMono6433.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionBugOnMono6433.fsx index f809bb5df31..30f2110fbd0 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionBugOnMono6433.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionBugOnMono6433.fsx @@ -1,8 +1,8 @@ // Regression test for FSHARP1.0:6433 // This is really a bug in Mono -//val mul : MM -//val factorial : x:int -> int -//val k : int = 120 +//val mul: MM +//val factorial: x: int -> int +//val k: int = 120 type MM() = member x.Combine(a,b) = a * b diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx index 728b9a696b1..ed5040071a9 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx @@ -14,9 +14,9 @@ //Incomplete pattern matches on this expression\. For example, the value 'None' may indicate a case not covered by the pattern\(s\) //type Planet = // new : ipx:float \* ivx:float -> Planet -// member VX : float -// member X : float -//val paintObjects : Planet list +// member VX: float +// member X: float +//val paintObjects: Planet list //type Simulator = // new : unit -> Simulator diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx index 60e90995809..e36ea608cbd 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx @@ -2,11 +2,11 @@ // Regression test for FSHARP1.0:5825 //type I = -// abstract member m : unit +// abstract member m: unit //type C = // interface I -// new : unit -> C -//val f : c:#C -> unit +// new: unit -> C +//val f: c: #C -> unit type I = abstract member m : unit diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/ToStringNull.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/ToStringNull.fsx index cef700e20c5..2f43e9c8d1b 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ToStringNull.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ToStringNull.fsx @@ -2,7 +2,7 @@ // Microsoft.Analysis.Server overrides ToString() to return isNull // instead of a string. This would make FSI fail in pretty-printing // when displaying results. -//val n : NullToString = +//val n: NullToString = type NullToString() = override __.ToString() = null;; diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/UNativeIntSuffix01.fs b/tests/fsharpqa/Source/InteractiveSession/Misc/UNativeIntSuffix01.fs index 38a709ce83f..a3e991331c5 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/UNativeIntSuffix01.fs +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/UNativeIntSuffix01.fs @@ -1,7 +1,7 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:4118 // FSI: PrettyPrinting of nativeint or unativeint does not emit the suffix (n or un, respectively) -//val it : unativeint = 2un +//val it: unativeint = 2un unativeint 2;; #q;; diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323.fsx index 40280db551c..4e9a6318878 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323.fsx @@ -1,4 +1,4 @@ // #NoMT #FSI -//val it : unit = \(\) +//val it: unit = \(\) ();; #q;; \ No newline at end of file diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323b.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323b.fsx index 9947eb92f90..961fbb20bc9 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323b.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/UnitConstInput_6323b.fsx @@ -1,6 +1,6 @@ // #NoMT #FSI -//val it : int = 42 -//val it : unit = \(\) +//val it: int = 42 +//val it: unit = \(\) 42;; ();; #q;; \ No newline at end of file diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx index ccc2e903593..83e4eaa4e7e 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx @@ -1,8 +1,8 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:5675 -//val \( A\.B \) : bool = true -//val \( \.\. \) : bool = true -//val A : bool = true +//val \( A\.B \): bool = true +//val \( \.\. \): bool = true +//val A: bool = true let ``A.B`` = true;; let ``..`` = true;; diff --git a/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx b/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx index 30b453b9fc6..6310ecd5952 100644 --- a/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx +++ b/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx @@ -9,52 +9,52 @@ // \| House // \| Museum // \| Office -//val a : int = 1 -//val B : string = "Hello" -//val c' : RecT = { Name = "F#" } -//val _d : Bldg = Office -//val e : seq -//val F'F : int list = \[3; 2; 1] -//val g : Set -//val g' : Set<'a> -//val getPointF : x:float32 \* y:float32 -> System\.Drawing\.PointF -//val h : System\.Drawing\.PointF = {X=.+, Y=.+} -//val i : int \* RecT \* Bldg = \(1, { Name = "F#" }, Office\) -//val J_ : int \[\] = \[\|1; 2; 3\|] -//val j_' : float \[\] = \[\|1\.0; 1\.0\|] -//val j_'_ : RecT \[\] = \[\|\|] -//val j_'' : string \[\] = \[\|"0"; "1"; "2"; "3"; "4"\|] +//val a: int = 1 +//val B: string = "Hello" +//val c': RecT = { Name = "F#" } +//val _d: Bldg = Office +//val e: seq +//val F'F: int list = \[3; 2; 1] +//val g: Set +//val g': Set<'a> +//val getPointF: x: float32 \* y: float32 -> System\.Drawing\.PointF +//val h: System\.Drawing\.PointF = {X=.+, Y=.+} +//val i: int \* RecT \* Bldg = \(1, { Name = "F#" }, Office\) +//val J_: int \[\] = \[\|1; 2; 3\|] +//val j_': float \[\] = \[\|1\.0; 1\.0\|] +//val j_'_: RecT \[\] = \[\|\|] +//val j_'': string \[\] = \[\|"0"; "1"; "2"; "3"; "4"\|] type RecT = { Name : string } type Bldg = House | Museum | Office -let a = 1 // int - val a : int = 1 -let B = "Hello" // reference type - val B : string = "Hello" +let a = 1 // int - val a: int = 1 +let B = "Hello" // reference type - val B: string = "Hello" -let c' = { Name = "F#" } // record - val c' : RecT = { Name = "F#" } +let c' = { Name = "F#" } // record - val c': RecT = { Name = "F#" } -let _d = Office // disc unioin - val _d : Bldg = Office +let _d = Office // disc unioin - val _d: Bldg = Office -let e = {1..2..100} // sequence - val e : seq = -let F'F = [3..-1..1] // list - val F'F : int list = [3; 2; 1] +let e = {1..2..100} // sequence - val e: seq = +let F'F = [3..-1..1] // list - val F'F: int list = [3; 2; 1] let g = (Set.ofSeq e) - |> Set.intersect (Set.ofList F'F) // set - val g : Set = + |> Set.intersect (Set.ofList F'F) // set - val g: Set = -let g' = Set.empty // another set - val g' : Set<'a> +let g' = Set.empty // another set - val g': Set<'a> let getPointF (x, y) = System.Drawing.PointF(x, y) - // function value - val getPointF : float32 * float32 -> System.Drawing.PointF + // function value - val getPointF: float32 * float32 -> System.Drawing.PointF -let h = getPointF (1.5f, -1.5f) // PointF structure - val h : System.Drawing.PointF = {X=1.5, Y=-1.5} +let h = getPointF (1.5f, -1.5f) // PointF structure - val h: System.Drawing.PointF = {X=1.5, Y=-1.5} -let i = (1, c', _d) // tuple - val i : int * RecT * Bldg = (1, { Name = "F#" }, Office) +let i = (1, c', _d) // tuple - val i: int * RecT * Bldg = (1, { Name = "F#" }, Office) -let J_ = [| 1; 2; 3; |] // array - val J_ : int array = [|1; 2; 3|] -let j_' = Array.create 2 1.0 // another array - val j_' : float array = [|1.0; 1.0|] -let j_'_ = Array.empty // empty RecT array - val j_'_ : RecT array = [||] -let j_'' = Array.init 5 (fun i -> i.ToString()) // string array - val j_'' : string array = [|"0"; "1"; "2"; "3"; "4"|] +let J_ = [| 1; 2; 3; |] // array - val J_: int array = [|1; 2; 3|] +let j_' = Array.create 2 1.0 // another array - val j_': float array = [|1.0; 1.0|] +let j_'_ = Array.empty // empty RecT array - val j_'_: RecT array = [||] +let j_'' = Array.init 5 (fun i -> i.ToString()) // string array - val j_'': string array = [|"0"; "1"; "2"; "3"; "4"|] ;; diff --git a/tests/fsharpqa/Source/Printing/Choice01.fsx b/tests/fsharpqa/Source/Printing/Choice01.fsx index 4cb82419193..de37e652529 100644 --- a/tests/fsharpqa/Source/Printing/Choice01.fsx +++ b/tests/fsharpqa/Source/Printing/Choice01.fsx @@ -1,8 +1,8 @@ // #Regression #NoMT #Printing // Regression test for FSHARP1.0:5510 -// val it : Choice -// val it : Choice -// val it : Choice<'a,'b,Choice<'c,decimal,'d,'e,'f,'g,'h>,'i> +// val it: Choice +// val it: Choice +// val it: Choice<'a,'b,Choice<'c,decimal,'d,'e,'f,'g,'h>,'i> Choice1Of2("a");; Choice1Of2(1s);; diff --git a/tests/fsharpqa/Source/Printing/LazyValues01.fsx b/tests/fsharpqa/Source/Printing/LazyValues01.fsx index 1b3b6a18766..0cefa561d0c 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues01.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues01.fsx @@ -1,9 +1,9 @@ // #Regression #NoMT #Printing // Regression test for FSharp1.0:3981 - Lazy gets NullReferenceException when displayed -// val a : Lazy = -// val b : unit list = \[null\] -// val c : unit \[\] = \[\|null; null; null\|] -// val d : unit = \(\) +// val a: Lazy = +// val b: unit list = \[null\] +// val c: unit \[\] = \[\|null; null; null\|] +// val d: unit = \(\) let a = lazy() let b = [ () ] diff --git a/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx b/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx index 1967a9c7fd8..70ce9ff5f86 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx @@ -1,9 +1,9 @@ // #Regression #NoMT #Printing #RequiresENU // Regression test for FSharp1.0:3981 - Lazy gets NullReferenceException when displayed -// val a : Lazy = Value is not created -// val b : unit list = \[\(\)\] -// val c : unit \[\] = \[\|\(\); \(\); \(\)\|] -// val d : unit = \(\) +// val a: Lazy = Value is not created +// val b: unit list = \[\(\)\] +// val c: unit \[\] = \[\|\(\); \(\); \(\)\|] +// val d: unit = \(\) let a = lazy() let b = [ () ] diff --git a/tests/fsharpqa/Source/Printing/LazyValues02.fsx b/tests/fsharpqa/Source/Printing/LazyValues02.fsx index cf312ad3a1b..8f172c6ab1d 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues02.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues02.fsx @@ -2,12 +2,12 @@ // Regression test for FSHARP1.0:4068 // Title: printing lazy property values forces the lazy value -//val lazy12 : Lazy = -//val it : Lazy = -//val it : Lazy = -//val it : Lazy = -//val it : Lazy = -//val it : Lazy = +//val lazy12: Lazy = +//val it: Lazy = +//val it: Lazy = +//val it: Lazy = +//val it: Lazy = +//val it: Lazy = let lazy12 = lazy 12;; lazy12;; diff --git a/tests/fsharpqa/Source/Printing/LazyValues02NetFx4.fsx b/tests/fsharpqa/Source/Printing/LazyValues02NetFx4.fsx index 38535a71120..8252336a7dd 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues02NetFx4.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues02NetFx4.fsx @@ -2,12 +2,12 @@ // Regression test for FSHARP1.0:4068 // Title: printing lazy property values forces the lazy value -//val lazy12 : Lazy = Value is not created\. -//val it : Lazy = Value is not created\. -//val it : Lazy = Value is not created\. -//val it : Lazy = Value is not created\. -//val it : Lazy = Value is not created\. -//val it : Lazy = Value is not created\. +//val lazy12: Lazy = Value is not created\. +//val it: Lazy = Value is not created\. +//val it: Lazy = Value is not created\. +//val it: Lazy = Value is not created\. +//val it: Lazy = Value is not created\. +//val it: Lazy = Value is not created\. let lazy12 = lazy 12;; lazy12;; diff --git a/tests/fsharpqa/Source/Printing/LazyValues03.fsx b/tests/fsharpqa/Source/Printing/LazyValues03.fsx index 2c9074bfb50..ecdd992b799 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues03.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues03.fsx @@ -1,7 +1,7 @@ // #Regression #NoMT #Printing // Regression test for FSHARP1.0:4068 -//val lazyExit : Lazy = +//val lazyExit: Lazy = let lazyExit = lazy (exit 1; "this should never be forced");; diff --git a/tests/fsharpqa/Source/Printing/LazyValues03NetFx4.fsx b/tests/fsharpqa/Source/Printing/LazyValues03NetFx4.fsx index 59095a2f175..3b34b564732 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues03NetFx4.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues03NetFx4.fsx @@ -1,7 +1,7 @@ // #Regression #NoMT #Printing #RequiresENU // Regression test for FSHARP1.0:4068 -//val lazyExit : Lazy = Value is not created\. +//val lazyExit: Lazy = Value is not created\. let lazyExit = lazy (exit 1; "this should never be forced");; diff --git a/tests/fsharpqa/Source/Printing/Quotation01.fs b/tests/fsharpqa/Source/Printing/Quotation01.fs index 8519d0eeee5..283408df9e1 100644 --- a/tests/fsharpqa/Source/Printing/Quotation01.fs +++ b/tests/fsharpqa/Source/Printing/Quotation01.fs @@ -1,5 +1,5 @@ // #NoMT #Printing // Regression test for FSHARP1.0:524 -//val it : Quotations.Expr = Value \(1\) +//val it: Quotations.Expr = Value \(1\) <@ 1 @>;; exit 0;; diff --git a/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip01.fsx b/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip01.fsx index d4643be3c79..46f4b7348fa 100644 --- a/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip01.fsx +++ b/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip01.fsx @@ -1,9 +1,9 @@ // #Regression #NoMT #Printing // Regression test for FSHARP1.0:3300 // Verify that Pretty-printing of measure identifiers round-trips, i.e. displays the long identified (Namespace.Module.Type) -//val it : decimal = -2\.0M -//val it : float32 = 2\.0f -//val it : float = 1\.2 +//val it: decimal = -2\.0M +//val it: float32 = 2\.0f +//val it: float = 1\.2 #light module M1 = diff --git a/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip02.fsx b/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip02.fsx index b9b5d7d8385..18d70091258 100644 --- a/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip02.fsx +++ b/tests/fsharpqa/Source/Printing/UnitsOfMeasureIdentifiersRoundTrip02.fsx @@ -1,9 +1,9 @@ // #Regression #NoMT #Printing // Regression test for FSHARP1.0:3300 // Verify that Pretty-printing of measure identifiers round-trips, i.e. displays the long identified (Namespace.Module.Type) -//val it : decimal+ -//val it : float32+ -//val it : float+ +//val it: decimal+ +//val it: float32+ +//val it: float+ #light #r "UnitsOfMeasureIdentifiersRoundTrip02.dll" diff --git a/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature01.fsx b/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature01.fsx index e4a11a88618..ab7c8f1b8dc 100644 --- a/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature01.fsx +++ b/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature01.fsx @@ -3,6 +3,6 @@ // Make sure the generic type variable is echoed back // (notice that the next time we evaluate 'f' this // goes back to 'u) -//val f : x:float+ +//val f: x: float+ let f(x:float<'a>) = x*x;; exit 0;; diff --git a/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature02.fsx b/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature02.fsx index b71e606a9f1..5913d74fea0 100644 --- a/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature02.fsx +++ b/tests/fsharpqa/Source/Printing/UnitsOfMeasuresGenericSignature02.fsx @@ -4,6 +4,6 @@ // (notice that the next time we evaluate 'f' this // goes back to 'u, 'v) // This is the case where the generic function takes 2 args -//val g : x:float+ +//val g: x: float+ let g (x:float<'a>) (y:float32<'b>) = x * float y;; exit 0;; diff --git a/tests/fsharpqa/Source/Printing/VariantTypes01.fs b/tests/fsharpqa/Source/Printing/VariantTypes01.fs index 074e72da981..3f88be9b22f 100644 --- a/tests/fsharpqa/Source/Printing/VariantTypes01.fs +++ b/tests/fsharpqa/Source/Printing/VariantTypes01.fs @@ -2,6 +2,6 @@ // Regression test for FSHARP1.0:1401 // incorrect pretty printing of variant types // The issue here was the missing parens around the nested Some ... -//val it : int option option = Some \(Some 1\) +//val it: int option option = Some \(Some 1\) Some(Some(1));; exit 0;; diff --git a/tests/fsharpqa/Source/Printing/array2D.blit_01.fsx b/tests/fsharpqa/Source/Printing/array2D.blit_01.fsx index 742bec179d9..8860f195e01 100644 --- a/tests/fsharpqa/Source/Printing/array2D.blit_01.fsx +++ b/tests/fsharpqa/Source/Printing/array2D.blit_01.fsx @@ -3,17 +3,17 @@ // Covering the blit between zero-based and non-zero based Array2D // The rest of the tests are Unittests. // -//val it : bool = true +//val it: bool = true -//val a : string [,] = [bound1=1 -// bound2=2 -// ["a12"; "a13"] -// ["a22"; "a23"] -// ["a32"; "a33"]] +//val a: string[,] = [bound1=1 +// bound2=2 +// ["a12"; "a13"] +// ["a22"; "a23"] +// ["a32"; "a33"]] // -//val b : string [,] = [["b00"; "b01"] -// ["b10"; "b11"] -// ["b20"; "b21"]] +//val b: string[,] = [["b00"; "b01"] +// ["b10"; "b11"] +// ["b20"; "b21"]] let a = Array2D.initBased 1 2 3 2 (fun a b -> "a" + string a + string b) diff --git a/tests/fsharpqa/Source/Printing/array2D_01.fsx b/tests/fsharpqa/Source/Printing/array2D_01.fsx index 34a6b4c79ae..4e27059db65 100644 --- a/tests/fsharpqa/Source/Printing/array2D_01.fsx +++ b/tests/fsharpqa/Source/Printing/array2D_01.fsx @@ -1,12 +1,12 @@ // #Regression #NoMT #Printing // Regression test for FSHARP1.0:5231 // -//val s : int list = \[1; 2\] -//val q : int list list = \[\[1; 2\]; \[1; 2\]; \[1; 2\]\] -//val a : int \[,\] = \[\[1; 2\] -// \[1; 2\] -// \[1; 2\]\] -//val v : bool = false +//val s: int list = \[1; 2\] +//val q: int list list = \[\[1; 2\]; \[1; 2\]; \[1; 2\]\] +//val a: int\[,\] = \[\[1; 2\] +// \[1; 2\] +// \[1; 2\]\] +//val v: bool = false let s = [1 .. 2] let q = [s; s; s] diff --git a/tests/service/EditorTests.fs b/tests/service/EditorTests.fs index b68ede569d7..3a5ad1277b7 100644 --- a/tests/service/EditorTests.fs +++ b/tests/service/EditorTests.fs @@ -85,7 +85,7 @@ let ``Intro test`` () = // Get tool tip at the specified location let tip = typeCheckResults.GetToolTip(4, 7, inputLines.[1], ["foo"], identToken) - // (sprintf "%A" tip).Replace("\n","") |> shouldEqual """ToolTipText [Single ("val foo : unit -> unitFull name: Test.foo",None)]""" + // (sprintf "%A" tip).Replace("\n","") |> shouldEqual """ToolTipText [Single ("val foo: unit -> unitFull name: Test.foo",None)]""" // Get declarations (autocomplete) for a location let partialName = { QualifyingIdents = []; PartialIdent = "msg"; EndColumn = 22; LastDotPos = None } let decls = typeCheckResults.GetDeclarationListInfo(Some parseResult, 7, inputLines.[6], partialName, (fun _ -> [])) @@ -138,8 +138,8 @@ let ``GetMethodsAsSymbols should return all overloads of a method as FSharpSymbo [("Concat", [("values", "Collections.Generic.IEnumerable<'T>")]); ("Concat", [("values", "Collections.Generic.IEnumerable")]); ("Concat", [("arg0", "obj")]); - ("Concat", [("args", "obj []")]); - ("Concat", [("values", "string []")]); + ("Concat", [("args", "obj[]")]); + ("Concat", [("values", "string[]")]); ("Concat", [("arg0", "obj"); ("arg1", "obj")]); ("Concat", [("str0", "string"); ("str1", "string")]); ("Concat", [("arg0", "obj"); ("arg1", "obj"); ("arg2", "obj")]); diff --git a/tests/service/FsiTests.fs b/tests/service/FsiTests.fs index 58a3af852d8..7069354acd8 100644 --- a/tests/service/FsiTests.fs +++ b/tests/service/FsiTests.fs @@ -282,7 +282,7 @@ let ``ParseAndCheckInteraction test 1``() = | FSharpToolTipText [FSharpToolTipElement.Single(text, FSharpXmlDoc.None)] -> text | _ -> failwith "incorrect tool tip" - Assert.True(tooltip.Contains("val xxxxxx : int")) + Assert.True(tooltip.Contains("val xxxxxx: int")) [] let ``ParseAndCheckInteraction test 2``() = diff --git a/vsintegration/tests/MockTypeProviders/DummyProviderForLanguageServiceTesting/ProvidedTypes.fsi b/vsintegration/tests/MockTypeProviders/DummyProviderForLanguageServiceTesting/ProvidedTypes.fsi index 789db2c39f5..65784ae9e7d 100644 --- a/vsintegration/tests/MockTypeProviders/DummyProviderForLanguageServiceTesting/ProvidedTypes.fsi +++ b/vsintegration/tests/MockTypeProviders/DummyProviderForLanguageServiceTesting/ProvidedTypes.fsi @@ -213,7 +213,7 @@ namespace ProviderImplementation.ProvidedTypes member SetFieldAttributes: attributes: FieldAttributes -> unit /// Create a new provided literal field. It is not initially associated with any specific provided type definition. - static member Literal : fieldName: string * fieldType: Type * literalValue:obj -> ProvidedField + static member Literal: fieldName: string * fieldType: Type * literalValue:obj -> ProvidedField /// Represents an array or other symbolic type involving a provided type as the argument. @@ -397,7 +397,7 @@ namespace ProviderImplementation.ProvidedTypes /// /// A list of nested ProvidedTypeDefinitions to add to the ProvidedAssembly. /// A path of type names to wrap the generated types. The generated types are then generated as nested types. - member AddNestedTypes : types : ProvidedTypeDefinition list * enclosingGeneratedTypeNames: string list -> unit + member AddNestedTypes: types: ProvidedTypeDefinition list * enclosingGeneratedTypeNames: string list -> unit #endif @@ -416,13 +416,13 @@ namespace ProviderImplementation.ProvidedTypes member ReferencedAssemblyPaths: string list /// Get the resolved referenced assemblies determined by the type provider configuration - member GetTargetAssemblies : unit -> Assembly[] + member GetTargetAssemblies: unit -> Assembly[] /// Get the set of design-time assemblies available to use as a basis for authoring provided types. - member GetSourceAssemblies : unit -> Assembly[] + member GetSourceAssemblies: unit -> Assembly[] /// Add an assembly to the set of design-time assemblies available to use as a basis for authoring provided types - member AddSourceAssembly : Assembly -> unit + member AddSourceAssembly: Assembly -> unit /// Try to get the version of FSharp.Core referenced. May raise an exception if FSharp.Core has not been correctly resolved member FSharpCoreAssemblyVersion: Version diff --git a/vsintegration/tests/Salsa/VsMocks.fs b/vsintegration/tests/Salsa/VsMocks.fs index 5986949069f..a37df360bfe 100644 --- a/vsintegration/tests/Salsa/VsMocks.fs +++ b/vsintegration/tests/Salsa/VsMocks.fs @@ -1130,7 +1130,7 @@ module internal VsMocks = // peekhole to IVsTrackProjectDocuments2 - allows to receive notifications about removed files type public IVsTrackProjectDocuments2Listener = - abstract member OnAfterRemoveFiles : IEvent + abstract member OnAfterRemoveFiles: IEvent let vsTrackProjectDocuments2 = diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Completion.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Completion.fs index 675ee60617c..6b9eda12e1a 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Completion.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.Completion.fs @@ -832,8 +832,8 @@ for i in 0..a."] let prologue = [ "type X =" - " val field1 : int" - " val field2 : string" + " val field1: int" + " val field2: string" ] let useCases = @@ -853,8 +853,8 @@ for i in 0..a."] let prologue = [ "type X =" - " val _field1 : int" - " val _field2 : string" + " val _field1: int" + " val _field2: string" ] let useCases = @@ -939,8 +939,8 @@ for i in 0..a."] "type A = class end" "type B = " " inherit A" - " val f1 : int" - " val f2 : int" + " val f1: int" + " val f2: int" ] let useCases = @@ -1027,8 +1027,8 @@ for i in 0..a."] let prologue = [ "type X =" - " val field1 : int" - " val field2 : string" + " val field1: int" + " val field2: string" ] let useCases = @@ -4277,7 +4277,7 @@ let x = query { for bbbb in abbbbc(*D0*) do member public this.``InDeclaration.Bug3176c``() = AssertCtrlSpaceCompleteContains [ "type C ="; - " val aaaa : int" ] + " val aaaa: int" ] "aa" // move to marker ["aaaa"] [] // should contain 'aaaa' @@ -6966,7 +6966,7 @@ let rec f l = this.VerifyDotCompListIsEmptyAtStartOfMarker( fileContents = """ type f1(*MarkerType*) = - val field : int""", + val field: int""", marker = "(*MarkerType*)") [] diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ErrorList.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ErrorList.fs index 8360254fa37..add5eb9cc4d 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ErrorList.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ErrorList.fs @@ -212,8 +212,8 @@ let g (t : T) = t.Count() Known type of argument: float Available overloads: - - new : bool -> X // Argument at index 1 doesn't match - - new : int -> X // Argument at index 1 doesn't match""" ] + - new: bool -> X // Argument at index 1 doesn't match + - new: int -> X // Argument at index 1 doesn't match""" ] CheckErrorList content (assertExpectedErrorMessages expectedMessages) @@ -294,11 +294,11 @@ let x = """ let expectedMessages = [ """A unique overload for method 'WriteLine' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: 'a0 when 'a0 : null +Known type of argument: 'a0 when 'a0: null Candidates: - - System.Console.WriteLine(buffer: char []) : unit - - System.Console.WriteLine(format: string, [] arg: obj []) : unit + - System.Console.WriteLine(buffer: char[]) : unit + - System.Console.WriteLine(format: string, [] arg: obj[]) : unit - System.Console.WriteLine(value: obj) : unit - System.Console.WriteLine(value: string) : unit""" ] CheckErrorList content (assertExpectedErrorMessages expectedMessages) @@ -320,8 +320,8 @@ b.Do(1, 1) Known types of arguments: int * int Candidates: - - member A.Do : a:int * b:'T -> unit - - member A.Do : a:int * b:int -> unit""" ] + - member A.Do: a: int * b: 'T -> unit + - member A.Do: a: int * b: int -> unit""" ] CheckErrorList content (assertExpectedErrorMessages expectedMessages) [] diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs index 2ff85f4b0b3..efefaaab1c1 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs @@ -1942,7 +1942,7 @@ We really need to rewrite some code paths here to use the real parse tree rather let a1 = System.Reflection.Assembly.Load("mscorlib") let m = a1.GetType("System.Decimal").GetConstructor((*Mark*)null)""" - this.VerifyParameterInfoOverloadMethodIndex(fileContents,"(*Mark*)",0,["System.Type []"]) + this.VerifyParameterInfoOverloadMethodIndex(fileContents,"(*Mark*)",0,["System.Type[]"]) [] member public this.``Regression.MehtodSortedByArgumentCount.Bug4495.Case2``() = @@ -1953,8 +1953,8 @@ We really need to rewrite some code paths here to use the real parse tree rather let m = a1.GetType("System.Decimal").GetConstructor((*Mark*)null)""" this.VerifyParameterInfoOverloadMethodIndex(fileContents,"(*Mark*)",1,["System.Reflection.BindingFlags"; "System.Reflection.Binder"; - "System.Type []"; - "System.Reflection.ParameterModifier []"]) + "System.Type[]"; + "System.Reflection.ParameterModifier[]"]) [] [] @@ -1981,7 +1981,7 @@ We really need to rewrite some code paths here to use the real parse tree rather [] member public this.``BasicBehavior.DotNet.Static``() = let fileContents = """System.String.Format((*Mark*)""" - this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"obj []"]) + this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Mark*)",["string";"obj[]"]) (*------------------------------------------IDE Query automation start -------------------------------------------------*) [] @@ -2002,7 +2002,7 @@ We really need to rewrite some code paths here to use the real parse tree rather select r }) }""" this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker1*)",["obj"],queryAssemblyRefs) - this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker2*)",["string";"obj []"],queryAssemblyRefs) + this.VerifyParameterInfoContainedAtStartOfMarker(fileContents,"(*Marker2*)",["string";"obj[]"],queryAssemblyRefs) [] [] diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs index 0a09ffbe108..315fd981e5b 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs @@ -210,7 +210,7 @@ type UsingMSBuild() = member public this.``QuickInfo.OverriddenMethods``() = let source = """ type A() = - abstract member M : unit -> unit + abstract member M: unit -> unit /// 1234 default this.M() = () @@ -261,16 +261,16 @@ type UsingMSBuild() = """ let expectedTooltip = """ type Async = - static member AsBeginEnd : computation:('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit) - static member AwaitEvent : event:IEvent<'Del,'T> * ?cancelAction:(unit -> unit) -> Async<'T> (requires delegate and 'Del :> Delegate) - static member AwaitIAsyncResult : iar:IAsyncResult * ?millisecondsTimeout:int -> Async - static member AwaitTask : task:Task<'T> -> Async<'T> + 1 overload - static member AwaitWaitHandle : waitHandle:WaitHandle * ?millisecondsTimeout:int -> Async - static member CancelDefaultToken : unit -> unit - static member Catch : computation:Async<'T> -> Async> - static member Choice : computations:seq> -> Async<'T option> - static member FromBeginEnd : beginAction:(AsyncCallback * obj -> IAsyncResult) * endAction:(IAsyncResult -> 'T) * ?cancelAction:(unit -> unit) -> Async<'T> + 3 overloads - static member FromContinuations : callback:(('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T> + static member AsBeginEnd: computation: ('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit) + static member AwaitEvent: event: IEvent<'Del,'T> * ?cancelAction: (unit -> unit) -> Async<'T> (requires delegate and 'Del :> Delegate) + static member AwaitIAsyncResult: iar: IAsyncResult * ?millisecondsTimeout: int -> Async + static member AwaitTask: task: Task<'T> -> Async<'T> + 1 overload + static member AwaitWaitHandle: waitHandle: WaitHandle * ?millisecondsTimeout: int -> Async + static member CancelDefaultToken: unit -> unit + static member Catch: computation: Async<'T> -> Async> + static member Choice: computations: seq> -> Async<'T option> + static member FromBeginEnd: beginAction: (AsyncCallback * obj -> IAsyncResult) * endAction: (IAsyncResult -> 'T) * ?cancelAction: (unit -> unit) -> Async<'T> + 3 overloads + static member FromContinuations: callback: (('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) -> unit) -> Async<'T> ... Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") @@ -292,7 +292,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") member public this.``GetterSetterInsideInterfaceImpl.ThisOnceAsserted``() = let fileContent =""" type IFoo = - abstract member X : int with get,set + abstract member X: int with get,set type Bar = interface IFoo with @@ -310,7 +310,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") let y(*MInt[]*) : int [] = [| 1; 2; 3 |] """ this.AssertQuickInfoContainsAtStartOfMarker(fileContents, "x(*MIntArray1*)", "int array") - this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "y(*MInt[]*)", "int []") + this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "y(*MInt[]*)", "int[]") //Verify no quickinfo -- link name string have [] @@ -360,7 +360,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", - "type T =\n new : unit -> T\n static member M : unit -> int []\n static member StaticProp : decimal\n member Event1 : EventHandler", + "type T =\n new: unit -> T\n static member M: unit -> int []\n static member StaticProp: decimal\n member Event1: EventHandler", addtlRefAssy = [PathRelativeToTestAssembly( @"XmlDocAttributeWithNullComment.dll")]) [] @@ -374,7 +374,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") let a = typeof """ this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "T(*Marker*)", - "type T =\n new : unit -> T\n static member M : unit -> int []\n static member StaticProp : decimal\n member Event1 : EventHandler", + "type T =\n new : unit -> T\n static member M: unit -> int []\n static member StaticProp: decimal\n member Event1: EventHandler", addtlRefAssy = [PathRelativeToTestAssembly( @"XmlDocAttributeWithEmptyComment.dll")]) @@ -588,7 +588,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", - "N.T.M() : int []", + "N.T.M() : int[]", addtlRefAssy = [PathRelativeToTestAssembly( @"XmlDocAttributeWithNullComment.dll")]) [] @@ -601,7 +601,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") let t = new N.T.M(*Marker*)()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContents, "M(*Marker*)", - "N.T.M() : int []", + "N.T.M() : int[]", addtlRefAssy = [PathRelativeToTestAssembly( @"XmlDocAttributeWithEmptyComment.dll")]) @@ -764,7 +764,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") type A() = let fff n = n + 1 """ - this.AssertQuickInfoContainsAtEndOfMarker(code, "let ff", "val fff : (int -> int)") + this.AssertQuickInfoContainsAtEndOfMarker(code, "let ff", "val fff: (int -> int)") // Regression for 2494 [] @@ -792,8 +792,8 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") let expectedquickinfoPriorityQueue = "type PriorityQueue<'k,'a> = | Nil | Branch of 'k * 'a * PriorityQueue<'k,'a> * PriorityQueue<'k,'a>" let expectedquickinfoNil = "union case PriorityQueue.Nil: PriorityQueue<'k,'a>" let expectedquickinfoPriorityQueueinModule = "module PriorityQueue\n\nfrom File1" - let expectedquickinfoVal = "val pq : PriorityQueue<'a,'b>" - let expectedquickinfoLastLine = "val singleton : k:'a -> a:'b -> PriorityQueue<'a,'b>" + let expectedquickinfoVal = "val pq: PriorityQueue<'a,'b>" + let expectedquickinfoLastLine = "val singleton: k: 'a -> a: 'b -> PriorityQueue<'a,'b>" this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "PriorityQueue(*MarkerType*)" expectedquickinfoPriorityQueue this.InfoInDeclarationTestQuickInfoImplWithTrim fileContents "Nil(*MarkerDataConstructor*)" expectedquickinfoNil @@ -864,7 +864,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") member public this.``Regression.InDeclaration.Bug3176c``() = this.AssertQuickInfoContainsAtEndOfMarker ("""type C = - val aaaa : int""","aa","aaaa") + val aaaa: int""","aa","aaaa") [] member public this.``Regression.InDeclaration.Bug3176d``() = @@ -875,7 +875,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") [] member public this.``Regression.Generic.3773a``() = this.AssertQuickInfoContainsAtEndOfMarker - ("""let rec M2<'a>(a:'a) = M2(a)""","let rec M","val M2 : a:'a -> obj") + ("""let rec M2<'a>(a:'a) = M2(a)""","let rec M","val M2: a: 'a -> obj") // Before this fix, if the user hovered over 'cccccc' they would see 'Yield' [] @@ -994,7 +994,7 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") [] member public this.``Regression.RecursiveDefinition.Generic.3773b``() = this.AssertQuickInfoContainsAtEndOfMarker - ("""let rec M1<'a>(a:'a) = M1(0)""","let rec M","val M1 : a:int -> 'a") + ("""let rec M1<'a>(a:'a) = M1(0)""","let rec M","val M1: a: int -> 'a") //regression test for bug Dev11:138110 - "F# language service hover tip for ITypeProvider does now show Invalidate event" [] @@ -1024,8 +1024,8 @@ let f (tp:ITypeProvider(*$$$*)) = tp.Invalidate member public this.``FrameworkClass``() = let fileContent = """let l = new System.Collections.Generic.List()""" let marker = "Generic.List" - this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Capacity : int\n") - this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Clear : unit -> unit\n") + this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Capacity: int\n") + this.AssertQuickInfoContainsAtEndOfMarker(fileContent,marker,"member Clear: unit -> unit\n") this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "get_Capacity" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "set_Capacity" this.VerifyQuickInfoDoesNotContainAnyAtEndOfMarker fileContent marker "get_Count" @@ -1122,11 +1122,11 @@ let f (tp:ITypeProvider(*$$$*)) = tp.Invalidate let (_, _, file) = this.CreateSingleFileProject(code) MoveCursorToEndOfMarker(file,"(*aaa*)") let tooltip = GetQuickInfoAtCursor file - AssertContains(tooltip,"val x : int") + AssertContains(tooltip,"val x: int") MoveCursorToEndOfMarker(file,"(*bbb*)") let tooltip = GetQuickInfoAtCursor file - AssertContains(tooltip,"val x' : string") + AssertContains(tooltip,"val x': string") [] member public this.``NegativeTest.CharLiteralNotConfusedWithIdentifierWithTick``() = @@ -1524,7 +1524,7 @@ let f (tp:ITypeProvider(*$$$*)) = tp.Invalidate [] member public this.``Regression.Classes.Bug2362``() = let fileContent = """let append mm nn = fun ac -> mm (nn ac)""" - this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let appen","mm:('a -> 'b) -> nn:('c -> 'a) -> ac:'c -> 'b") + this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let appen","mm: ('a -> 'b) -> nn: ('c -> 'a) -> ac: 'c -> 'b") // check consistency of QuickInfo for 'm' and 'n', which is the main point of this test this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let append m","'a -> 'b") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"let append mm n","'c -> 'a") @@ -1720,8 +1720,8 @@ let f (tp:ITypeProvider(*$$$*)) = tp.Invalidate "Overload", (* expect to see in order... *) [ - "static member MyType.Overload : unit -> int"; - "static member MyType.Overload : x:int -> int"; + "static member MyType.Overload: unit -> int"; + "static member MyType.Overload: x: int -> int"; "Hello" ] ) @@ -2067,10 +2067,10 @@ query." "Random", (* expect to see in order... *) ["type Random ="; - " new : unit -> unit + 1 overload" - " member Next : unit -> int + 2 overloads"; - " member NextBytes : buffer: byte [] -> unit"; - " member NextDouble : unit -> float"] + " new: unit -> unit + 1 overload" + " member Next: unit -> int + 2 overloads"; + " member NextBytes: buffer: byte[] -> unit"; + " member NextDouble: unit -> float"] ) [] @@ -2102,13 +2102,13 @@ query." (* expect to see in order... *) // Pre fix output is mixed up [ "type CodeConnectAccess ="; - " new : allowScheme: string * allowPort: int -> unit"; - " member Equals : o: obj -> bool"; - " member GetHashCode : unit -> int"; - " static member CreateAnySchemeAccess : allowPort: int -> CodeConnectAccess"; - " static member CreateOriginSchemeAccess : allowPort: int -> CodeConnectAccess"; - " static val AnyScheme : string"; - " static val DefaultPort : int"; + " new: allowScheme: string * allowPort: int -> unit"; + " member Equals: o: obj -> bool"; + " member GetHashCode: unit -> int"; + " static member CreateAnySchemeAccess: allowPort: int -> CodeConnectAccess"; + " static member CreateOriginSchemeAccess: allowPort: int -> CodeConnectAccess"; + " static val AnyScheme: string"; + " static val DefaultPort: int"; " ..."; ]) @@ -2149,14 +2149,14 @@ query." [ "type F1 ="; " inherit Form"; " interface IDisposable"; - " new : unit -> F1"; + " new: unit -> F1"; " val x: F1" - " member B : unit -> int"; - " override ToString : unit -> string"; - " static member A : unit -> int"; - " static member C : unit -> int"; - " abstract member AAA : int"; - " member D : int"; + " member B: unit -> int"; + " override ToString: unit -> string"; + " static member A: unit -> int"; + " static member C: unit -> int"; + " abstract member AAA: int"; + " member D: int"; " ..."; ]) @@ -2203,12 +2203,12 @@ query." point.Length |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "type TestType1") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Length : float") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Length: float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Item") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member X : int") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Y : int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member X: int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "member Y: int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "type BitArray") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "member Not : unit -> BitArray") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "member Not: unit -> BitArray") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker2*)" "get_Length" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker2*)" "set_Length" @@ -2294,7 +2294,7 @@ query." let (_, _, file) = this.CreateSingleFileProject(fileContent, references = ["PresentationCore"; "WindowsBase"]) MoveCursorToStartOfMarker(file, "(*Marker*)") let tooltip = time1 GetQuickInfoAtCursor file "Time of first tooltip" - AssertContains(tooltip, "override CommandReference.CanExecuteChanged : IEvent") + AssertContains(tooltip, "override CommandReference.CanExecuteChanged: IEvent") AssertContains(tooltip, "regressiontest.CommandReference.CanExecuteChanged") [] @@ -2389,29 +2389,29 @@ query." this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "property System.Random.DiceValue: int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "BCL class Extension property") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "member System.Random.NextDice : unit -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "member System.Random.NextDice: unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "BCL class Extension method") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker13*)", "member System.Random.NextDice : a:bool -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker13*)", "member System.Random.NextDice: a: bool -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker13*)", "new BCL class Extension method with overload") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker14*)", "member System.Random.Next : a:bool -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker14*)", "member System.Random.Next: a: bool -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker14*)", "existing BCL class Extension method with overload") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "member System.ConsoleKeyInfo.ExtentionMethod : unit -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "member System.ConsoleKeyInfo.ExtentionMethod: unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker21*)", "BCL struct extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "System.ConsoleKeyInfo.ExtentionProperty: string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker22*)", "BCL struct extension property") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker31*)", "member FSClass.ExtentionMethod : unit -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker31*)", "member FSClass.ExtentionMethod: unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker31*)", "fs class extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker32*)", "FSClass.ExtentionProperty: string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker32*)", "fs class extension property") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker33*)", "member FSClass.Method : a:string -> string") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker33*)", "member FSClass.Method: a: string -> string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker33*)", "fs class method original") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker34*)", "member FSClass.Method : a:int -> string") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker34*)", "member FSClass.Method: a: int -> string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker34*)", "fs class method extension overload") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker35*)", "property FSClass.Prop: string -> string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker35*)", "fs class property original") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker36*)", "property FSClass.Prop: int -> string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker36*)", "fs class property extension overload") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker41*)", "member FSStruct.ExtentionMethod : unit -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker41*)", "member FSStruct.ExtentionMethod: unit -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker41*)", "fs struct extension method") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker42*)", "FSStruct.ExtentionProperty: string") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker42*)", "fs struct extension property") @@ -2423,7 +2423,7 @@ query." let F (f :_ -> float<_>) = fun x -> f (x+1.0) let rec Gen<[] 'u> (f:float<'u> -> float<'u>) = Gen(*Marker*)(F f)""" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "val Gen : f:(float -> float) -> 'a") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "val Gen: f: (float -> float) -> 'a") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "Exception" this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "thrown" @@ -2468,24 +2468,24 @@ query." member this.Value with get(*Marker6_1*) () = 10 and set(*Marker6_2*) x = x + 1 |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_1*)", "module float") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "val float : 'T -> float (requires member op_Explicit)") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "val float: 'T -> float (requires member op_Explicit)") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "Full name: Microsoft.FSharp.Core.Operators.float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_3*)", "type float = System.Double") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_3*)", "Full name: Microsoft.FSharp.Core.float") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker2_1*)","type seq<'T> = System.Collections.Generic.IEnumerable<'T>") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker2_1*)","Full name: Microsoft.FSharp.Collections.seq<_>") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "val seq : seq<'T> -> seq<'T>") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "val seq: seq<'T> -> seq<'T>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "Full name: Microsoft.FSharp.Core.Operators.seq") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker3_1*)","type Set<'T (requires comparison)> =") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker3_1*)","Full name: Microsoft.FSharp.Collections.Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "module Set") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "Functional programming operators related to the Set<_> type") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "val int : int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "val int: int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "Full name: NS.float.int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "type int = int32") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "Full name: Microsoft.FSharp.Core.int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_3*)", "type int =") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_3*)", "member M : int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_3*)", "member M: int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "type T =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "new : unit -> T") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "val mutable T: T") @@ -2535,7 +2535,7 @@ query." |> Set.ofList |> Set(*Marker22*).isEmpty |> ignore""" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "val mass : float") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "val mass: float") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "Full name: TestQuickinfo.TestCase1.mass") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "inherits: System.ValueType") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "[]") @@ -2569,8 +2569,8 @@ query." let sink = new ByteOutputSink() sink.WriteChar(*Marker11*)('c') sink.WriteString(*Marker12*)("Hello World!")""" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "override ByteOutputSink.WriteChar : c:char -> unit") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "override ByteOutputSink.WriteString : s:string -> unit") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker11*)", "override ByteOutputSink.WriteChar: c: char -> unit") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker12*)", "override ByteOutputSink.WriteString: s: string -> unit") [] member public this.``Automation.Regression.QuotedIdentifier.Bug3790``() = @@ -2618,10 +2618,10 @@ query." foo(*Marker5*) 2 3 |> ignore""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "T.XX: int * int * int") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker1*)" "->" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "IFoo.foo : int -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "IFoo.foo: int -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "Rec.bar: int -> int -> int") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4*)", "T2.Foo : a:'a * b:'b -> string") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5*)", "val foo : int -> int -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4*)", "T2.Foo: a: 'a * b: 'b -> string") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5*)", "val foo: int -> int -> int") [] member public this.``Automation.Regression.TupleException.Bug3723``() = @@ -2676,13 +2676,13 @@ query." let genericClass(*Marker4_2*) = new GenericClass()""" this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_1*)", "type MyInt = int") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "val myInt : MyInt") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1_2*)", "val myInt: MyInt") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_1*)", "type PairOfFloat = float * float") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "val MySeq : seq") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2_2*)", "val MySeq: seq") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_1*)", "type IA =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3_2*)", "type ClassIA =") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_1*)", "type GenericClass<'a (requires 'a :> IA)> =") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "val genericClass : GenericClass") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4_2*)", "val genericClass: GenericClass") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_1*)", "type AbAttrName = AbstractClassAttribute") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5_2*)", "type AbAttrName = AbstractClassAttribute") @@ -2712,12 +2712,12 @@ query." member this.Prop = this.x let x = new (*Marker7*)A()""" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "val m : ('a -> 'b)") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "val n : ('c -> 'a)") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "val ac : 'c") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4*)", "val this : Foo") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5*)", "val this : Foo") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker6*)", "val this : Foo") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker1*)", "val m: ('a -> 'b)") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker2*)", "val n: ('c -> 'a)") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "val ac: 'c") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker4*)", "val this: Foo") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker5*)", "val this: Foo") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker6*)", "val this: Foo") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker7*)","type A =") this.AssertQuickInfoContainsAtEndOfMarker(fileContent,"(*Marker7*)","val mutable x: int") @@ -2744,8 +2744,8 @@ query." this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerType*)", "type PriorityQueue") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerDataConstructor*)", "union case PriorityQueue.Nil: PriorityQueue<'k,'a>") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker3*)", "module PriorityQueue") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerVal*)", "val pq : PriorityQueue<'a,'b>") - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerLastLine*)", "val singleton : k:'a -> a:'b -> PriorityQueue<'a,'b>") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerVal*)", "val pq: PriorityQueue<'a,'b>") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*MarkerLastLine*)", "val singleton: k: 'a -> a: 'b -> PriorityQueue<'a,'b>") [] member public this.``Automation.WhereQuickInfoShouldNotShowUp``() = @@ -2804,7 +2804,7 @@ query." /// XmlComment K let rec g x = 1 g x""" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "val func : x:'a -> int") + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "val func: x: 'a -> int") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "XmlComment J") this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Marker*)", "Full name: TestQuickinfo.XmlComment.func") this.VerifyQuickInfoDoesNotContainAnyAtStartOfMarker fileContent "(*Marker*)" "XmlComment K" @@ -3061,9 +3061,9 @@ query." let a = MyPoint((float)i,2.0) // TC 36 Field Struct Own Code Comp Expression yield a.X(*Marker4*) }""" - let queries = [("(*Marker1*)", "val controlEventHandler : ControlEventHandler"); + let queries = [("(*Marker1*)", "val controlEventHandler: ControlEventHandler"); ("(*Marker2*)", "property MyDistance.Event: Event"); - ("(*Marker3*)", "val newDelegate : ControlEventHandler"); + ("(*Marker3*)", "val newDelegate: ControlEventHandler"); ("(*Marker4*)", "property MyPoint.X: float"); ("(*Marker4*)", "Gets and sets X")] this.VerifyUsingFsTestLib fileContent queries false @@ -3102,9 +3102,9 @@ query." let a = MyPoint((float)i,2.0) // TC 36 Field Struct Own Code Comp Expression yield a.X(*Marker4*) }""" - let queries = [("(*Marker1*)", "val controlEventHandler : ControlEventHandler"); + let queries = [("(*Marker1*)", "val controlEventHandler: ControlEventHandler"); ("(*Marker2*)", "property MyDistance.Event: Event"); - ("(*Marker3*)", "val newDelegate : ControlEventHandler"); + ("(*Marker3*)", "val newDelegate: ControlEventHandler"); ("(*Marker4*)", "property MyPoint.X: float"); ("(*Marker4*)", "Gets and sets X"); ] @@ -3151,12 +3151,12 @@ query." // TC 34 Operator Tuple Own Code Pattern Match | true -> tuplex(*Marker4*) | false -> tupley""" - let queries = [("(*Marker1*)", "val tuple1 : int * string * float * (int -> string * int)"); + let queries = [("(*Marker1*)", "val tuple1: int * string * float * (int -> string * int)"); ("(*Marker2*)", "type MyEmployee"); ("(*Marker2*)", "Full name: FSTestLib.MyEmployee"); ("(*Marker3*)", "type MyCar"); ("(*Marker3*)", "Full name: FSTestLib.MyCar"); - ("(*Marker4*)", "val tuplex : 'a * string") + ("(*Marker4*)", "val tuplex: 'a * string") ] this.VerifyUsingFsTestLib fileContent queries false @@ -3283,7 +3283,7 @@ query." for n in numbers do orderBy (n.GetType()) select n}""" - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "n.GetType()", "val n : int",queryAssemblyRefs) + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "n.GetType()", "val n: int",queryAssemblyRefs) this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "Type()", "System.Object.GetType() : System.Type",queryAssemblyRefs) [] @@ -3304,7 +3304,7 @@ query." let mostExpensiveProducts = query { for x in g do where(*Mark1*) (x.UnitPrice = maxPrice(*Mark2*)) } select(*Mark4*) (g.Key, g)}) } """ this.AssertQuickInfoInQuery (fileContent, "(*Mark1*)", "custom operation: where (bool)") - this.AssertQuickInfoInQuery (fileContent, "(*Mark2*)", "val maxPrice : decimal") + this.AssertQuickInfoInQuery (fileContent, "(*Mark2*)", "val maxPrice: decimal") this.AssertQuickInfoInQuery (fileContent, "(*Mark3*)", "custom operation: groupValBy ('Value) ('Key)") this.AssertQuickInfoInQuery (fileContent, "(*Mark4*)", "custom operation: select ('Result)") @@ -3349,8 +3349,8 @@ query." where (result |> Array.exists(fun i -> i = char)) yield char } """ - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark1*)", "member WorkflowBuilder.Combine : f:'b0 * g:'c1 -> 'c1",queryAssemblyRefs) - this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark2*)", "member WorkflowBuilder.Zero : unit -> unit",queryAssemblyRefs) + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark1*)", "member WorkflowBuilder.Combine: f: 'b0 * g: 'c1 -> 'c1",queryAssemblyRefs) + this.AssertQuickInfoContainsAtStartOfMarker (fileContent, "(*Mark2*)", "member WorkflowBuilder.Zero: unit -> unit",queryAssemblyRefs) [] [] diff --git a/vsintegration/tests/UnitTests/QuickInfoProviderTests.fs b/vsintegration/tests/UnitTests/QuickInfoProviderTests.fs index 8c4eabc9b66..4a6d9d6e763 100644 --- a/vsintegration/tests/UnitTests/QuickInfoProviderTests.fs +++ b/vsintegration/tests/UnitTests/QuickInfoProviderTests.fs @@ -79,23 +79,23 @@ let private getQuickInfoText (FSharpToolTipText elements) : string = [] let ShouldShowQuickInfoAtCorrectPositions() = let testCases = - [ "x", Some "val x : int\nFull name: Test.x" - "y", Some "val y : int\nFull name: Test.y" + [ "x", Some "val x: int\nFull name: Test.x" + "y", Some "val y: int\nFull name: Test.y" "1", None "2", None - "x +", Some "val x : int\nFull name: Test.x" + "x +", Some "val x: int\nFull name: Test.x" "System", Some "namespace System" "Console", Some "type Console = - static member BackgroundColor : ConsoleColor with get, set - static member Beep : unit -> unit + 1 overload - static member BufferHeight : int with get, set - static member BufferWidth : int with get, set - static member CapsLock : bool - static member Clear : unit -> unit - static member CursorLeft : int with get, set - static member CursorSize : int with get, set - static member CursorTop : int with get, set - static member CursorVisible : bool with get, set + static member BackgroundColor: ConsoleColor with get, set + static member Beep: unit -> unit + 1 overload + static member BufferHeight: int with get, set + static member BufferWidth: int with get, set + static member CapsLock: bool + static member Clear: unit -> unit + static member CursorLeft: int with get, set + static member CursorSize: int with get, set + static member CursorTop: int with get, set + static member CursorVisible: bool with get, set ... Full name: System.Console" "WriteLine", Some "System.Console.WriteLine(value: int) : unit" ] @@ -164,19 +164,19 @@ Full name: Microsoft.FSharp.Core.Operators.( |> ) 'U is int list"); ("let res3 = [1] |> List.map id", Some - "val id : x:'T -> 'T + "val id: x: 'T -> 'T Full name: Microsoft.FSharp.Core.Operators.id 'T is int"); ("let res4 = (1.0,[1]) ||>", Some - "val ( ||> ) : arg1:'T1 * arg2:'T2 -> func:('T1 -> 'T2 -> 'U) -> 'U + "val ( ||> ): arg1: 'T1 * arg2: 'T2 -> func: ('T1 -> 'T2 -> 'U) -> 'U Full name: Microsoft.FSharp.Core.Operators.( ||> ) 'T1 is float 'T2 is int list 'U is float"); ("let res4 = (1.0,[1]) ||> List.fold", Some - "val fold : folder:('State -> 'T -> 'State) -> state:'State -> list:'T list -> 'State + "val fold: folder: ('State -> 'T -> 'State) -> state: 'State -> list: 'T list -> 'State Full name: Microsoft.FSharp.Collections.List.fold 'T is int 'State is float"); @@ -203,12 +203,12 @@ Full name: Microsoft.FSharp.Core.Operators.( + ) 'T3 is System.DateTime"); ("let res7 = sin", Some - "val sin : value:'T -> 'T (requires member Sin) + "val sin: value: 'T -> 'T (requires member Sin) Full name: Microsoft.FSharp.Core.Operators.sin 'T is float"); ("let res8 = abs", Some - "val abs : value:'T -> 'T (requires member Abs) + "val abs: value: 'T -> 'T (requires member Abs) Full name: Microsoft.FSharp.Core.Operators.abs 'T is int")] let actualForAllTests = diff --git a/vsintegration/tests/UnitTests/QuickInfoTests.fs b/vsintegration/tests/UnitTests/QuickInfoTests.fs index b53905f57df..1dea4569778 100644 --- a/vsintegration/tests/UnitTests/QuickInfoTests.fs +++ b/vsintegration/tests/UnitTests/QuickInfoTests.fs @@ -126,7 +126,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "abstract member IMyInterface.Represent : unit -> string" + let expected = "abstract member IMyInterface.Represent: unit -> string" Assert.AreEqual(expected, quickInfo) // migrated from legacy test @@ -180,7 +180,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val aa : MyEmployee" + let expected = "val aa: MyEmployee" Assert.AreEqual(expected, quickInfo) () @@ -231,7 +231,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val myTuple : int * string * float * (int -> string * int)" + let expected = "val myTuple: int * string * float * (int -> string * int)" Assert.AreEqual(expected, quickInfo) () @@ -260,7 +260,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val methodSeq : seq<(int -> string * int)>" + let expected = "val methodSeq: seq<(int -> string * int)>" Assert.AreEqual(expected, quickInfo) () @@ -283,7 +283,7 @@ module Test = | _ -> 1 """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val p1 : MyPoint" + let expected = "val p1: MyPoint" Assert.AreEqual(expected, quickInfo) () @@ -306,7 +306,7 @@ module Test = | _ -> 1 """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val p3 : MyPoint" + let expected = "val p3: MyPoint" Assert.AreEqual(expected, quickInfo) () @@ -328,7 +328,7 @@ module Test = else () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val dd : MyDistance" + let expected = "val dd: MyDistance" Assert.AreEqual(expected, quickInfo) () @@ -350,7 +350,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val distance : MyDistance" + let expected = "val distance: MyDistance" Assert.AreEqual(expected, quickInfo) () @@ -380,7 +380,7 @@ module Test = | _ -> 1 """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "static member MyDistance.toMiles : x:MyDistance -> MyDistance" + let expected = "static member MyDistance.toMiles: x: MyDistance -> MyDistance" Assert.AreEqual(expected, quickInfo) () @@ -408,7 +408,7 @@ module Test = | _ -> dd """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "member MyDistance.IncreaseBy : dist:float -> MyDistance" + let expected = "member MyDistance.IncreaseBy: dist: float -> MyDistance" Assert.AreEqual(expected, quickInfo) () From 914967c7ca44d32667d5106ceb552dbffe0985a8 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Tue, 31 Aug 2021 22:44:02 +0100 Subject: [PATCH 03/25] fix tests --- .../ErrorMessages/ClassesTests.fs | 14 +++++++------- .../ErrorMessages/ConstructorTests.fs | 4 ++-- .../ErrorMessages/SuggestionsTests.fs | 2 +- .../ErrorMessages/TypeMismatchTests.fs | 4 ++-- .../ErrorMessages/UnitGenericAbstactType.fs | 2 +- .../constructors/neg_invalid_constructor.fs.bsl | 12 ++++++------ 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs index 11e2efef68a..cf6068602f4 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs @@ -21,8 +21,8 @@ let x = |> typecheck |> shouldFail |> withDiagnostics [ - (Error 768, Line 7, Col 16, Line 7, Col 36, "The member 'Function' does not accept the correct number of arguments. 1 argument(s) are expected, but 2 were given. The required signature is 'member IInterface.Function : (int32 * int32) -> unit'.\nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface.") - (Error 17, Line 7, Col 21, Line 7, Col 29, "The member 'Function : 'a * 'b -> unit' does not have the correct type to override the corresponding abstract method. The required signature is 'Function : (int32 * int32) -> unit'.") + (Error 768, Line 7, Col 16, Line 7, Col 36, "The member 'Function' does not accept the correct number of arguments. 1 argument(s) are expected, but 2 were given. The required signature is 'member IInterface.Function: (int32 * int32) -> unit'.\nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface.") + (Error 17, Line 7, Col 21, Line 7, Col 29, "The member 'Function: 'a * 'b -> unit' does not have the correct type to override the corresponding abstract method. The required signature is 'Function: (int32 * int32) -> unit'.") (Error 783, Line 6, Col 9, Line 6, Col 19, "At least one override did not correctly implement its corresponding abstract member")] [] @@ -67,7 +67,7 @@ let foo = |> shouldFail |> withDiagnostics [ (Error 767, Line 8, Col 16, Line 8, Col 23, "The type Foo contains the member 'MyX' but it is not a virtual or abstract method that is available to override or implement.") - (Error 17, Line 8, Col 18, Line 8, Col 21, "The member 'MyX : unit -> int' does not have the correct type to override any given virtual method") + (Error 17, Line 8, Col 18, Line 8, Col 21, "The member 'MyX: unit -> int' does not have the correct type to override any given virtual method") (Error 783, Line 6, Col 11, Line 6, Col 14, "At least one override did not correctly implement its corresponding abstract member")] [] @@ -86,8 +86,8 @@ let x = |> shouldFail |> withDiagnostics [ (Error 767, Line 8, Col 14, Line 8, Col 34, "The member 'Function' does not correspond to any abstract or virtual method available to override or implement. Maybe you want one of the following:" + System.Environment.NewLine + " MyFunction") - (Error 17, Line 8, Col 19, Line 8, Col 27, "The member 'Function : 'a * 'b -> unit' does not have the correct type to override any given virtual method") - (Error 366, Line 7, Col 3, Line 9, Col 4, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract member IInterface.MyFunction : int32 * int32 -> unit'" + System.Environment.NewLine + "\t'abstract member IInterface.SomeOtherFunction : int32 * int32 -> unit'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") + (Error 17, Line 8, Col 19, Line 8, Col 27, "The member 'Function: 'a * 'b -> unit' does not have the correct type to override any given virtual method") + (Error 366, Line 7, Col 3, Line 9, Col 4, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract member IInterface.MyFunction: int32 * int32 -> unit'" + System.Environment.NewLine + "\t'abstract member IInterface.SomeOtherFunction: int32 * int32 -> unit'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") (Error 783, Line 7, Col 9, Line 7, Col 19, "At least one override did not correctly implement its corresponding abstract member")] [] @@ -104,8 +104,8 @@ type Overload = |> typecheck |> shouldFail |> withDiagnostics [ - (Error 366, Line 7, Col 15, Line 7, Col 24, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract member IOverload.Bar : double -> int'" + System.Environment.NewLine + "\t'abstract member IOverload.Bar : int -> int'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") - (Error 3213, Line 8, Col 21, Line 8, Col 24, "The member 'Bar<'a0> : 'a0 -> int' matches multiple overloads of the same method.\nPlease restrict it to one of the following:" + System.Environment.NewLine + " Bar : double -> int" + System.Environment.NewLine + " Bar : int -> int.")] + (Error 366, Line 7, Col 15, Line 7, Col 24, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract member IOverload.Bar: double -> int'" + System.Environment.NewLine + "\t'abstract member IOverload.Bar: int -> int'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") + (Error 3213, Line 8, Col 21, Line 8, Col 24, "The member 'Bar<'a0> : 'a0 -> int' matches multiple overloads of the same method.\nPlease restrict it to one of the following:" + System.Environment.NewLine + " Bar: double -> int" + System.Environment.NewLine + " Bar: int -> int.")] [] let ``Do Cannot Have Visibility Declarations``() = diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs index 2c591762443..0e4e797a3c4 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs @@ -49,7 +49,7 @@ let p = (Error 39, Line 7, Col 12, Line 7, Col 16, "The value or constructor 'Name' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " nameof" + System.Environment.NewLine + " nan") (Warning 20, Line 7, Col 12, Line 7, Col 25, "The result of this equality expression has type 'bool' and is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'.") (Error 39, Line 8, Col 12, Line 8, Col 15, "The value or constructor 'Age' is not defined.") - (Error 501, Line 7, Col 5, Line 8, Col 21, "The object constructor 'Person' takes 0 argument(s) but is here given 1. The required signature is 'new : unit -> Person'. If some of the arguments are meant to assign values to properties, consider separating those arguments with a comma (',').")] + (Error 501, Line 7, Col 5, Line 8, Col 21, "The object constructor 'Person' takes 0 argument(s) but is here given 1. The required signature is 'new: unit -> Person'. If some of the arguments are meant to assign values to properties, consider separating those arguments with a comma (',').")] [] let ``Missing Ctor Value``() = @@ -96,7 +96,7 @@ let p = |> typecheck |> shouldFail |> withSingleDiagnostic (Error 501, Line 9, Col 5, Line 9, Col 16, - "The object constructor 'Person' takes 0 argument(s) but is here given 1. The required signature is 'new : unit -> Person'.") + "The object constructor 'Person' takes 0 argument(s) but is here given 1. The required signature is 'new: unit -> Person'.") [] let ``Valid Comma In Rec Ctor``() = diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs index 924704c49ae..3c98e75bd11 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs @@ -92,7 +92,7 @@ let c = MyClass(Property = "") |> typecheck |> shouldFail |> withSingleDiagnostic (Error 495, Line 7, Col 17, Line 7, Col 25, - ("The object constructor 'MyClass' has no argument or settable return property 'Property'. The required signature is new : unit -> MyClass. Maybe you want one of the following:" + System.Environment.NewLine + " MyProperty" + System.Environment.NewLine + " MyProperty2" + System.Environment.NewLine + " ABigProperty")) + ("The object constructor 'MyClass' has no argument or settable return property 'Property'. The required signature is new: unit -> MyClass. Maybe you want one of the following:" + System.Environment.NewLine + " MyProperty" + System.Environment.NewLine + " MyProperty2" + System.Environment.NewLine + " ABigProperty")) [] let ``Suggest Generic Type`` () = diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs index 4326a4a2a3d..166da70cdcd 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs @@ -125,6 +125,6 @@ type Derived3() = |> typecheck |> shouldFail |> withDiagnostics [ - (Error 856, Line 8, Col 16, Line 8, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract member Base.Member : int * string -> string") - (Error 856, Line 12, Col 16, Line 12, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract member Base.Member : int * string -> string") + (Error 856, Line 8, Col 16, Line 8, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract member Base.Member: int * string -> string") + (Error 856, Line 12, Col 16, Line 12, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract member Base.Member: int * string -> string") (Error 1, Line 16, Col 24, Line 16, Col 34, "This expression was expected to have type\n 'int' \nbut here has type\n 'string' ")] diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/UnitGenericAbstactType.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/UnitGenericAbstactType.fs index 1591220d021..d5674beff82 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/UnitGenericAbstactType.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/UnitGenericAbstactType.fs @@ -22,4 +22,4 @@ type SomeEDF () = |> typecheck |> shouldFail |> withSingleDiagnostic (Error 17, Line 6, Col 21, Line 6, Col 26, - "The member 'Apply : int -> unit' is specialized with 'unit' but 'unit' can't be used as return type of an abstract method parameterized on return type.") + "The member 'Apply: int -> unit' is specialized with 'unit' but 'unit' can't be used as return type of an abstract method parameterized on return type.") diff --git a/tests/FSharp.Compiler.ComponentTests/resources/tests/typecheck/constructors/neg_invalid_constructor.fs.bsl b/tests/FSharp.Compiler.ComponentTests/resources/tests/typecheck/constructors/neg_invalid_constructor.fs.bsl index 77de827d1d9..6d456b36851 100644 --- a/tests/FSharp.Compiler.ComponentTests/resources/tests/typecheck/constructors/neg_invalid_constructor.fs.bsl +++ b/tests/FSharp.Compiler.ComponentTests/resources/tests/typecheck/constructors/neg_invalid_constructor.fs.bsl @@ -3,20 +3,20 @@ neg_invalid_constructor.fs (3,29)-(3,56) typecheck error A unique overload for m Known type of argument: 'a list Candidates: - - new : col:'b -> ImmutableStack<'a> - - private new : items:'a list -> ImmutableStack<'a> + - new: col: 'b -> ImmutableStack<'a> + - private new: items: 'a list -> ImmutableStack<'a> neg_invalid_constructor.fs (4,93)-(4,111) typecheck error A unique overload for method 'ImmutableStack`1' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: 'a list Candidates: - - new : col:'b -> ImmutableStack<'a> - - private new : items:'a list -> ImmutableStack<'a> + - new: col: 'b -> ImmutableStack<'a> + - private new: items: 'a list -> ImmutableStack<'a> neg_invalid_constructor.fs (7,30)-(7,60) typecheck error A unique overload for method 'ImmutableStack`1' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: 'a list Candidates: - - new : col:'b -> ImmutableStack<'a> when 'b :> seq<'c> - - private new : items:'a list -> ImmutableStack<'a> + - new: col: 'b -> ImmutableStack<'a> when 'b :> seq<'c> + - private new: items: 'a list -> ImmutableStack<'a> neg_invalid_constructor.fs (7,30)-(7,60) typecheck error This is not a valid object construction expression. Explicit object constructors must either call an alternate constructor or initialize all fields of the object and specify a call to a super class constructor. \ No newline at end of file From ca1f05884b82981b2fece6851b7a17c8ccc1bb77 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Tue, 31 Aug 2021 23:03:32 +0100 Subject: [PATCH 04/25] fix tests --- .../ErrorMessages/ConstructorTests.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs index 0e4e797a3c4..71ec6524a92 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ConstructorTests.fs @@ -64,7 +64,7 @@ let p = """ |> typecheck |> shouldFail - |> withSingleDiagnostic (Error 496, Line 7, Col 5, Line 8, Col 21, "The member or object constructor 'Person' requires 1 argument(s). The required signature is 'new : x:int -> Person'.") + |> withSingleDiagnostic (Error 496, Line 7, Col 5, Line 8, Col 21, "The member or object constructor 'Person' requires 1 argument(s). The required signature is 'new: x: int -> Person'.") [] let ``Extra Argument In Ctor``() = @@ -79,7 +79,7 @@ let p = |> typecheck |> shouldFail |> withSingleDiagnostic (Error 501, Line 7, Col 5, Line 7, Col 14, - "The object constructor 'Person' takes 0 argument(s) but is here given 1. The required signature is 'new : unit -> Person'.") + "The object constructor 'Person' takes 0 argument(s) but is here given 1. The required signature is 'new: unit -> Person'.") [] let ``Extra Argument In Ctor2``() = From f35c16d404f204e6816c47b966994157766eb68d Mon Sep 17 00:00:00 2001 From: Don Syme Date: Tue, 31 Aug 2021 23:27:10 +0100 Subject: [PATCH 05/25] Print 'abstract' instead of 'abstract member' --- src/fsharp/FSharp.Core/prim-types.fsi | 10 +-- src/fsharp/NicePrint.fs | 31 ++++--- src/fsharp/ReferenceResolver.fsi | 6 +- src/fsharp/absil/illib.fsi | 2 +- src/fsharp/utils/FileSystem.fsi | 88 +++++++++---------- .../ErrorMessages/ClassesTests.fs | 4 +- .../ErrorMessages/TypeMismatchTests.fs | 4 +- .../E_Clashing_Values_in_AbstractClass03.bsl | 8 +- .../E_Clashing_Values_in_AbstractClass04.bsl | 8 +- .../printing/z.output.test.1000.stderr.bsl | 2 +- .../printing/z.output.test.1000.stdout.47.bsl | 46 +++++----- .../printing/z.output.test.1000.stdout.50.bsl | 46 +++++----- .../printing/z.output.test.200.stderr.bsl | 2 +- .../printing/z.output.test.200.stdout.47.bsl | 46 +++++----- .../printing/z.output.test.200.stdout.50.bsl | 46 +++++----- .../printing/z.output.test.default.stderr.bsl | 2 +- .../z.output.test.default.stdout.47.bsl | 46 +++++----- .../z.output.test.default.stdout.50.bsl | 46 +++++----- .../printing/z.output.test.off.stderr.bsl | 2 +- .../printing/z.output.test.off.stdout.47.bsl | 46 +++++----- .../printing/z.output.test.off.stdout.50.bsl | 46 +++++----- .../printing/z.output.test.quiet.stderr.bsl | 2 +- .../overloads/neg_interface_generics.bsl | 4 +- .../overloads/neg_interface_generics.fsx | 12 +-- tests/fsharp/typecheck/sigs/neg25.bsl | 22 ++--- tests/fsharp/typecheck/sigs/neg26.bsl | 6 +- tests/fsharp/typecheck/sigs/neg36.bsl | 4 +- .../NamedArguments/E_NumParamMismatch01.fs | 4 +- .../E_MoreThanOneDispatchSlotMatch01.fs | 2 +- .../E_CallToAbstractMember02.fs | 2 +- .../E_CallToAbstractMember03.fs | 2 +- .../ClassTypes/Misc/E_AbstractClass01.fs | 4 +- .../E_InterfaceNotFullyImpl03.fs | 2 +- .../E_MultipleInterfaceInheritance.fs | 4 +- .../TypeKindInference/infer_interface003e.fs | 4 +- .../WithOOP/E_Polymorphism01.fsx | 2 +- .../Misc/InterfaceCrossConstrained01.fsx | 4 +- .../Misc/InterfaceCrossConstrained02.fsx | 4 +- .../SubtypeArgInterfaceWithAbstractMember.fsx | 2 +- .../Tests.LanguageService.QuickInfo.fs | 2 +- .../tests/UnitTests/QuickInfoTests.fs | 2 +- 41 files changed, 315 insertions(+), 312 deletions(-) diff --git a/src/fsharp/FSharp.Core/prim-types.fsi b/src/fsharp/FSharp.Core/prim-types.fsi index 917abe58298..1683853779c 100644 --- a/src/fsharp/FSharp.Core/prim-types.fsi +++ b/src/fsharp/FSharp.Core/prim-types.fsi @@ -2010,7 +2010,7 @@ namespace Microsoft.FSharp.Core /// /// /// 'U - abstract member Invoke : func:'T -> 'U + abstract Invoke : func:'T -> 'U /// Convert an F# first class function value to a value of type /// @@ -2237,7 +2237,7 @@ namespace Microsoft.FSharp.Core /// The second arg. /// /// The function result. - abstract member Invoke : arg1:'T1 * arg2:'T2 -> 'U + abstract Invoke : arg1:'T1 * arg2:'T2 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept two curried arguments without intervening execution. @@ -2268,7 +2268,7 @@ namespace Microsoft.FSharp.Core /// The third arg. /// /// The function result. - abstract member Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 -> 'U + abstract Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept three curried arguments without intervening execution. @@ -2299,7 +2299,7 @@ namespace Microsoft.FSharp.Core /// The fourth arg. /// /// The function result. - abstract member Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 * arg4:'T4 -> 'U + abstract Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 * arg4:'T4 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept four curried arguments without intervening execution. @@ -2331,7 +2331,7 @@ namespace Microsoft.FSharp.Core /// The fifth arg. /// /// The function result. - abstract member Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 * arg4:'T4 * arg5:'T5 -> 'U + abstract Invoke : arg1:'T1 * arg2:'T2 * arg3:'T3 * arg4:'T4 * arg5:'T5 -> 'U /// Adapt an F# first class function value to be an optimized function value that can /// accept five curried arguments without intervening execution. diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 80d8a879c2d..4a94e92df6e 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -151,12 +151,12 @@ module internal PrintUtilities = emptyL else xml.UnprocessedLines - |> Array.map (fun x -> + |> Array.collect (fun x -> x.Split('\n') // These lines may have new-lines in them and we need to split them so we can format it ) - |> Array.concat - /// note here that we don't add a space after the triple-slash, because - /// the implicit spacing hasn't been trimmed here. + + // note here that we don't add a space after the triple-slash, because + // the implicit spacing hasn't been trimmed here. |> Array.map (fun line -> ("///" + line) |> tagText |> wordL) |> List.ofArray |> aboveListL @@ -410,19 +410,22 @@ module private PrintTypes = let stat = if memFlags.IsInstance || (memFlags.MemberKind = SynMemberKind.Constructor) then emptyL else WordL.keywordStatic + let stat = - if memFlags.IsDispatchSlot then stat ++ WordL.keywordAbstract - elif memFlags.IsOverrideOrExplicitImpl then stat ++ WordL.keywordOverride + if memFlags.IsOverrideOrExplicitImpl then stat ++ WordL.keywordOverride else stat + let stat = - if memFlags.IsOverrideOrExplicitImpl then stat else - match memFlags.MemberKind with - | SynMemberKind.ClassConstructor - | SynMemberKind.Constructor - | SynMemberKind.PropertyGetSet -> stat - | SynMemberKind.Member - | SynMemberKind.PropertyGet - | SynMemberKind.PropertySet -> stat ++ WordL.keywordMember + if memFlags.IsDispatchSlot then stat ++ WordL.keywordAbstract + elif memFlags.IsOverrideOrExplicitImpl then stat + else + match memFlags.MemberKind with + | SynMemberKind.ClassConstructor + | SynMemberKind.Constructor + | SynMemberKind.PropertyGetSet -> stat + | SynMemberKind.Member + | SynMemberKind.PropertyGet + | SynMemberKind.PropertySet -> stat ++ WordL.keywordMember // let stat = if memFlags.IsFinal then stat ++ wordL "final" else stat in stat diff --git a/src/fsharp/ReferenceResolver.fsi b/src/fsharp/ReferenceResolver.fsi index 6b5c1de40a0..8ef591de7f6 100644 --- a/src/fsharp/ReferenceResolver.fsi +++ b/src/fsharp/ReferenceResolver.fsi @@ -34,10 +34,10 @@ type internal ILegacyReferenceResolver = /// Note: If an explicit "mscorlib" is given, then --noframework is being used, and the whole ReferenceResolver logic is essentially /// unused. However in the future an option may be added to allow an explicit specification of /// a .NET Framework version to use for scripts. - abstract member HighestInstalledNetFrameworkVersion: unit -> string + abstract HighestInstalledNetFrameworkVersion: unit -> string /// Perform assembly resolution on the given references under the given conditions - abstract member Resolve: + abstract Resolve: resolutionEnvironment: LegacyResolutionEnvironment * references:(string * string) [] * targetFrameworkVersion:string * @@ -53,7 +53,7 @@ type internal ILegacyReferenceResolver = /// Get the Reference Assemblies directory for the .NET Framework (on Windows) /// This is added to the default resolution path for /// design-time compilations. - abstract member DotNetFrameworkReferenceAssembliesRootDirectory: string + abstract DotNetFrameworkReferenceAssembliesRootDirectory: string // Note, two implementations of this are provided, and no further implementations can be added from // outside FSharp.Compiler.Service diff --git a/src/fsharp/absil/illib.fsi b/src/fsharp/absil/illib.fsi index 536fb240f00..f74e6b47755 100644 --- a/src/fsharp/absil/illib.fsi +++ b/src/fsharp/absil/illib.fsi @@ -475,7 +475,7 @@ module internal Tables = /// Interface that defines methods for comparing objects using partial equality relation type internal IPartialEqualityComparer<'T> = inherit IEqualityComparer<'T> - abstract member InEqualityRelation: 'T -> bool + abstract InEqualityRelation: 'T -> bool /// Interface that defines methods for comparing objects using partial equality relation module internal IPartialEqualityComparer = diff --git a/src/fsharp/utils/FileSystem.fsi b/src/fsharp/utils/FileSystem.fsi index 88428c4d88f..53dd6e7e548 100644 --- a/src/fsharp/utils/FileSystem.fsi +++ b/src/fsharp/utils/FileSystem.fsi @@ -128,10 +128,10 @@ module internal FileSystemUtils = /// Type which we use to load assemblies. type public IAssemblyLoader = /// Used to load a dependency for F# Interactive and in an unused corner-case of type provider loading - abstract member AssemblyLoad: assemblyName:AssemblyName -> Assembly + abstract AssemblyLoad: assemblyName:AssemblyName -> Assembly /// Used to load type providers and located assemblies in F# Interactive - abstract member AssemblyLoadFrom: fileName:string -> Assembly + abstract AssemblyLoadFrom: fileName:string -> Assembly /// Default implementation for IAssemblyLoader type DefaultAssemblyLoader = @@ -142,138 +142,138 @@ type DefaultAssemblyLoader = type public IFileSystem = // Assembly loader. - abstract member AssemblyLoader : IAssemblyLoader + abstract AssemblyLoader : IAssemblyLoader /// Open the file for read, returns ByteMemory, uses either FileStream (for smaller files) or MemoryMappedFile (for potentially big files, such as dlls). - abstract member OpenFileForReadShim: filePath: string * ?useMemoryMappedFile: bool * ?shouldShadowCopy: bool -> Stream + abstract OpenFileForReadShim: filePath: string * ?useMemoryMappedFile: bool * ?shouldShadowCopy: bool -> Stream /// Open the file for writing. Returns a Stream. - abstract member OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream + abstract OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream /// Take in a filename with an absolute path, and return the same filename /// but canonicalized with respect to extra path separators (e.g. C:\\\\foo.txt) /// and '..' portions - abstract member GetFullPathShim: fileName:string -> string + abstract GetFullPathShim: fileName:string -> string /// Take in a directory, filename, and return canonicalized path to the filename in directory. /// If filename path is rooted, ignores directory and returns filename path. /// Otherwise, combines directory with filename and gets full path via GetFullPathShim(string). - abstract member GetFullFilePathInDirectoryShim: dir: string -> fileName: string -> string + abstract GetFullFilePathInDirectoryShim: dir: string -> fileName: string -> string /// A shim over Path.IsPathRooted - abstract member IsPathRootedShim: path:string -> bool + abstract IsPathRootedShim: path:string -> bool /// Removes relative parts from any full paths - abstract member NormalizePathShim: path: string -> string + abstract NormalizePathShim: path: string -> string /// A shim over Path.IsInvalidPath - abstract member IsInvalidPathShim: path:string -> bool + abstract IsInvalidPathShim: path:string -> bool /// A shim over Path.GetTempPath - abstract member GetTempPathShim: unit -> string + abstract GetTempPathShim: unit -> string /// A shim for getting directory name from path - abstract member GetDirectoryNameShim: path: string -> string + abstract GetDirectoryNameShim: path: string -> string /// Utc time of the last modification - abstract member GetLastWriteTimeShim: fileName:string -> DateTime + abstract GetLastWriteTimeShim: fileName:string -> DateTime // Utc time of creation - abstract member GetCreationTimeShim: path: string -> DateTime + abstract GetCreationTimeShim: path: string -> DateTime // A shim over file copying. - abstract member CopyShim: src: string * dest: string * overwrite: bool -> unit + abstract CopyShim: src: string * dest: string * overwrite: bool -> unit /// A shim over File.Exists - abstract member FileExistsShim: fileName: string -> bool + abstract FileExistsShim: fileName: string -> bool /// A shim over File.Delete - abstract member FileDeleteShim: fileName: string -> unit + abstract FileDeleteShim: fileName: string -> unit /// A shim over Directory.Exists - abstract member DirectoryCreateShim: path: string -> DirectoryInfo + abstract DirectoryCreateShim: path: string -> DirectoryInfo /// A shim over Directory.Exists - abstract member DirectoryExistsShim: path: string -> bool + abstract DirectoryExistsShim: path: string -> bool /// A shim over Directory.Delete - abstract member DirectoryDeleteShim: path: string -> unit + abstract DirectoryDeleteShim: path: string -> unit /// A shim over Directory.EnumerateFiles - abstract member EnumerateFilesShim: path: string * pattern: string -> string seq + abstract EnumerateFilesShim: path: string * pattern: string -> string seq /// A shim over Directory.EnumerateDirectories - abstract member EnumerateDirectoriesShim: path: string -> string seq + abstract EnumerateDirectoriesShim: path: string -> string seq /// Used to determine if a file will not be subject to deletion during the lifetime of a typical client process. - abstract member IsStableFileHeuristic: fileName:string -> bool + abstract IsStableFileHeuristic: fileName:string -> bool /// Represents a default (memory-mapped) implementation of the file system type DefaultFileSystem = /// Create a default implementation of the file system new: unit -> DefaultFileSystem - abstract member AssemblyLoader: IAssemblyLoader + abstract AssemblyLoader: IAssemblyLoader override AssemblyLoader: IAssemblyLoader - abstract member OpenFileForReadShim: filePath: string * ?useMemoryMappedFile: bool * ?shouldShadowCopy: bool -> Stream + abstract OpenFileForReadShim: filePath: string * ?useMemoryMappedFile: bool * ?shouldShadowCopy: bool -> Stream override OpenFileForReadShim: filePath: string * ?useMemoryMappedFile: bool * ?shouldShadowCopy: bool -> Stream - abstract member OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream + abstract OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream override OpenFileForWriteShim: filePath: string * ?fileMode: FileMode * ?fileAccess: FileAccess * ?fileShare: FileShare -> Stream - abstract member GetFullPathShim: fileName: string -> string + abstract GetFullPathShim: fileName: string -> string override GetFullPathShim: fileName: string -> string - abstract member GetFullFilePathInDirectoryShim: dir: string -> fileName: string -> string + abstract GetFullFilePathInDirectoryShim: dir: string -> fileName: string -> string override GetFullFilePathInDirectoryShim: dir: string -> fileName: string -> string - abstract member IsPathRootedShim: path: string -> bool + abstract IsPathRootedShim: path: string -> bool override IsPathRootedShim: path: string -> bool - abstract member NormalizePathShim: path: string -> string + abstract NormalizePathShim: path: string -> string override NormalizePathShim: path: string -> string - abstract member IsInvalidPathShim: path: string -> bool + abstract IsInvalidPathShim: path: string -> bool override IsInvalidPathShim: path: string -> bool - abstract member GetTempPathShim: unit -> string + abstract GetTempPathShim: unit -> string override GetTempPathShim: unit -> string - abstract member GetDirectoryNameShim: path: string -> string + abstract GetDirectoryNameShim: path: string -> string override GetDirectoryNameShim: path: string -> string - abstract member GetLastWriteTimeShim: fileName: string -> DateTime + abstract GetLastWriteTimeShim: fileName: string -> DateTime override GetLastWriteTimeShim: fileName: string -> DateTime - abstract member GetCreationTimeShim: path: string -> DateTime + abstract GetCreationTimeShim: path: string -> DateTime override GetCreationTimeShim: path: string -> DateTime - abstract member CopyShim: src: string * dest: string * overwrite: bool -> unit + abstract CopyShim: src: string * dest: string * overwrite: bool -> unit override CopyShim: src: string * dest: string * overwrite: bool -> unit - abstract member FileExistsShim: fileName: string -> bool + abstract FileExistsShim: fileName: string -> bool override FileExistsShim: fileName: string -> bool - abstract member FileDeleteShim: fileName: string -> unit + abstract FileDeleteShim: fileName: string -> unit override FileDeleteShim: fileName: string -> unit - abstract member DirectoryCreateShim: path: string -> DirectoryInfo + abstract DirectoryCreateShim: path: string -> DirectoryInfo override DirectoryCreateShim: path: string -> DirectoryInfo - abstract member DirectoryExistsShim: path: string -> bool + abstract DirectoryExistsShim: path: string -> bool override DirectoryExistsShim: path: string -> bool - abstract member DirectoryDeleteShim: path: string -> unit + abstract DirectoryDeleteShim: path: string -> unit override DirectoryDeleteShim: path: string -> unit - abstract member EnumerateFilesShim: path: string * pattern: string -> string seq + abstract EnumerateFilesShim: path: string * pattern: string -> string seq override EnumerateFilesShim: path: string * pattern: string -> string seq - abstract member EnumerateDirectoriesShim: path: string -> string seq + abstract EnumerateDirectoriesShim: path: string -> string seq override EnumerateDirectoriesShim: path: string -> string seq - abstract member IsStableFileHeuristic: fileName: string -> bool + abstract IsStableFileHeuristic: fileName: string -> bool override IsStableFileHeuristic: fileName: string -> bool interface IFileSystem diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs index cf6068602f4..bb92abab3dc 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs @@ -87,7 +87,7 @@ let x = |> withDiagnostics [ (Error 767, Line 8, Col 14, Line 8, Col 34, "The member 'Function' does not correspond to any abstract or virtual method available to override or implement. Maybe you want one of the following:" + System.Environment.NewLine + " MyFunction") (Error 17, Line 8, Col 19, Line 8, Col 27, "The member 'Function: 'a * 'b -> unit' does not have the correct type to override any given virtual method") - (Error 366, Line 7, Col 3, Line 9, Col 4, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract member IInterface.MyFunction: int32 * int32 -> unit'" + System.Environment.NewLine + "\t'abstract member IInterface.SomeOtherFunction: int32 * int32 -> unit'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") + (Error 366, Line 7, Col 3, Line 9, Col 4, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract IInterface.MyFunction: int32 * int32 -> unit'" + System.Environment.NewLine + "\t'abstract IInterface.SomeOtherFunction: int32 * int32 -> unit'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") (Error 783, Line 7, Col 9, Line 7, Col 19, "At least one override did not correctly implement its corresponding abstract member")] [] @@ -104,7 +104,7 @@ type Overload = |> typecheck |> shouldFail |> withDiagnostics [ - (Error 366, Line 7, Col 15, Line 7, Col 24, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract member IOverload.Bar: double -> int'" + System.Environment.NewLine + "\t'abstract member IOverload.Bar: int -> int'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") + (Error 366, Line 7, Col 15, Line 7, Col 24, "No implementation was given for those members: " + System.Environment.NewLine + "\t'abstract IOverload.Bar: double -> int'" + System.Environment.NewLine + "\t'abstract IOverload.Bar: int -> int'" + System.Environment.NewLine + "Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'.") (Error 3213, Line 8, Col 21, Line 8, Col 24, "The member 'Bar<'a0> : 'a0 -> int' matches multiple overloads of the same method.\nPlease restrict it to one of the following:" + System.Environment.NewLine + " Bar: double -> int" + System.Environment.NewLine + " Bar: int -> int.")] [] diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs index 166da70cdcd..24adc58d391 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs @@ -125,6 +125,6 @@ type Derived3() = |> typecheck |> shouldFail |> withDiagnostics [ - (Error 856, Line 8, Col 16, Line 8, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract member Base.Member: int * string -> string") - (Error 856, Line 12, Col 16, Line 12, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract member Base.Member: int * string -> string") + (Error 856, Line 8, Col 16, Line 8, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract Base.Member: int * string -> string") + (Error 856, Line 12, Col 16, Line 12, Col 22, "This override takes a different number of arguments to the corresponding abstract member. The following abstract members were found:" + System.Environment.NewLine + " abstract Base.Member: int * string -> string") (Error 1, Line 16, Col 24, Line 16, Col 34, "This expression was expected to have type\n 'int' \nbut here has type\n 'string' ")] diff --git a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl index d95b136a7c2..ea0c9beaff0 100644 --- a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl +++ b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl @@ -4,13 +4,13 @@ E_Clashing_Values_in_AbstractClass03.fsx(16,18,16,25): typecheck error FS0041: A Known type of argument: int Candidates: - - abstract member D.M : 'T -> int - - abstract member D.M : 'U -> string + - abstract D.M : 'T -> int + - abstract D.M : 'U -> string E_Clashing_Values_in_AbstractClass03.fsx(17,18,17,25): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: int Candidates: - - abstract member D.M : 'T -> int - - abstract member D.M : 'U -> string + - abstract D.M : 'T -> int + - abstract D.M : 'U -> string diff --git a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl index 77e2d6c7e33..832cfb836c9 100644 --- a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl +++ b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl @@ -4,13 +4,13 @@ E_Clashing_Values_in_AbstractClass04.fsx(16,18,16,25): typecheck error FS0041: A Known type of argument: int Candidates: - - abstract member D.M : 'T -> int - - abstract member D.M : 'U -> string + - abstract D.M : 'T -> int + - abstract D.M : 'U -> string E_Clashing_Values_in_AbstractClass04.fsx(17,18,17,25): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: int Candidates: - - abstract member D.M : 'T -> int - - abstract member D.M : 'U -> string + - abstract D.M : 'T -> int + - abstract D.M : 'U -> string diff --git a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl index 50f1d16cc58..6c1b34b3d03 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' +stdin(825,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;; diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index 53048b2a45d..b6df048d2c7 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -1508,15 +1508,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -1585,21 +1585,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -2428,47 +2428,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -2518,13 +2518,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index 9b2212a23af..2b5f1c95fda 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -1510,15 +1510,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -1587,21 +1587,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -2430,47 +2430,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -2520,13 +2520,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl index 50f1d16cc58..6c1b34b3d03 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' +stdin(825,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;; diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index c9818981ca6..1a09b074b87 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -753,15 +753,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -830,21 +830,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -1673,47 +1673,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -1763,13 +1763,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index cac19da585a..b4ec64da765 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -755,15 +755,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -832,21 +832,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -1675,47 +1675,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -1765,13 +1765,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl index 50f1d16cc58..6c1b34b3d03 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' +stdin(825,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;; diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index 39fbb98d75e..b5b0c74f649 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -5055,15 +5055,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -5132,21 +5132,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -5975,47 +5975,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -6065,13 +6065,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index a48ebadd2e3..a9b173950d7 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -5057,15 +5057,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -5134,21 +5134,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -5977,47 +5977,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -6067,13 +6067,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl index 50f1d16cc58..6c1b34b3d03 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' +stdin(825,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;; diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index 11e4dbb6ad3..0f1dd4f9820 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -539,15 +539,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -602,21 +602,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -1443,47 +1443,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -1533,13 +1533,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index f41b2b0bd6c..622187b8cb3 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -541,15 +541,15 @@ type F1 = val x2: F1 member B: unit -> int member D: x: int -> int + 2 overloads - abstract member MMM: bool -> bool + abstract MMM: bool -> bool override ToString: unit -> string static member A: unit -> int static member C: unit -> int - abstract member AAA: int - abstract member BBB: bool with set + abstract AAA: int + abstract BBB: bool with set member D2: int member E: int - abstract member ZZZ: int + abstract ZZZ: int static val mutable private sx: F1 static val mutable private sx2: F1 [] @@ -604,21 +604,21 @@ module Regression5218 = > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = - abstract member AbstractMember: int -> int + abstract AbstractMember: int -> int type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = type Writer<'a> = - abstract member get_path: unit -> string + abstract get_path: unit -> string type MyClass = interface Writer val path: string @@ -1445,47 +1445,47 @@ val f: (unit -> int) > > module Regression5265_PriPri = type private IAPrivate = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPrivate - abstract member Q: int + abstract Q: int > val it: string = "NOTE: Expect IAInternal less accessible IBPublic" > > module Regression5265_IntInt = type internal IAInternal = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_IntPri = type internal IAInternal = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q: int + abstract Q: int > module Regression5265_PubPub = type IAPublic = - abstract member P: int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubInt = type IAPublic = - abstract member P: int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q: int + abstract Q: int > module Regression5265_PubPri = type IAPublic = - abstract member P: int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q: int + abstract Q: int > val it: string = "Regression4232: Expect an error about duplicate virtual methods from parent type" @@ -1535,13 +1535,13 @@ val f: (unit -> int) > > module ReflectionEmit = type IA = - abstract member M: #IB -> int + abstract M: #IB -> int and IB = - abstract member M: #IA -> int + abstract M: #IA -> int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M: int + abstract M: int and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M: int + abstract M: int > val it: string = "Regression_139182: Expect the follow code to be accepted without error" diff --git a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl index 50f1d16cc58..6c1b34b3d03 100644 --- a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl @@ -308,7 +308,7 @@ stdin(793,19): error FS0410: The type 'IAInternal' is less accessible than the v override x.M(a:string) = 1 -------------------^ -stdin(825,20): error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract member Regression4232.D.M: 'U -> int' and 'abstract member Regression4232.D.M: 'T -> int' +stdin(825,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;; diff --git a/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl b/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl index 98c63216419..3ab14f873e6 100644 --- a/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl +++ b/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl @@ -6,5 +6,5 @@ neg_interface_generics.fsx(20,9,20,27): typecheck error FS0041: No overloads mat Known types of arguments: string * XmlReader Available overloads: - - abstract member IFoo.Foo : t:Type * r:TextReader -> obj * 't // Argument 't' doesn't match - - abstract member IFoo.Foo : t:string * r:TextReader -> obj * 't // Argument 'r' doesn't match + - abstract IFoo.Foo : t:Type * r:TextReader -> obj * 't // Argument 't' doesn't match + - abstract IFoo.Foo : t:string * r:TextReader -> obj * 't // Argument 'r' doesn't match diff --git a/tests/fsharp/typecheck/overloads/neg_interface_generics.fsx b/tests/fsharp/typecheck/overloads/neg_interface_generics.fsx index 694b2de923e..dbfeed64193 100644 --- a/tests/fsharp/typecheck/overloads/neg_interface_generics.fsx +++ b/tests/fsharp/typecheck/overloads/neg_interface_generics.fsx @@ -2,12 +2,12 @@ open System open System.Xml open System.IO type IFoo = - abstract member Foo : t:string * r:XmlReader -> obj - abstract member Foo : t:Type * r:TextReader -> obj - abstract member Foo<'t> : t:string * r:TextReader -> obj * 't - abstract member Foo<'t> : t:Type * r:TextReader -> obj * 't - abstract member Foo<'t when 't : struct> : TextReader -> 't - abstract member Foo<'t when 't :> IDisposable > : XmlReader -> 't + abstract Foo: t: string * r: XmlReader -> obj + abstract Foo: t: Type * r: TextReader -> obj + abstract Foo<'t> : t: string * r: TextReader -> obj * 't + abstract Foo<'t> : t: Type * r: TextReader -> obj * 't + abstract Foo<'t when 't : struct> : TextReader -> 't + abstract Foo<'t when 't :> IDisposable > : XmlReader -> 't let foo = Unchecked.defaultof let r = Unchecked.defaultof diff --git a/tests/fsharp/typecheck/sigs/neg25.bsl b/tests/fsharp/typecheck/sigs/neg25.bsl index ebbf45ae77b..ec622a98913 100644 --- a/tests/fsharp/typecheck/sigs/neg25.bsl +++ b/tests/fsharp/typecheck/sigs/neg25.bsl @@ -1,23 +1,23 @@ -neg25.fs(15,23,15,31): typecheck error FS0366: No implementation was given for 'abstract member NegativeTests.Test1.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(15,23,15,31): typecheck error FS0366: No implementation was given for 'abstract NegativeTests.Test1.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(32,23,32,31): typecheck error FS0366: No implementation was given for 'abstract member NegativeTests.Test2.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(32,23,32,31): typecheck error FS0366: No implementation was given for 'abstract NegativeTests.Test2.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(64,19,64,45): typecheck error FS0366: No implementation was given for 'abstract member NegativeTestsActualRepro1.INodeWrapper.Node : NegativeTestsActualRepro1.Node'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(64,19,64,45): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro1.INodeWrapper.Node : NegativeTestsActualRepro1.Node'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(87,19,87,25): typecheck error FS0366: No implementation was given for 'abstract member NegativeTestsActualRepro3.IThing.Name : string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(87,19,87,25): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro3.IThing.Name : string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(104,19,104,27): typecheck error FS0366: No implementation was given for 'abstract member AnotherNegativeTest.ITestSub.Meth1 : int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(104,19,104,27): typecheck error FS0366: No implementation was given for 'abstract AnotherNegativeTest.ITestSub.Meth1 : int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. neg25.fs(126,27,126,35): typecheck error FS0366: No implementation was given for those members: - 'abstract member MissingInterfaceMemberTests.Test0.ITestSub.Meth2 : int -> int' - 'abstract member MissingInterfaceMemberTests.Test0.ITest.Meth1 : string -> string' + 'abstract MissingInterfaceMemberTests.Test0.ITestSub.Meth2 : int -> int' + 'abstract MissingInterfaceMemberTests.Test0.ITest.Meth1 : string -> string' Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(147,27,147,35): typecheck error FS0366: No implementation was given for 'abstract member MissingInterfaceMemberTests.Test1.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(147,27,147,35): typecheck error FS0366: No implementation was given for 'abstract MissingInterfaceMemberTests.Test1.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(171,27,171,35): typecheck error FS0366: No implementation was given for 'abstract member MissingInterfaceMemberTests.Test3.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(171,27,171,35): typecheck error FS0366: No implementation was given for 'abstract MissingInterfaceMemberTests.Test3.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(192,23,192,45): typecheck error FS0366: No implementation was given for 'abstract member NegativeTestsActualRepro2.IEvent.Add2 : ('a -> unit) -> unit'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(192,23,192,45): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro2.IEvent.Add2 : ('a -> unit) -> unit'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(211,23,211,29): typecheck error FS0366: No implementation was given for 'abstract member NegativeTestsActualRepro4.IThing.Name : string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(211,23,211,29): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro4.IThing.Name : string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. diff --git a/tests/fsharp/typecheck/sigs/neg26.bsl b/tests/fsharp/typecheck/sigs/neg26.bsl index 7347454e992..4de8918d065 100644 --- a/tests/fsharp/typecheck/sigs/neg26.bsl +++ b/tests/fsharp/typecheck/sigs/neg26.bsl @@ -1,9 +1,9 @@ -neg26.fs(15,13,15,56): typecheck error FS0366: No implementation was given for 'abstract member ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg26.fs(15,13,15,56): typecheck error FS0366: No implementation was given for 'abstract ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg26.fs(27,13,27,66): typecheck error FS0366: No implementation was given for 'abstract member ITestSub.Meth2 : int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg26.fs(27,13,27,66): typecheck error FS0366: No implementation was given for 'abstract ITestSub.Meth2 : int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg26.fs(40,27,40,32): typecheck error FS0361: The override 'Meth1 : int -> int' implements more than one abstract slot, e.g. 'abstract member ITestSub.Meth1 : int -> int' and 'abstract member ITest.Meth1 : int -> int' +neg26.fs(40,27,40,32): typecheck error FS0361: The override 'Meth1 : int -> int' implements more than one abstract slot, e.g. 'abstract ITestSub.Meth1 : int -> int' and 'abstract ITest.Meth1 : int -> int' neg26.fs(53,27,53,32): typecheck error FS3213: The member 'Meth1: 'a -> 'a' matches multiple overloads of the same method. Please restrict it to one of the following: diff --git a/tests/fsharp/typecheck/sigs/neg36.bsl b/tests/fsharp/typecheck/sigs/neg36.bsl index bbee183544f..3d1fe90f661 100644 --- a/tests/fsharp/typecheck/sigs/neg36.bsl +++ b/tests/fsharp/typecheck/sigs/neg36.bsl @@ -1,4 +1,4 @@ -neg36.fs(11,20,11,21): typecheck error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract member TestAbstractOverrides_Bug4232_Case1.D.M : 'U -> int' and 'abstract member TestAbstractOverrides_Bug4232_Case1.D.M : 'T -> int' +neg36.fs(11,20,11,21): typecheck error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract TestAbstractOverrides_Bug4232_Case1.D.M : 'U -> int' and 'abstract member TestAbstractOverrides_Bug4232_Case1.D.M : 'T -> int' -neg36.fs(32,23,32,24): typecheck error FS0361: The override 'M : int -> unit' implements more than one abstract slot, e.g. 'abstract member TestAbstractOverrides_Bug4232_Case2.PB.M : 'a -> unit' and 'abstract member TestAbstractOverrides_Bug4232_Case2.PA.M : int -> unit' +neg36.fs(32,23,32,24): typecheck error FS0361: The override 'M : int -> unit' implements more than one abstract slot, e.g. 'abstract TestAbstractOverrides_Bug4232_Case2.PB.M : 'a -> unit' and 'abstract member TestAbstractOverrides_Bug4232_Case2.PA.M : int -> unit' diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs index 110e06ddc4f..03ca90c19fc 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs @@ -1,8 +1,8 @@ // #Regression #Conformance #DeclarationElements #MemberDefinitions #NamedArguments // FSB 1433, Count of supplied parameters incorrect in error message if named parameters are used. //Accessibility modifiers are not permitted on overrides or interface implementations -//The member or object constructor 'NamedMeth1' requires 1 additional argument\(s\)\. The required signature is 'abstract member IFoo\.NamedMeth1 : arg1:int \* arg2:int \* arg3:int \* arg4:int -> float' -//The member or object constructor 'NamedMeth1' requires 4 argument\(s\) but is here given 2 unnamed and 3 named argument\(s\)\. The required signature is 'abstract member IFoo\.NamedMeth1 : arg1:int \* arg2:int \* arg3:int \* arg4:int -> float' +//The member or object constructor 'NamedMeth1' requires 1 additional argument\(s\)\. The required signature is 'abstract IFoo\.NamedMeth1: arg1:int \* arg2: int \* arg3: int \* arg4: int -> float' +//The member or object constructor 'NamedMeth1' requires 4 argument\(s\) but is here given 2 unnamed and 3 named argument\(s\)\. The required signature is 'abstract IFoo\.NamedMeth1: arg1: int \* arg2: int \* arg3: int \* arg4: int -> float' type IFoo = interface abstract NamedMeth1 : arg1:int * arg2:int * arg3:int * arg4:int-> float diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs index a92bd56dce5..984cf1d4411 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypeInference // FSB 1625, fsc generates assemblies that don't load/peverify -//The override 'M : int -> int' implements more than one abstract slot, e\.g\. 'abstract member IB\.M : int -> int' and 'abstract member IA\.M : int -> int' +//The override 'M : int -> int' implements more than one abstract slot, e\.g\. 'abstract IB\.M: int -> int' and 'abstract IA\.M: int -> int' type IA = abstract M : int -> int diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember02.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember02.fs index 66dae444a7f..901344e7715 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember02.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember02.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #ObjectOrientedTypes #MethodsAndProperties #MemberDefinitions // Regression test for TFS bug Dev10:834160 // This test would fail if we don't set the IsImplemented bit for the abstract slot -//No implementation was given for 'abstract member B\.M : string -> unit'$ +//No implementation was given for 'abstract B\.M: string -> unit'$ [] type B() = diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember03.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember03.fs index 85a28e93d52..277ed73ab9d 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember03.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/AbstractMembers/E_CallToAbstractMember03.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #ObjectOrientedTypes #MethodsAndProperties #MemberDefinitions // Regression test for TFS bug Dev10:834160 // This test would fail if we don't set the IsImplemented bit for the abstract slot -//No implementation was given for 'abstract member B\.M : int -> float'$ +//No implementation was given for 'abstract B\.M: int -> float'$ //This type is 'abstract' since some abstract members have not been given an implementation\. If this is intentional then add the '\[\]' attribute to your type\.$ [] type B() = diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/Misc/E_AbstractClass01.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/Misc/E_AbstractClass01.fs index 0f793996c1c..ce38600f850 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/Misc/E_AbstractClass01.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/Misc/E_AbstractClass01.fs @@ -4,9 +4,9 @@ // FSB 1272, New-ing a sub class with unimplemented abstract members should not be allowed. //This type is 'abstract' since some abstract members have not been given an implementation\. If this is intentional then add the '\[\]' attribute to your type -//No implementation was given for 'abstract member Foo\.f : int -> int' +//No implementation was given for 'abstract Foo\.f: int -> int' //This type is 'abstract' since some abstract members have not been given an implementation\. If this is intentional then add the '\[\]' attribute to your type -//No implementation was given for 'abstract member Foo\.f : int -> int' +//No implementation was given for 'abstract Foo\.f: int -> int' type Foo = class diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl03.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl03.fs index f31102e81de..e0e48592464 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl03.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl03.fs @@ -2,7 +2,7 @@ // Regression test for FSHARP1.0:3748 // Now we emit an error. -//No implementation was given for 'abstract member IThing\.Name : string'\. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.' +//No implementation was given for 'abstract IThing\.Name: string'\. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.' open System type IThing = diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_MultipleInterfaceInheritance.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_MultipleInterfaceInheritance.fs index 5e69027c2f9..df1d97e60d0 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_MultipleInterfaceInheritance.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_MultipleInterfaceInheritance.fs @@ -64,8 +64,8 @@ if ( {new I_003 with //The type 'T' does not define the field, constructor or member 'Me' //The type 'T' does not define the field, constructor or member 'Home' //No implementation was given for those members: -//'abstract member I_002\.Me : 'a -> int'\. -//'abstract member I_002\.Me : 'a -> int'\. +//'abstract I_002\.Me: 'a -> int'\. +//'abstract I_002\.Me: 'a -> int'\. //Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.'\. //This expression was expected to have type. 'int' .but here has type. 'string' //This expression was expected to have type. 'int' .but here has type. 'char' diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeKindInference/infer_interface003e.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeKindInference/infer_interface003e.fs index 3d8a7a4b907..7240d11d5fa 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeKindInference/infer_interface003e.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeKindInference/infer_interface003e.fs @@ -2,9 +2,9 @@ // attribute must match inferred type -//No implementation was given for 'abstract member TK_I_005\.M : unit -> unit'$ +//No implementation was given for 'abstract TK_I_005\.M: unit -> unit'$ //This type is 'abstract' since some abstract members have not been given an implementation\. If this is intentional then add the '\[\]' attribute to your type\.$ -//No implementation was given for 'abstract member TK_C_000\.M : int -> int'$ +//No implementation was given for 'abstract TK_C_000\.M: int -> int'$ //This type is 'abstract' since some abstract members have not been given an implementation\. If this is intentional then add the '\[\]' attribute to your type\.$ [] diff --git a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/WithOOP/E_Polymorphism01.fsx b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/WithOOP/E_Polymorphism01.fsx index 622077860ae..961af529c02 100644 --- a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/WithOOP/E_Polymorphism01.fsx +++ b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/WithOOP/E_Polymorphism01.fsx @@ -1,7 +1,7 @@ // #Regression #Conformance #UnitsOfMeasure #ObjectOrientedTypes #ReqNOMT //interface Unit -//No implementation was given for 'abstract member Unit\.Factor : unit -> float'\. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.' +//No implementation was given for 'abstract Unit\.Factor: unit -> float'\. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.' [] type length diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx index 765908f7e73..abf11037679 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained01.fsx @@ -3,9 +3,9 @@ // Interfaces cross-constrained via method gps //type IA = -// abstract member M: #IB -> int +// abstract M: #IB -> int //and IB = -// abstract member M: #IA -> int +// abstract M: #IA -> int type IA = abstract M : 'a -> int when 'a :> IB diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx index 7cb6362626a..e82db517e57 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/InterfaceCrossConstrained02.fsx @@ -1,9 +1,9 @@ // #Regression #NoMT #FSI #RequiresENU // Regression test for DEV10#832789 //type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = -// abstract member M: int +// abstract M: int //and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = -// abstract member M: int +// abstract M: int type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M : int diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx index e36ea608cbd..584847e4ed6 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx @@ -2,7 +2,7 @@ // Regression test for FSHARP1.0:5825 //type I = -// abstract member m: unit +// abstract m: unit //type C = // interface I // new: unit -> C diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs index 315fd981e5b..f315c4acbc7 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs @@ -2155,7 +2155,7 @@ query." " override ToString: unit -> string"; " static member A: unit -> int"; " static member C: unit -> int"; - " abstract member AAA: int"; + " abstract AAA: int"; " member D: int"; " ..."; ]) diff --git a/vsintegration/tests/UnitTests/QuickInfoTests.fs b/vsintegration/tests/UnitTests/QuickInfoTests.fs index 1dea4569778..6abbd809aa3 100644 --- a/vsintegration/tests/UnitTests/QuickInfoTests.fs +++ b/vsintegration/tests/UnitTests/QuickInfoTests.fs @@ -126,7 +126,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "abstract member IMyInterface.Represent: unit -> string" + let expected = "abstract IMyInterface.Represent: unit -> string" Assert.AreEqual(expected, quickInfo) // migrated from legacy test From b5ff85a994d550fefe3bf1a8fd13bd53a1aab057 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Wed, 1 Sep 2021 00:13:18 +0100 Subject: [PATCH 06/25] Print 'abstract' instead of 'abstract member' --- .../ErrorMessages/ClassesTests.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs index bb92abab3dc..621307f4e66 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs @@ -21,7 +21,7 @@ let x = |> typecheck |> shouldFail |> withDiagnostics [ - (Error 768, Line 7, Col 16, Line 7, Col 36, "The member 'Function' does not accept the correct number of arguments. 1 argument(s) are expected, but 2 were given. The required signature is 'member IInterface.Function: (int32 * int32) -> unit'.\nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface.") + (Error 768, Line 7, Col 16, Line 7, Col 36, "The member 'Function' does not accept the correct number of arguments. 1 argument(s) are expected, but 2 were given. The required signature is 'IInterface.Function: (int32 * int32) -> unit'.\nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface.") (Error 17, Line 7, Col 21, Line 7, Col 29, "The member 'Function: 'a * 'b -> unit' does not have the correct type to override the corresponding abstract method. The required signature is 'Function: (int32 * int32) -> unit'.") (Error 783, Line 6, Col 9, Line 6, Col 19, "At least one override did not correctly implement its corresponding abstract member")] From b214a1198657707b69b476b47823ef11de4add78 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Wed, 1 Sep 2021 16:06:48 +0100 Subject: [PATCH 07/25] update tests --- src/fsharp/AttributeChecking.fs | 2 +- src/fsharp/CheckDeclarations.fs | 38 ++-- src/fsharp/CheckExpressions.fs | 2 +- src/fsharp/CompilerImports.fs | 6 +- src/fsharp/IlxGen.fs | 47 ++-- src/fsharp/NameResolution.fs | 10 +- src/fsharp/NicePrint.fs | 205 +++++++++++------- src/fsharp/PostInferenceChecks.fs | 4 +- src/fsharp/QuotationTranslator.fs | 4 +- src/fsharp/SignatureConformance.fs | 34 +-- src/fsharp/TypedTree.fs | 102 ++++----- src/fsharp/TypedTreeBasics.fs | 2 +- src/fsharp/TypedTreeOps.fs | 52 ++--- src/fsharp/TypedTreePickle.fs | 30 +-- src/fsharp/import.fs | 2 +- src/fsharp/service/SemanticClassification.fs | 20 +- src/fsharp/service/ServiceDeclarationLists.fs | 18 +- src/fsharp/symbols/SymbolHelpers.fs | 4 +- src/fsharp/symbols/Symbols.fs | 5 +- .../Service/SignatureGenerationTests.fs | 64 ++++-- tests/fsharp/core/printing/test.fsx | 36 +++ .../printing/z.output.test.1000.stdout.47.bsl | 42 +++- .../printing/z.output.test.1000.stdout.50.bsl | 42 +++- .../printing/z.output.test.200.stdout.47.bsl | 42 +++- .../printing/z.output.test.200.stdout.50.bsl | 42 +++- .../z.output.test.default.stdout.47.bsl | 42 +++- .../z.output.test.default.stdout.50.bsl | 42 +++- .../printing/z.output.test.off.stdout.47.bsl | 42 +++- .../printing/z.output.test.off.stdout.50.bsl | 42 +++- 29 files changed, 725 insertions(+), 298 deletions(-) diff --git a/src/fsharp/AttributeChecking.fs b/src/fsharp/AttributeChecking.fs index 6d5e270f0df..71b0fcb8d8a 100644 --- a/src/fsharp/AttributeChecking.fs +++ b/src/fsharp/AttributeChecking.fs @@ -434,7 +434,7 @@ let MethInfoIsUnseen g (m: range) (ty: TType) minfo = isObjTy g minfo.ApparentEnclosingType && let tcref = tcrefOfAppTy g ty match tcref.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> info.ProvidedType.PUntaint((fun st -> (st :> IProvidedCustomAttributeProvider).GetHasTypeProviderEditorHideMethodsAttribute(info.ProvidedType.TypeProvider.PUntaintNoFailure(id))), m) | _ -> // This attribute check is done by name to ensure compilation doesn't take a dependency diff --git a/src/fsharp/CheckDeclarations.fs b/src/fsharp/CheckDeclarations.fs index ed895304059..11c6de5a15f 100644 --- a/src/fsharp/CheckDeclarations.fs +++ b/src/fsharp/CheckDeclarations.fs @@ -3321,7 +3321,7 @@ module EstablishTypeDefinitionCores = if not inSig && not hasMeasureAttr then errorR(Error(FSComp.SR.tcTypeRequiresDefinition(), m)) if hasMeasureAttr then - TFSharpObjectRepr { fsobjmodel_kind = TTyconClass + TFSharpObjectRepr { fsobjmodel_kind = TFSharpClass fsobjmodel_vslots = [] fsobjmodel_rfields = Construct.MakeRecdFieldsTable [] } else @@ -3353,7 +3353,7 @@ module EstablishTypeDefinitionCores = InferTyconKind cenv.g (SynTypeDefnKind.Record, attrs, [], [], inSig, true, m) |> ignore // Note: the table of record fields is initially empty - TRecdRepr (Construct.MakeRecdFieldsTable []) + TFSharpRecdRepr (Construct.MakeRecdFieldsTable []) | SynTypeDefnSimpleRepr.General (kind, _, slotsigs, fields, isConcrete, _, _, _) -> let kind = InferTyconKind cenv.g (kind, attrs, slotsigs, fields, inSig, isConcrete, m) @@ -3363,10 +3363,10 @@ module EstablishTypeDefinitionCores = | _ -> let kind = match kind with - | SynTypeDefnKind.Class -> TTyconClass - | SynTypeDefnKind.Interface -> TTyconInterface - | SynTypeDefnKind.Delegate _ -> TTyconDelegate (MakeSlotSig("Invoke", cenv.g.unit_ty, [], [], [], None)) - | SynTypeDefnKind.Struct -> TTyconStruct + | SynTypeDefnKind.Class -> TFSharpClass + | SynTypeDefnKind.Interface -> TFSharpInterface + | SynTypeDefnKind.Delegate _ -> TFSharpDelegate (MakeSlotSig("Invoke", cenv.g.unit_ty, [], [], [], None)) + | SynTypeDefnKind.Struct -> TFSharpStruct | _ -> error(InternalError("should have inferred tycon kind", m)) let repr = @@ -3377,7 +3377,7 @@ module EstablishTypeDefinitionCores = TFSharpObjectRepr repr | SynTypeDefnSimpleRepr.Enum _ -> - let kind = TTyconEnum + let kind = TFSharpEnum let repr = { fsobjmodel_kind = kind fsobjmodel_vslots = [] @@ -3413,7 +3413,7 @@ module EstablishTypeDefinitionCores = let typeBeforeArguments = match tcrefBeforeStaticArguments.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.ProvidedType + | TProvidedTypeRepr info -> info.ProvidedType | _ -> failwith "unreachable" if IsGeneratedTypeDirectReference (typeBeforeArguments, m) then @@ -3443,7 +3443,7 @@ module EstablishTypeDefinitionCores = checkTypeName() let resolutionEnvironment = match tcrefForContainer.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.ResolutionEnvironment + | TProvidedTypeRepr info -> info.ResolutionEnvironment | _ -> failwith "unreachable" resolutionEnvironment @@ -3879,7 +3879,7 @@ module EstablishTypeDefinitionCores = hiddenReprChecks false noAllowNullLiteralAttributeCheck() if hasMeasureAttr then - let repr = TFSharpObjectRepr { fsobjmodel_kind=TTyconClass + let repr = TFSharpObjectRepr { fsobjmodel_kind=TFSharpClass fsobjmodel_vslots=[] fsobjmodel_rfields= Construct.MakeRecdFieldsTable [] } repr, None, NoSafeInitInfo @@ -3933,7 +3933,8 @@ module EstablishTypeDefinitionCores = errorR(Error(FSComp.SR.tcStructUnionMultiCaseDistinctFields(), m)) writeFakeUnionCtorsToSink unionCases - Construct.MakeUnionRepr unionCases, None, NoSafeInitInfo + let repr = Construct.MakeUnionRepr unionCases + repr, None, NoSafeInitInfo | SynTypeDefnSimpleRepr.Record (_, fields, _) -> noMeasureAttributeCheck() @@ -3944,7 +3945,8 @@ module EstablishTypeDefinitionCores = let recdFields = TcRecdUnionAndEnumDeclarations.TcNamedFieldDecls cenv envinner innerParent false tpenv fields recdFields |> CheckDuplicates (fun f -> f.Id) "field" |> ignore writeFakeRecordFieldsToSink recdFields - TRecdRepr (Construct.MakeRecdFieldsTable recdFields), None, NoSafeInitInfo + let repr = TFSharpRecdRepr (Construct.MakeRecdFieldsTable recdFields) + repr, None, NoSafeInitInfo | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (s, _) -> let s = (s :?> ILType) @@ -4005,7 +4007,7 @@ module EstablishTypeDefinitionCores = errorR (Error(FSComp.SR.tcStructTypesCannotContainAbstractMembers(), m)) structLayoutAttributeCheck true - TTyconStruct + TFSharpStruct | SynTypeDefnKind.Interface -> if hasSealedAttr = Some true then errorR (Error(FSComp.SR.tcInterfaceTypesCannotBeSealed(), m)) noCLIMutableAttributeCheck() @@ -4013,12 +4015,12 @@ module EstablishTypeDefinitionCores = noAbstractClassAttributeCheck() allowNullLiteralAttributeCheck() noFieldsCheck userFields - TTyconInterface + TFSharpInterface | SynTypeDefnKind.Class -> noCLIMutableAttributeCheck() structLayoutAttributeCheck(not isIncrClass) allowNullLiteralAttributeCheck() - TTyconClass + TFSharpClass | SynTypeDefnKind.Delegate (ty, arity) -> noCLIMutableAttributeCheck() noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedDelegate @@ -4032,7 +4034,7 @@ module EstablishTypeDefinitionCores = if curriedArgInfos.Length > 1 then error(Error(FSComp.SR.tcDelegatesCannotBeCurried(), m)) let ttps = thisTyconRef.Typars m let fparams = curriedArgInfos.Head |> List.map MakeSlotParam - TTyconDelegate (MakeSlotSig("Invoke", thisTy, ttps, [], [fparams], returnTy)) + TFSharpDelegate (MakeSlotSig("Invoke", thisTy, ttps, [], [fparams], returnTy)) | _ -> error(InternalError("should have inferred tycon kind", m)) @@ -4080,7 +4082,7 @@ module EstablishTypeDefinitionCores = | SynTypeDefnSimpleRepr.Enum (decls, m) -> let fieldTy, fields' = TcRecdUnionAndEnumDeclarations.TcEnumDecls cenv envinner innerParent thisTy decls - let kind = TTyconEnum + let kind = TFSharpEnum structLayoutAttributeCheck false noCLIMutableAttributeCheck() noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedEnum @@ -4390,7 +4392,7 @@ module EstablishTypeDefinitionCores = // Phase 1B. Establish the kind of each type constructor // Here we run InferTyconKind and record partial information about the kind of the type constructor. - // This means TyconObjModelKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results. + // This means TyconFSharpObjModelKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results. let withAttrs = (envMutRecPrelim, withEnvs) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls (origInfo, tyconOpt) -> let res = diff --git a/src/fsharp/CheckExpressions.fs b/src/fsharp/CheckExpressions.fs index 19c7d9ae437..af721c6a084 100644 --- a/src/fsharp/CheckExpressions.fs +++ b/src/fsharp/CheckExpressions.fs @@ -4584,7 +4584,7 @@ and CrackStaticConstantArgs cenv env tpenv (staticParameters: Tainted info.ProvidedType + | TProvidedTypeRepr info -> info.ProvidedType | _ -> failwith "unreachable" let staticParameters = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments, provider) -> typeBeforeArguments.GetStaticParameters provider), range=m) diff --git a/src/fsharp/CompilerImports.fs b/src/fsharp/CompilerImports.fs index 09537b0bdc6..7013a767976 100644 --- a/src/fsharp/CompilerImports.fs +++ b/src/fsharp/CompilerImports.fs @@ -1303,12 +1303,12 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse match entity.TypeReprInfo with // This is the first extension | TNoRepr -> - TProvidedNamespaceExtensionPoint(typeProviderEnvironment, [provider]) + TProvidedNamespaceRepr(typeProviderEnvironment, [provider]) // Add to the existing list of extensions - | TProvidedNamespaceExtensionPoint(resolutionFolder, prior) as repr -> + | TProvidedNamespaceRepr(resolutionFolder, prior) as repr -> if not(prior |> List.exists(fun r->Tainted.EqTainted r provider)) then - TProvidedNamespaceExtensionPoint(resolutionFolder, provider :: prior) + TProvidedNamespaceRepr(resolutionFolder, provider :: prior) else repr diff --git a/src/fsharp/IlxGen.fs b/src/fsharp/IlxGen.fs index 0fd2eb3d67d..63d5492cd10 100644 --- a/src/fsharp/IlxGen.fs +++ b/src/fsharp/IlxGen.fs @@ -520,7 +520,7 @@ and GenNamedTyAppAux (amap: ImportMap) m (tyenv: TypeReprEnv) ptrsOK tcref tinst #if !NO_EXTENSIONTYPING match tcref.TypeReprInfo with // Generate the base type, because that is always the representation of the erased type, unless the assembly is being injected - | TProvidedTypeExtensionPoint info when info.IsErased -> + | TProvidedTypeRepr info when info.IsErased -> GenTypeAux amap m tyenv VoidNotOK ptrsOK (info.BaseTypeForErased (m, g.obj_ty)) | _ -> #endif @@ -1721,7 +1721,7 @@ type AssemblyBuilder(cenv: cenv, anonTypeTable: AnonTypeGenerationTable) as mgbu tycon.SetIsStructRecordOrUnion true tycon.entity_tycon_repr <- - TRecdRepr + TFSharpRecdRepr (Construct.MakeRecdFieldsTable ((tps, flds) ||> List.map2 (fun tp (propName, _fldName, _fldTy) -> Construct.NewRecdField false None (mkSynId m propName) false (mkTyparTy tp) true false [] [] XmlDoc.Empty taccessPublic false))) @@ -7889,12 +7889,16 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = if tycon.IsTypeAbbrev then () else match tycon.TypeReprInfo with #if !NO_EXTENSIONTYPING - | TProvidedNamespaceExtensionPoint _ -> () - | TProvidedTypeExtensionPoint _ -> () + | TProvidedNamespaceRepr _ + | TProvidedTypeRepr _ #endif - | TNoRepr -> () - | TAsmRepr _ | TILObjectRepr _ | TMeasureableRepr _ -> () - | TFSharpObjectRepr _ | TRecdRepr _ | TUnionRepr _ -> + | TNoRepr + | TAsmRepr _ + | TILObjectRepr _ + | TMeasureableRepr _ -> () + | TFSharpObjectRepr _ + | TFSharpRecdRepr _ + | TFSharpUnionRepr _ -> let eenvinner = EnvForTycon tycon eenv let thisTy = generalizedTyconRef tcref @@ -8019,12 +8023,13 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = match tyconRepr with | TFSharpObjectRepr o -> match o.fsobjmodel_kind with - | TTyconClass -> ILTypeDefKind.Class - | TTyconStruct -> ILTypeDefKind.ValueType - | TTyconInterface -> ILTypeDefKind.Interface - | TTyconEnum -> ILTypeDefKind.Enum - | TTyconDelegate _ -> ILTypeDefKind.Delegate - | TRecdRepr _ | TUnionRepr _ when tycon.IsStructOrEnumTycon -> ILTypeDefKind.ValueType + | TFSharpClass -> ILTypeDefKind.Class + | TFSharpStruct -> ILTypeDefKind.ValueType + | TFSharpInterface -> ILTypeDefKind.Interface + | TFSharpEnum -> ILTypeDefKind.Enum + | TFSharpDelegate _ -> ILTypeDefKind.Delegate + | TFSharpRecdRepr _ + | TFSharpUnionRepr _ when tycon.IsStructOrEnumTycon -> ILTypeDefKind.ValueType | _ -> ILTypeDefKind.Class let requiresExtraField = @@ -8067,8 +8072,8 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = match TryFindFSharpAttribute g g.attrib_FieldOffsetAttribute fspec.FieldAttribs with | Some (Attrib(_, _, [ AttribInt32Arg fieldOffset ], _, _, _, _)) -> Some fieldOffset - | Some (Attrib(_, _, _, _, _, _, m)) -> - errorR(Error(FSComp.SR.ilFieldOffsetAttributeCouldNotBeDecoded(), m)) + | Some attrib -> + errorR(Error(FSComp.SR.ilFieldOffsetAttributeCouldNotBeDecoded(), attrib.Range)) None | _ -> None @@ -8099,7 +8104,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let extraAttribs = match tyconRepr with - | TRecdRepr _ when not useGenuineField -> [ g.DebuggerBrowsableNeverAttribute ] // hide fields in records in debug display + | TFSharpRecdRepr _ when not useGenuineField -> [ g.DebuggerBrowsableNeverAttribute ] // hide fields in records in debug display | _ -> [] // don't hide fields in classes in debug display let access = ComputeMemberAccess isFieldHidden @@ -8224,7 +8229,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = // Build record constructors and the funky methods that go with records and delegate types. // Constructors and delegate methods have the same access as the representation match tyconRepr with - | TRecdRepr _ when not tycon.IsEnumTycon -> + | TFSharpRecdRepr _ when not tycon.IsEnumTycon -> // No constructor for enum types // Otherwise find all the non-static, non zero-init fields and build a constructor let relevantFields = @@ -8255,7 +8260,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = // Build all the methods that go with a delegate type match r.fsobjmodel_kind with - | TTyconDelegate slotSig -> + | TFSharpDelegate slotSig -> let parameters, ret = // When "type delegateTy = delegate of unit -> returnTy", @@ -8271,7 +8276,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = | _ -> () - | TUnionRepr _ when not (tycon.HasMember g "ToString" []) -> + | TFSharpUnionRepr _ when not (tycon.HasMember g "ToString" []) -> yield! GenToStringMethod cenv eenv ilThisTy m | _ -> () ] @@ -8289,7 +8294,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let tdef = tdef.With(customAttrs = mkILCustomAttrs ilCustomAttrs, genericParams = ilGenParams) tdef, None - | TRecdRepr _ | TFSharpObjectRepr _ as tyconRepr -> + | TFSharpRecdRepr _ | TFSharpObjectRepr _ as tyconRepr -> let super = superOfTycon g tycon let ilBaseTy = GenType cenv.amap m eenvinner.tyenv super @@ -8398,7 +8403,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let tdef = tdef.WithKind(ilTypeDefKind).WithLayout(tdLayout).WithEncoding(tdEncoding) tdef, None - | TUnionRepr _ -> + | TFSharpUnionRepr _ -> let alternatives = tycon.UnionCasesArray |> Array.mapi (fun i ucspec -> { altName=ucspec.CompiledName diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 576223f2724..3895b2b18c2 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -866,7 +866,7 @@ let CheckForDirectReferenceToGeneratedType (tcref: TyconRef, genOk, m) = | PermitDirectReferenceToGeneratedType.Yes -> () | PermitDirectReferenceToGeneratedType.No -> match tcref.TypeReprInfo with - | TProvidedTypeExtensionPoint info when not info.IsErased -> + | TProvidedTypeRepr info when not info.IsErased -> if IsGeneratedTypeDirectReference (info.ProvidedType, m) then error (Error(FSComp.SR.etDirectReferenceToGeneratedTypeNotAllowed(tcref.DisplayName), m)) | _ -> () @@ -886,7 +886,7 @@ let AddEntityForProvidedType (amap: Import.ImportMap, modref: ModuleOrNamespaceR /// If necessary, incorporate the provided type or namespace into the entity. let ResolveProvidedTypeNameInEntity (amap, m, typeName, modref: ModuleOrNamespaceRef) = match modref.TypeReprInfo with - | TProvidedNamespaceExtensionPoint(resolutionEnvironment, resolvers) -> + | TProvidedNamespaceRepr(resolutionEnvironment, resolvers) -> match modref.Deref.PublicPath with | Some(PubPath path) -> resolvers @@ -895,13 +895,13 @@ let ResolveProvidedTypeNameInEntity (amap, m, typeName, modref: ModuleOrNamespac | None -> [] // We have a provided type, look up its nested types (populating them on-demand if necessary) - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> let sty = info.ProvidedType let resolutionEnvironment = info.ResolutionEnvironment #if DEBUG if resolutionEnvironment.showResolutionMessages then - dprintfn "resolving name '%s' in TProvidedTypeExtensionPoint '%s'" typeName (sty.PUntaint((fun sty -> sty.FullName), m)) + dprintfn "resolving name '%s' in TProvidedTypeRepr '%s'" typeName (sty.PUntaint((fun sty -> sty.FullName), m)) #endif match sty.PApply((fun sty -> sty.GetNestedType typeName), m) with @@ -1006,7 +1006,7 @@ let GetNestedTyconRefsOfType (infoReader: InfoReader) (amap: Import.ImportMap) ( | None -> #if !NO_EXTENSIONTYPING match tycon.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> [ for nestedType in info.ProvidedType.PApplyArray((fun sty -> sty.GetNestedTypes()), "GetNestedTypes", m) do let nestedTypeName = nestedType.PUntaint((fun t -> t.Name), m) yield! diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 4a94e92df6e..d416ce3b494 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -41,6 +41,8 @@ module internal PrintUtilities = let braceL x = wordL leftBrace ^^ x ^^ wordL rightBrace + let braceMultiLineL x = (wordL leftBrace @@-- x) @@ wordL rightBrace + let braceBarL x = wordL leftBraceBar ^^ x ^^ wordL rightBraceBar // Use a space before a colon if there is an unusual character to the left @@ -150,16 +152,25 @@ module internal PrintUtilities = if xml.IsEmpty then emptyL else - xml.UnprocessedLines - |> Array.collect (fun x -> - x.Split('\n') // These lines may have new-lines in them and we need to split them so we can format it - ) + let linesL = + [ for lineText in xml.UnprocessedLines do + // These lines may have new-lines in them and we need to split them so we can format it + for line in lineText.Split('\n') do + // note here that we don't add a space after the triple-slash, because + // the implicit spacing hasn't been trimmed here. + yield ("///" + line) |> tagText |> wordL + ] + + // Always add an empty line before any "///" comment + let linesL = + if linesL.Length > 0 then + [ yield "" |> tagText |> wordL + yield! linesL ] + else + linesL + + linesL |> aboveListL - // note here that we don't add a space after the triple-slash, because - // the implicit spacing hasn't been trimmed here. - |> Array.map (fun line -> ("///" + line) |> tagText |> wordL) - |> List.ofArray - |> aboveListL xmlDocL @@ restL else restL @@ -1521,15 +1532,17 @@ module private TastDefinitionPrinting = /// When repn is class or datatype constructors (not single one). let breakTypeDefnEqn repr = match repr with + | TILObjectRepr _ -> true | TFSharpObjectRepr _ -> true - | TUnionRepr r -> not (isNilOrSingleton r.CasesTable.UnionCasesAsList) - | TRecdRepr _ -> true + | TFSharpRecdRepr _ -> true + | TFSharpUnionRepr r -> + not (isNilOrSingleton r.CasesTable.UnionCasesAsList) || + r.CasesTable.UnionCasesAsList |> List.exists (fun uc -> not uc.XmlDoc.IsEmpty) | TAsmRepr _ - | TILObjectRepr _ | TMeasureableRepr _ #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint _ - | TProvidedNamespaceExtensionPoint _ + | TProvidedTypeRepr _ + | TProvidedNamespaceRepr _ #endif | TNoRepr -> false @@ -1588,6 +1601,7 @@ module private TastDefinitionPrinting = let layoutTyconRef (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified typewordL (tcref: TyconRef) = let g = denv.g + let amap = infoReader.amap let tycon = tcref.Deref let _, ty = generalizeTyconRef tcref let start, name = @@ -1609,16 +1623,17 @@ module private TastDefinitionPrinting = None, tagClass n else None, tagUnknownType n + let name = mkNav tycon.DefinitionRange name let nameL = layoutAccessibility denv tycon.Accessibility (wordL name) let denv = denv.AddAccessibility tycon.Accessibility + let lhsL = let tps = tycon.TyparsNoRange let tpsL = layoutTyparDecls denv nameL tycon.IsPrefixDisplay tps typewordL ^^ tpsL let start = Option.map tagKeyword start - let amap = infoReader.amap let sortKey (v: MethInfo) = (not v.IsConstructor, not v.IsInstance, // instance first @@ -1738,7 +1753,7 @@ module private TastDefinitionPrinting = match tryTcrefOfAppTy g ty with | ValueSome tcref -> match tcref.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> [ for nestedType in info.ProvidedType.PApplyArray((fun sty -> sty.GetNestedTypes() |> Array.filter (fun t -> t.IsPublic || t.IsNestedPublic)), "GetNestedTypes", m) do yield nestedType.PUntaint((fun t -> t.IsClass, t.Name), m) @@ -1773,88 +1788,109 @@ module private TastDefinitionPrinting = [] let decls = inherits @ iimplsLs @ ctorLs @ methLs @ fieldLs @ propLs @ eventLs @ instanceValsLs @ staticValsLs @ nestedTypeLs @ erasedL - let declsL = - decls - |> applyMaxMembers denv.maxMembers - |> aboveListL - |> fun declsL -> - match start with - | Some s -> (wordL s @@-- declsL) @@ wordL (tagKeyword "end") - | None -> declsL - - let addMembersAsWithEnd reprL = + + let addMembers useWithEnd reprL = if isNil decls then reprL else let memberLs = applyMaxMembers denv.maxMembers decls - if simplified then - reprL @@-- aboveListL memberLs + if simplified || not useWithEnd then + reprL @@ aboveListL memberLs else reprL @@ (WordL.keywordWith @@-- aboveListL memberLs) @@ WordL.keywordEnd let reprL = let repr = tycon.TypeReprInfo match repr with - | TRecdRepr _ - | TUnionRepr _ + | TFSharpRecdRepr _ + | TFSharpUnionRepr _ | TFSharpObjectRepr _ | TAsmRepr _ | TMeasureableRepr _ | TILObjectRepr _ -> - let brk = not (isNil decls) || breakTypeDefnEqn repr + let rhsL = let addReprAccessL l = layoutAccessibility denv tycon.TypeReprAccessibility l let denv = denv.AddAccessibility tycon.TypeReprAccessibility match repr with - | TRecdRepr _ -> + | TFSharpRecdRepr _ -> let recdFieldRefL fld = layoutRecdField false denv infoReader tcref fld + // For records, use multi-line layout as soon as there is XML doc + // type R = + // { + // /// ABC + // Field1: int + // + // /// ABC + // Field2: int + // } + // + // For records, use multi-line layout as soon as there is more than one field + // type R = + // { + // Field1: int + // Field2: int + // } + let useMultiLine = + let members = + match denv.maxMembers with + | None -> tycon.TrueFieldsAsList + | Some n -> tycon.TrueFieldsAsList |> List.truncate n + members.Length > 1 || + members |> List.exists (fun m -> not m.XmlDoc.IsEmpty) + let recdL = tycon.TrueFieldsAsList |> List.map recdFieldRefL |> applyMaxMembers denv.maxMembers |> aboveListL - |> braceL + |> (if useMultiLine then braceMultiLineL else braceL) + |> addReprAccessL + |> addMembers false - Some (addMembersAsWithEnd (addReprAccessL recdL)) + Some recdL - | TUnionRepr _ -> + | TFSharpUnionRepr _ -> let layoutUnionCases = tycon.UnionCasesAsList |> layoutUnionCases denv infoReader tcref |> applyMaxMembers denv.maxMembers |> aboveListL - Some (addMembersAsWithEnd (addReprAccessL layoutUnionCases)) + Some (addMembers false (addReprAccessL layoutUnionCases)) | TFSharpObjectRepr r -> match r.fsobjmodel_kind with - | TTyconDelegate (TSlotSig(_, _, _, _, paraml, rty)) -> + | TFSharpDelegate (TSlotSig(_, _, _, _, paraml, rty)) -> let rty = GetFSharpViewOfReturnType denv.g rty Some (WordL.keywordDelegate ^^ WordL.keywordOf --- layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) rty []) + + | TFSharpEnum -> + tycon.TrueFieldsAsList + |> List.map (fun f -> + match f.LiteralValue with + | None -> emptyL + | Some c -> WordL.bar ^^ + wordL (tagField f.Name) ^^ + WordL.equals ^^ + layoutConst denv.g ty c) + |> aboveListL + |> Some + | _ -> - match r.fsobjmodel_kind with - | TTyconEnum -> - tycon.TrueFieldsAsList - |> List.map (fun f -> - match f.LiteralValue with - | None -> emptyL - | Some c -> WordL.bar ^^ - wordL (tagField f.Name) ^^ - WordL.equals ^^ - layoutConst denv.g ty c) - |> aboveListL - |> Some - | _ -> - let allDecls = inherits @ iimplsLs @ ctorLs @ instanceValsLs @ methLs @ propLs @ eventLs @ staticValsLs - if isNil allDecls then - None - else - let allDecls = applyMaxMembers denv.maxMembers allDecls - let emptyMeasure = match tycon.TypeOrMeasureKind with TyparKind.Measure -> isNil allDecls | _ -> false - if emptyMeasure then None else - let declsL = aboveListL allDecls - let declsL = match start with Some s -> (wordL s @@-- declsL) @@ wordL (tagKeyword "end") | None -> declsL - Some declsL + let allDecls = inherits @ iimplsLs @ ctorLs @ instanceValsLs @ methLs @ propLs @ eventLs @ staticValsLs + if isNil allDecls then + None + else + let allDecls = applyMaxMembers denv.maxMembers allDecls + let emptyMeasure = match tycon.TypeOrMeasureKind with TyparKind.Measure -> isNil allDecls | _ -> false + if emptyMeasure then None else + let declsL = aboveListL allDecls + let declsL = + match start with + | Some s -> (wordL s @@-- declsL) @@ WordL.keywordEnd + | None -> declsL + Some declsL | TAsmRepr _ -> Some (wordL (tagText "(# \"\" #)")) @@ -1871,11 +1907,26 @@ module private TastDefinitionPrinting = |> aboveListL |> Some else + let declsL = + decls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> fun declsL -> + match start with + | Some s -> (wordL s @@-- declsL) @@ WordL.keywordEnd + | None -> declsL + Some declsL | _ -> None - let brk = match tycon.TypeReprInfo with | TILObjectRepr _ -> true | _ -> brk + // Work out whether we use + // type R = // broken + // ... + // or + // type R = ... // breakable + let brk = not (isNil decls) || breakTypeDefnEqn repr + match rhsL with | None -> lhsL | Some rhsL -> @@ -1884,12 +1935,14 @@ module private TastDefinitionPrinting = else (lhsL ^^ WordL.equals) --- rhsL - | _ -> + | TProvidedNamespaceRepr _ + | TProvidedTypeRepr _ + | TNoRepr -> match tycon.TypeAbbrev with | None -> - addMembersAsWithEnd (lhsL ^^ WordL.equals) - | Some a -> - (lhsL ^^ WordL.equals) --- (layoutType { denv with shortTypeNames = false } a) + addMembers true (lhsL ^^ WordL.equals) + | Some abbreviatedType -> + (lhsL ^^ WordL.equals) --- (layoutType { denv with shortTypeNames = false } abbreviatedType) let attribsL = layoutAttribs denv false ty tycon.TypeOrMeasureKind tycon.Attribs reprL layoutXmlDocOfEntityRef denv infoReader tcref attribsL @@ -1968,7 +2021,7 @@ module private TastDefinitionPrinting = // If so print a "module" declaration modNameL elif modIsEmpty then - modNameEqualsL ^^ wordL (tagKeyword "begin") ^^ wordL (tagKeyword "end") + modNameEqualsL ^^ wordL (tagKeyword "begin") ^^ WordL.keywordEnd else // Otherwise this is an outer module contained immediately in a namespace // We already printed the namespace declaration earlier. So just print the @@ -2170,9 +2223,11 @@ module private PrintData = else layoutConst denv.g ty c - | Expr.Val (v, _, _) -> wordL (tagLocal v.DisplayName) + | Expr.Val (v, _, _) -> + wordL (tagLocal v.DisplayName) - | Expr.Link rX -> dataExprWrapL denv isAtomic (!rX) + | Expr.Link rX -> + dataExprWrapL denv isAtomic (!rX) | Expr.Op (TOp.UnionCase c, _, args, _) -> if denv.g.unionCaseRefEq c denv.g.nil_ucref then wordL (tagPunctuation "[]") @@ -2184,21 +2239,25 @@ module private PrintData = else (wordL (tagUnionCase c.CaseName) ++ bracketL (commaListL (dataExprsL denv args))) - | Expr.Op (TOp.ExnConstr c, _, args, _) -> (wordL (tagMethod c.LogicalName) ++ bracketL (commaListL (dataExprsL denv args))) + | Expr.Op (TOp.ExnConstr c, _, args, _) -> + (wordL (tagMethod c.LogicalName) ++ bracketL (commaListL (dataExprsL denv args))) - | Expr.Op (TOp.Tuple _, _, xs, _) -> tupleL (dataExprsL denv xs) + | Expr.Op (TOp.Tuple _, _, xs, _) -> + tupleL (dataExprsL denv xs) | Expr.Op (TOp.Recd (_, tc), _, xs, _) -> let fields = tc.TrueInstanceFieldsAsList let lay fs x = (wordL (tagRecordField fs.rfield_id.idText) ^^ sepL (tagPunctuation "=")) --- (dataExprL denv x) - leftL (tagPunctuation "{") ^^ semiListL (List.map2 lay fields xs) ^^ rightL (tagPunctuation "}") + braceL (semiListL (List.map2 lay fields xs)) | Expr.Op (TOp.ValFieldGet (RecdFieldRef.RecdFieldRef (tcref, name)), _, _, _) -> (layoutTyconRefImpl denv tcref) ^^ sepL (tagPunctuation ".") ^^ wordL (tagField name) - | Expr.Op (TOp.Array, [_], xs, _) -> leftL (tagPunctuation "[|") ^^ semiListL (dataExprsL denv xs) ^^ RightL.rightBracketBar + | Expr.Op (TOp.Array, [_], xs, _) -> + leftL (tagPunctuation "[|") ^^ semiListL (dataExprsL denv xs) ^^ RightL.rightBracketBar - | _ -> wordL (tagPunctuation "?") + | _ -> + wordL (tagPunctuation "?") and private dataExprsL denv xs = List.map (dataExprL denv) xs diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs index e9951b95473..5827e892757 100644 --- a/src/fsharp/PostInferenceChecks.fs +++ b/src/fsharp/PostInferenceChecks.fs @@ -2394,7 +2394,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = if TyconRefHasAttribute g m g.attrib_IsReadOnlyAttribute tcref && not tycon.IsStructOrEnumTycon then errorR(Error(FSComp.SR.tcIsReadOnlyNotStruct(), tycon.Range)) - // Considers TFSharpObjectRepr, TRecdRepr and TUnionRepr. + // Considers TFSharpObjectRepr, TFSharpRecdRepr and TFSharpUnionRepr. // [Review] are all cases covered: TILObjectRepr, TAsmRepr. [Yes - these are FSharp.Core.dll only] tycon.AllFieldsArray |> Array.iter (CheckRecdField false cenv env tycon) @@ -2434,7 +2434,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = match tycon.TypeReprInfo with | TFSharpObjectRepr r -> match r.fsobjmodel_kind with - | TTyconDelegate ss -> + | TFSharpDelegate ss -> //ss.ClassTypars //ss.MethodTypars ss.FormalReturnType |> Option.iter visitType diff --git a/src/fsharp/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs index abcf0a16a0d..5bee3e94d76 100644 --- a/src/fsharp/QuotationTranslator.fs +++ b/src/fsharp/QuotationTranslator.fs @@ -1188,7 +1188,7 @@ and ConvILType cenv env m ty = and TryElimErasableTyconRef cenv m (tcref: TyconRef) = match tcref.TypeReprInfo with // Get the base type - | TProvidedTypeExtensionPoint info when info.IsErased -> Some (info.BaseTypeForErased (m, cenv.g.obj_ty)) + | TProvidedTypeRepr info when info.IsErased -> Some (info.BaseTypeForErased (m, cenv.g.obj_ty)) | _ -> None #endif @@ -1198,7 +1198,7 @@ and ConvTyconRef cenv (tcref: TyconRef) m = | Some baseTy -> ConvTyconRef cenv (tcrefOfAppTy cenv.g baseTy) m | None -> match tcref.TypeReprInfo with - | TProvidedTypeExtensionPoint info when not cenv.g.isInteractive && not info.IsErased -> + | TProvidedTypeRepr info when not cenv.g.isInteractive && not info.IsErased -> // Note, generated types are (currently) non-generic let tref = ExtensionTyping.GetILTypeRefOfProvidedType (info.ProvidedType, m) ConvILTypeRefUnadjusted cenv m tref diff --git a/src/fsharp/SignatureConformance.fs b/src/fsharp/SignatureConformance.fs index 45a88071ac3..c1cc93f2fdf 100644 --- a/src/fsharp/SignatureConformance.fs +++ b/src/fsharp/SignatureConformance.fs @@ -487,17 +487,17 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = | l -> (errorR (Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, k, String.concat ";" l), m)); false) match implTycon.TypeReprInfo, sigTypeRepr with - | (TRecdRepr _ - | TUnionRepr _ + | (TFSharpRecdRepr _ + | TFSharpUnionRepr _ | TILObjectRepr _ #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint _ - | TProvidedNamespaceExtensionPoint _ + | TProvidedTypeRepr _ + | TProvidedNamespaceRepr _ #endif ), TNoRepr -> true | TFSharpObjectRepr r, TNoRepr -> match r.fsobjmodel_kind with - | TTyconStruct | TTyconEnum -> + | TFSharpStruct | TFSharpEnum -> (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplDefinesStruct(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) | _ -> true @@ -505,23 +505,23 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) | TMeasureableRepr _, TNoRepr -> (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsHidden(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) - | TUnionRepr r1, TUnionRepr r2 -> + | TFSharpUnionRepr r1, TFSharpUnionRepr r2 -> let ucases1 = r1.UnionCasesAsList let ucases2 = r2.UnionCasesAsList if ucases1.Length <> ucases2.Length then let names (l: UnionCase list) = l |> List.map (fun c -> c.Id.idText) reportNiceError "union case" (names ucases1) (names ucases2) else List.forall2 (checkUnionCase aenv infoReader implTycon) ucases1 ucases2 - | TRecdRepr implFields, TRecdRepr sigFields -> + | TFSharpRecdRepr implFields, TFSharpRecdRepr sigFields -> checkRecordFields m aenv infoReader implTycon implFields sigFields | TFSharpObjectRepr r1, TFSharpObjectRepr r2 -> if not (match r1.fsobjmodel_kind, r2.fsobjmodel_kind with - | TTyconClass, TTyconClass -> true - | TTyconInterface, TTyconInterface -> true - | TTyconStruct, TTyconStruct -> true - | TTyconEnum, TTyconEnum -> true - | TTyconDelegate (TSlotSig(_, typ1, ctps1, mtps1, ps1, rty1)), - TTyconDelegate (TSlotSig(_, typ2, ctps2, mtps2, ps2, rty2)) -> + | TFSharpClass, TFSharpClass -> true + | TFSharpInterface, TFSharpInterface -> true + | TFSharpStruct, TFSharpStruct -> true + | TFSharpEnum, TFSharpEnum -> true + | TFSharpDelegate (TSlotSig(_, typ1, ctps1, mtps1, ps1, rty1)), + TFSharpDelegate (TSlotSig(_, typ2, ctps2, mtps2, ps2, rty2)) -> (typeAEquiv g aenv typ1 typ2) && (ctps1.Length = ctps2.Length) && (let aenv = aenv.BindEquivTypars ctps1 ctps2 @@ -534,7 +534,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = | _, _ -> false) then (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) else - let isStruct = (match r1.fsobjmodel_kind with TTyconStruct -> true | _ -> false) + let isStruct = (match r1.fsobjmodel_kind with TFSharpStruct -> true | _ -> false) checkClassFields isStruct m aenv infoReader implTycon r1.fsobjmodel_rfields r2.fsobjmodel_rfields && checkVirtualSlots denv infoReader m implTycon r1.fsobjmodel_vslots r2.fsobjmodel_vslots | TAsmRepr tcr1, TAsmRepr tcr2 -> @@ -543,10 +543,10 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = if typeAEquiv g aenv ty1 ty2 then true else (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) | TNoRepr, TNoRepr -> true #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint info1, TProvidedTypeExtensionPoint info2 -> + | TProvidedTypeRepr info1, TProvidedTypeRepr info2 -> Tainted.EqTainted info1.ProvidedType.TypeProvider info2.ProvidedType.TypeProvider && ProvidedType.TaintedEquals(info1.ProvidedType, info2.ProvidedType) - | TProvidedNamespaceExtensionPoint _, TProvidedNamespaceExtensionPoint _ -> - System.Diagnostics.Debug.Assert(false, "unreachable: TProvidedNamespaceExtensionPoint only on namespaces, not types" ) + | TProvidedNamespaceRepr _, TProvidedNamespaceRepr _ -> + System.Diagnostics.Debug.Assert(false, "unreachable: TProvidedNamespaceRepr only on namespaces, not types" ) true #endif | TNoRepr, _ -> (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleRepresentationsDiffer(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index 9d770d8316d..de6b345d11d 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -707,7 +707,7 @@ type Entity = member x.Range = #if !NO_EXTENSIONTYPING match x.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> match Construct.ComputeDefinitionLocationOfProvidedItem info.ProvidedType with | Some range -> range | None -> x.entity_range @@ -747,7 +747,7 @@ type Entity = member x.XmlDoc = #if !NO_EXTENSIONTYPING match x.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> let lines = info.ProvidedType.PUntaintNoFailure(fun st -> (st :> IProvidedCustomAttributeProvider).GetXmlDocAttributes(info.ProvidedType.TypeProvider.PUntaintNoFailure id)) XmlDoc (lines, x.DefinitionRange) | _ -> @@ -865,26 +865,26 @@ type Entity = /// Indicates if the entity is a provided type or namespace definition member x.IsProvided = match x.TypeReprInfo with - | TProvidedTypeExtensionPoint _ -> true - | TProvidedNamespaceExtensionPoint _ -> true + | TProvidedTypeRepr _ -> true + | TProvidedNamespaceRepr _ -> true | _ -> false /// Indicates if the entity is a provided namespace fragment member x.IsProvidedNamespace = match x.TypeReprInfo with - | TProvidedNamespaceExtensionPoint _ -> true + | TProvidedNamespaceRepr _ -> true | _ -> false /// Indicates if the entity is an erased provided type definition member x.IsProvidedErasedTycon = match x.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.IsErased + | TProvidedTypeRepr info -> info.IsErased | _ -> false /// Indicates if the entity is a generated provided type definition, i.e. not erased. member x.IsProvidedGeneratedTycon = match x.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.IsGenerated + | TProvidedTypeRepr info -> info.IsGenerated | _ -> false #endif @@ -908,7 +908,7 @@ type Entity = /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldTable = match x.TypeReprInfo with - | TRecdRepr x | TFSharpObjectRepr {fsobjmodel_rfields=x} -> x + | TFSharpRecdRepr x | TFSharpObjectRepr {fsobjmodel_rfields=x} -> x | _ -> match x.ExceptionInfo with | TExnFresh x -> x @@ -944,12 +944,12 @@ type Entity = member x.GetFieldByName n = x.AllFieldTable.FieldByName n /// Indicate if this is a type whose r.h.s. is known to be a union type definition. - member x.IsUnionTycon = match x.TypeReprInfo with | TUnionRepr _ -> true | _ -> false + member x.IsUnionTycon = match x.TypeReprInfo with | TFSharpUnionRepr _ -> true | _ -> false /// Get the union cases and other union-type information for a type, if any member x.UnionTypeInfo = match x.TypeReprInfo with - | TUnionRepr x -> ValueSome x + | TFSharpUnionRepr x -> ValueSome x | _ -> ValueNone /// Get the union cases for a type, if any @@ -1036,10 +1036,10 @@ type Entity = member x.ILTyconRawMetadata = let (TILObjectReprData(_, _, td)) = x.ILTyconInfo in td /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition. - member x.IsRecordTycon = match x.TypeReprInfo with | TRecdRepr _ -> true | _ -> false + member x.IsRecordTycon = match x.TypeReprInfo with | TFSharpRecdRepr _ -> true | _ -> false /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition that is a value type. - member x.IsStructRecordOrUnionTycon = match x.TypeReprInfo with TRecdRepr _ | TUnionRepr _ -> x.entity_flags.IsStructRecordOrUnionType | _ -> false + member x.IsStructRecordOrUnionTycon = match x.TypeReprInfo with TFSharpRecdRepr _ | TFSharpUnionRepr _ -> x.entity_flags.IsStructRecordOrUnionType | _ -> false /// The on-demand analysis about whether the entity has the IsByRefLike attribute member x.TryIsByRefLike = x.entity_flags.TryIsByRefLike @@ -1075,16 +1075,16 @@ type Entity = member x.IsHiddenReprTycon = match x.TypeAbbrev, x.TypeReprInfo with | None, TNoRepr -> true | _ -> false /// Indicates if this is an F#-defined interface type definition - member x.IsFSharpInterfaceTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconInterface -> true | _ -> false + member x.IsFSharpInterfaceTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpInterface -> true | _ -> false /// Indicates if this is an F#-defined delegate type definition - member x.IsFSharpDelegateTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconDelegate _ -> true | _ -> false + member x.IsFSharpDelegateTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpDelegate _ -> true | _ -> false /// Indicates if this is an F#-defined enum type definition - member x.IsFSharpEnumTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconEnum -> true | _ -> false + member x.IsFSharpEnumTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpEnum -> true | _ -> false /// Indicates if this is an F#-defined class type definition - member x.IsFSharpClassTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TTyconClass -> true | _ -> false + member x.IsFSharpClassTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpClass -> true | _ -> false /// Indicates if this is a .NET-defined enum type definition member x.IsILEnumTycon = x.IsILTycon && x.ILTyconRawMetadata.IsEnum @@ -1093,8 +1093,8 @@ type Entity = member x.IsEnumTycon = #if !NO_EXTENSIONTYPING match x.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.IsEnum - | TProvidedNamespaceExtensionPoint _ -> false + | TProvidedTypeRepr info -> info.IsEnum + | TProvidedNamespaceRepr _ -> false | _ -> #endif x.IsILEnumTycon || x.IsFSharpEnumTycon @@ -1103,12 +1103,12 @@ type Entity = /// Indicates if this is an F#-defined struct or enum type definition, i.e. a value type definition member x.IsFSharpStructOrEnumTycon = match x.TypeReprInfo with - | TRecdRepr _ -> x.IsStructRecordOrUnionTycon - | TUnionRepr _ -> x.IsStructRecordOrUnionTycon + | TFSharpRecdRepr _ -> x.IsStructRecordOrUnionTycon + | TFSharpUnionRepr _ -> x.IsStructRecordOrUnionTycon | TFSharpObjectRepr info -> match info.fsobjmodel_kind with - | TTyconClass | TTyconInterface | TTyconDelegate _ -> false - | TTyconStruct | TTyconEnum -> true + | TFSharpClass | TFSharpInterface | TFSharpDelegate _ -> false + | TFSharpStruct | TFSharpEnum -> true | _ -> false /// Indicates if this is a .NET-defined struct or enum type definition, i.e. a value type definition @@ -1120,8 +1120,8 @@ type Entity = member x.IsStructOrEnumTycon = #if !NO_EXTENSIONTYPING match x.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.IsStructOrEnum - | TProvidedNamespaceExtensionPoint _ -> false + | TProvidedTypeRepr info -> info.IsStructOrEnum + | TProvidedNamespaceRepr _ -> false | _ -> #endif x.IsILStructOrEnumTycon || x.IsFSharpStructOrEnumTycon @@ -1179,18 +1179,18 @@ type Entity = #if !NO_EXTENSIONTYPING match x.TypeReprInfo with // We should never be computing this property for erased types - | TProvidedTypeExtensionPoint info when info.IsErased -> + | TProvidedTypeRepr info when info.IsErased -> failwith "No compiled representation for provided erased type" // Generated types that are not relocated just point straight to the generated backing assembly, computed from "st". // These are used when running F# Interactive, which does not use static linking of provider-generated assemblies, // and also for types with relocation suppressed. - | TProvidedTypeExtensionPoint info when info.IsGenerated && info.IsSuppressRelocate -> + | TProvidedTypeRepr info when info.IsGenerated && info.IsSuppressRelocate -> let st = info.ProvidedType let tref = GetILTypeRefOfProvidedType (st, x.Range) let boxity = if x.IsStructOrEnumTycon then AsValue else AsObject CompiledTypeRepr.ILAsmNamed(tref, boxity, None) - | TProvidedNamespaceExtensionPoint _ -> failwith "No compiled representation for provided namespace" + | TProvidedNamespaceRepr _ -> failwith "No compiled representation for provided namespace" | _ -> #endif let ilTypeRefForCompilationPath (CompPath(sref, p)) item = @@ -1375,10 +1375,10 @@ type TyconRepresentation = | TFSharpObjectRepr of TyconObjModelData /// Indicates the type is a record - | TRecdRepr of TyconRecdFields + | TFSharpRecdRepr of TyconRecdFields /// Indicates the type is a discriminated union - | TUnionRepr of TyconUnionData + | TFSharpUnionRepr of TyconUnionData /// Indicates the type is a type from a .NET assembly without F# metadata. | TILObjectRepr of TILObjectReprData @@ -1390,15 +1390,15 @@ type TyconRepresentation = | TMeasureableRepr of TType #if !NO_EXTENSIONTYPING - /// TProvidedTypeExtensionPoint + /// TProvidedTypeRepr /// /// Indicates the representation information for a provided type. - | TProvidedTypeExtensionPoint of TProvidedTypeInfo + | TProvidedTypeRepr of TProvidedTypeInfo /// Indicates the representation information for a provided namespace. // // Note, the list could probably be a list of IProvidedNamespace rather than ITypeProvider - | TProvidedNamespaceExtensionPoint of ResolutionEnvironment * Tainted list + | TProvidedNamespaceRepr of ResolutionEnvironment * Tainted list #endif /// The 'NoRepr' value here has four meanings: @@ -1492,34 +1492,34 @@ type TProvidedTypeInfo = #endif -type TyconObjModelKind = - /// Indicates the type is a class (also used for units-of-measure) - | TTyconClass +type TyconFSharpObjModelKind = + /// Indicates the type is an F#-declared class (also used for units-of-measure) + | TFSharpClass - /// Indicates the type is an interface - | TTyconInterface + /// Indicates the type is an F#-declared interface + | TFSharpInterface - /// Indicates the type is a struct - | TTyconStruct + /// Indicates the type is an F#-declared struct + | TFSharpStruct - /// Indicates the type is a delegate with the given Invoke signature - | TTyconDelegate of slotSig: SlotSig + /// Indicates the type is an F#-declared delegate with the given Invoke signature + | TFSharpDelegate of slotSig: SlotSig - /// Indicates the type is an enumeration - | TTyconEnum + /// Indicates the type is an F#-declared enumeration + | TFSharpEnum /// Indicates if the type definition is a value type member x.IsValueType = match x with - | TTyconClass | TTyconInterface | TTyconDelegate _ -> false - | TTyconStruct | TTyconEnum -> true + | TFSharpClass | TFSharpInterface | TFSharpDelegate _ -> false + | TFSharpStruct | TFSharpEnum -> true /// Represents member values and class fields relating to the F# object model [] type TyconObjModelData = { - /// Indicates whether the type declaration is a class, interface, enum, delegate or struct - fsobjmodel_kind: TyconObjModelKind + /// Indicates whether the type declaration is an F# class, interface, enum, delegate or struct + fsobjmodel_kind: TyconFSharpObjModelKind /// The declared abstract slots of the class, interface or struct fsobjmodel_vslots: ValRef list @@ -3079,7 +3079,7 @@ type NonLocalEntityRef = // type provider type linking errors in F# 3.0. let m = range0 match entity.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> let resolutionEnvironment = info.ResolutionEnvironment let st = info.ProvidedType @@ -3096,7 +3096,7 @@ type NonLocalEntityRef = tryResolveNestedTypeOf(entity, resolutionEnvironment, st, i) - | TProvidedNamespaceExtensionPoint(resolutionEnvironment, resolvers) -> + | TProvidedNamespaceRepr(resolutionEnvironment, resolvers) -> // In this case, we're still in the realm of extensible namespaces. // <----entity--> @@ -5473,7 +5473,7 @@ type Construct() = | Some t -> importProvidedType t), findOriginalException) - TProvidedTypeExtensionPoint + TProvidedTypeRepr { ResolutionEnvironment=resolutionEnvironment ProvidedType=st LazyBaseType=lazyBaseTy @@ -5585,7 +5585,7 @@ type Construct() = CompiledRepresentation=newCache() } /// Create a node for a union type - static member MakeUnionRepr ucs = TUnionRepr (Construct.MakeUnionCases ucs) + static member MakeUnionRepr ucs = TFSharpUnionRepr (Construct.MakeUnionCases ucs) /// Create a new type parameter node static member NewTypar (kind, rigid, SynTypar(id, staticReq, isCompGen), isFromError, dynamicReq, attribs, eqDep, compDep) = diff --git a/src/fsharp/TypedTreeBasics.fs b/src/fsharp/TypedTreeBasics.fs index 085229c14ca..fe730b9aeba 100644 --- a/src/fsharp/TypedTreeBasics.fs +++ b/src/fsharp/TypedTreeBasics.fs @@ -296,7 +296,7 @@ let tyconRefUsesLocalXmlDoc compilingFslib (x: TyconRef) = | ERefNonLocal _ -> #if !NO_EXTENSIONTYPING match x.TypeReprInfo with - | TProvidedTypeExtensionPoint _ -> true + | TProvidedTypeRepr _ -> true | _ -> #endif compilingFslib diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index f84223fdf9c..b2e5374fd87 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -720,7 +720,7 @@ let reduceTyconMeasureableOrProvided (g: TcGlobals) (tycon: Tycon) tyargs = | TMeasureableRepr ty -> if isNil tyargs then ty else instType (mkTyconInst tycon tyargs) ty #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint info when info.IsErased -> info.BaseTypeForErased (range0, g.obj_ty) + | TProvidedTypeRepr info when info.IsErased -> info.BaseTypeForErased (range0, g.obj_ty) #endif | _ -> invalidArg "tc" "this type definition is not a refinement" @@ -1720,7 +1720,7 @@ type TypeDefMetadata = let metadataOfTycon (tycon: Tycon) = #if !NO_EXTENSIONTYPING match tycon.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> ProvidedTypeMetadata info + | TProvidedTypeRepr info -> ProvidedTypeMetadata info | _ -> #endif if tycon.IsILTycon then @@ -1732,7 +1732,7 @@ let metadataOfTycon (tycon: Tycon) = let metadataOfTy g ty = #if !NO_EXTENSIONTYPING match extensionInfoOfTy g ty with - | TProvidedTypeExtensionPoint info -> ProvidedTypeMetadata info + | TProvidedTypeRepr info -> ProvidedTypeMetadata info | _ -> #endif if isILAppTy g ty then @@ -1764,8 +1764,8 @@ let isFSharpObjModelRefTy g ty = isFSharpObjModelTy g ty && let tcref = tcrefOfAppTy g ty match tcref.FSharpObjectModelTypeInfo.fsobjmodel_kind with - | TTyconClass | TTyconInterface | TTyconDelegate _ -> true - | TTyconStruct | TTyconEnum -> false + | TFSharpClass | TFSharpInterface | TFSharpDelegate _ -> true + | TFSharpStruct | TFSharpEnum -> false let isFSharpClassTy g ty = match tryTcrefOfAppTy g ty with @@ -3812,10 +3812,10 @@ module DebugPrint = |> List.filter (fun v -> isNil (Option.get v.MemberInfo).ImplementedSlotSigs) let iimpls = match tycon.TypeReprInfo with - | TFSharpObjectRepr r when (match r.fsobjmodel_kind with TTyconInterface -> true | _ -> false) -> [] + | TFSharpObjectRepr r when (match r.fsobjmodel_kind with TFSharpInterface -> true | _ -> false) -> [] | _ -> tycon.ImmediateInterfacesOfFSharpTycon let iimpls = iimpls |> List.filter (fun (_, compgen, _) -> not compgen) - // if TTyconInterface, the iimpls should be printed as inherited interfaces + // if TFSharpInterface, the iimpls should be printed as inherited interfaces if isNil adhoc && isNil iimpls then emptyL else @@ -3842,24 +3842,24 @@ module DebugPrint = let tyconReprL (repr, tycon: Tycon) = match repr with - | TRecdRepr _ -> + | TFSharpRecdRepr _ -> tycon.TrueFieldsAsList |> List.map (fun fld -> layoutRecdField fld ^^ rightL(tagText ";")) |> aboveListL | TFSharpObjectRepr r -> match r.fsobjmodel_kind with - | TTyconDelegate _ -> + | TFSharpDelegate _ -> wordL(tagText "delegate ...") | _ -> let start = match r.fsobjmodel_kind with - | TTyconClass -> "class" - | TTyconInterface -> "interface" - | TTyconStruct -> "struct" - | TTyconEnum -> "enum" + | TFSharpClass -> "class" + | TFSharpInterface -> "interface" + | TFSharpStruct -> "struct" + | TFSharpEnum -> "enum" | _ -> failwith "???" let inherits = match r.fsobjmodel_kind, tycon.TypeContents.tcaug_super with - | TTyconClass, Some super -> [wordL(tagText "inherit") ^^ (typeL super)] - | TTyconInterface, _ -> + | TFSharpClass, Some super -> [wordL(tagText "inherit") ^^ (typeL super)] + | TFSharpInterface, _ -> tycon.ImmediateInterfacesOfFSharpTycon |> List.filter (fun (_, compgen, _) -> not compgen) |> List.map (fun (ity, _, _) -> wordL(tagText "inherit") ^^ (typeL ity)) @@ -3872,7 +3872,7 @@ module DebugPrint = let alldecls = inherits @ vsprs @ vals let emptyMeasure = match tycon.TypeOrMeasureKind with TyparKind.Measure -> isNil alldecls | _ -> false if emptyMeasure then emptyL else (wordL (tagText start) @@-- aboveListL alldecls) @@ wordL(tagText "end") - | TUnionRepr _ -> tycon.UnionCasesAsList |> layoutUnionCases |> aboveListL + | TFSharpUnionRepr _ -> tycon.UnionCasesAsList |> layoutUnionCases |> aboveListL | TAsmRepr _ -> wordL(tagText "(# ... #)") | TMeasureableRepr ty -> typeL ty | TILObjectRepr (TILObjectReprData(_, _, td)) -> wordL (tagText td.Name) @@ -3881,8 +3881,8 @@ module DebugPrint = let reprL = match tycon.TypeReprInfo with #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint _ - | TProvidedNamespaceExtensionPoint _ + | TProvidedTypeRepr _ + | TProvidedNamespaceRepr _ #endif | TNoRepr -> match tycon.TypeAbbrev with @@ -4646,7 +4646,7 @@ and accLocalTyconRepr opts b fvs = else { fvs with FreeLocalTyconReprs = Zset.add b fvs.FreeLocalTyconReprs } and accUsedRecdOrUnionTyconRepr opts (tc: Tycon) fvs = - if match tc.TypeReprInfo with TFSharpObjectRepr _ | TRecdRepr _ | TUnionRepr _ -> true | _ -> false + if match tc.TypeReprInfo with TFSharpObjectRepr _ | TFSharpRecdRepr _ | TFSharpUnionRepr _ -> true | _ -> false then accLocalTyconRepr opts tc fvs else fvs @@ -5508,8 +5508,8 @@ and remapFsObjData g tmenv x = { x with fsobjmodel_kind = (match x.fsobjmodel_kind with - | TTyconDelegate slotsig -> TTyconDelegate (remapSlotSig (remapAttribs g tmenv) tmenv slotsig) - | TTyconClass | TTyconInterface | TTyconStruct | TTyconEnum -> x.fsobjmodel_kind) + | TFSharpDelegate slotsig -> TFSharpDelegate (remapSlotSig (remapAttribs g tmenv) tmenv slotsig) + | TFSharpClass | TFSharpInterface | TFSharpStruct | TFSharpEnum -> x.fsobjmodel_kind) fsobjmodel_vslots = x.fsobjmodel_vslots |> List.map (remapValRef tmenv) fsobjmodel_rfields = x.fsobjmodel_rfields |> remapRecdFields g tmenv } @@ -5517,13 +5517,13 @@ and remapFsObjData g tmenv x = and remapTyconRepr g tmenv repr = match repr with | TFSharpObjectRepr x -> TFSharpObjectRepr (remapFsObjData g tmenv x) - | TRecdRepr x -> TRecdRepr (remapRecdFields g tmenv x) - | TUnionRepr x -> TUnionRepr (remapUnionCases g tmenv x) + | TFSharpRecdRepr x -> TFSharpRecdRepr (remapRecdFields g tmenv x) + | TFSharpUnionRepr x -> TFSharpUnionRepr (remapUnionCases g tmenv x) | TILObjectRepr _ -> failwith "cannot remap IL type definitions" #if !NO_EXTENSIONTYPING - | TProvidedNamespaceExtensionPoint _ -> repr - | TProvidedTypeExtensionPoint info -> - TProvidedTypeExtensionPoint + | TProvidedNamespaceRepr _ -> repr + | TProvidedTypeRepr info -> + TProvidedTypeRepr { info with LazyBaseType = info.LazyBaseType.Force (range0, g.obj_ty) |> remapType tmenv |> LazyWithContext.NotLazy // The load context for the provided type contains TyconRef objects. We must remap these. diff --git a/src/fsharp/TypedTreePickle.fs b/src/fsharp/TypedTreePickle.fs index 959757bbaca..f8072693a8e 100644 --- a/src/fsharp/TypedTreePickle.fs +++ b/src/fsharp/TypedTreePickle.fs @@ -1830,21 +1830,21 @@ let rec dummy x = x and p_tycon_repr x st = // The leading "p_byte 1" and "p_byte 0" come from the F# 2.0 format, which used an option value at this point. match x with - | TRecdRepr fs -> p_byte 1 st; p_byte 0 st; p_rfield_table fs st; false - | TUnionRepr x -> p_byte 1 st; p_byte 1 st; p_array p_unioncase_spec x.CasesTable.CasesByIndex st; false + | TFSharpRecdRepr fs -> p_byte 1 st; p_byte 0 st; p_rfield_table fs st; false + | TFSharpUnionRepr x -> p_byte 1 st; p_byte 1 st; p_array p_unioncase_spec x.CasesTable.CasesByIndex st; false | TAsmRepr ilty -> p_byte 1 st; p_byte 2 st; p_ILType ilty st; false | TFSharpObjectRepr r -> p_byte 1 st; p_byte 3 st; p_tycon_objmodel_data r st; false | TMeasureableRepr ty -> p_byte 1 st; p_byte 4 st; p_ty ty st; false | TNoRepr -> p_byte 0 st; false #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> if info.IsErased then // Pickle erased type definitions as a NoRepr p_byte 0 st; false else // Pickle generated type definitions as a TAsmRepr p_byte 1 st; p_byte 2 st; p_ILType (mkILBoxedType(ILTypeSpec.Create(ExtensionTyping.GetILTypeRefOfProvidedType(info.ProvidedType, range0), []))) st; true - | TProvidedNamespaceExtensionPoint _ -> p_byte 0 st; false + | TProvidedNamespaceRepr _ -> p_byte 0 st; false #endif | TILObjectRepr (TILObjectReprData (_, _, td)) -> error (Failure("Unexpected IL type definition"+td.Name)) @@ -1972,11 +1972,11 @@ and p_member_info (x: ValMemberInfo) st = and p_tycon_objmodel_kind x st = match x with - | TTyconClass -> p_byte 0 st - | TTyconInterface -> p_byte 1 st - | TTyconStruct -> p_byte 2 st - | TTyconDelegate ss -> p_byte 3 st; p_slotsig ss st - | TTyconEnum -> p_byte 4 st + | TFSharpClass -> p_byte 0 st + | TFSharpInterface -> p_byte 1 st + | TFSharpStruct -> p_byte 2 st + | TFSharpDelegate ss -> p_byte 3 st; p_slotsig ss st + | TFSharpEnum -> p_byte 4 st and p_vrefFlags x st = match x with @@ -2028,7 +2028,7 @@ and u_tycon_repr st = match tag2 with | 0 -> let v = u_rfield_table st - (fun _flagBit -> TRecdRepr v) + (fun _flagBit -> TFSharpRecdRepr v) | 1 -> let v = u_list u_unioncase_spec st (fun _flagBit -> Construct.MakeUnionRepr v) @@ -2257,11 +2257,11 @@ and u_member_info st : ValMemberInfo = and u_tycon_objmodel_kind st = let tag = u_byte st match tag with - | 0 -> TTyconClass - | 1 -> TTyconInterface - | 2 -> TTyconStruct - | 3 -> u_slotsig st |> TTyconDelegate - | 4 -> TTyconEnum + | 0 -> TFSharpClass + | 1 -> TFSharpInterface + | 2 -> TFSharpStruct + | 3 -> u_slotsig st |> TFSharpDelegate + | 4 -> TFSharpEnum | _ -> ufailwith st "u_tycon_objmodel_kind" and u_vrefFlags st = diff --git a/src/fsharp/import.fs b/src/fsharp/import.fs index 25cfe6c3ad6..cc3cb3bd641 100644 --- a/src/fsharp/import.fs +++ b/src/fsharp/import.fs @@ -112,7 +112,7 @@ let ImportTypeRefData (env: ImportMap) m (scoref, path, typeName) = #if !NO_EXTENSIONTYPING // Validate (once because of caching) match tycon.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> //printfn "ImportTypeRefData: validating type: typeLogicalName = %A" typeName ValidateProvidedTypeAfterStaticInstantiation(m, info.ProvidedType, path, typeName) | _ -> diff --git a/src/fsharp/service/SemanticClassification.fs b/src/fsharp/service/SemanticClassification.fs index 9647a0b4e40..e6c22215508 100644 --- a/src/fsharp/service/SemanticClassification.fs +++ b/src/fsharp/service/SemanticClassification.fs @@ -94,7 +94,7 @@ module TcResolutionsExtensions = match rfinfo.TyconRef.TypeReprInfo with | TFSharpObjectRepr x -> match x.fsobjmodel_kind with - | TTyconEnum -> Some () + | TFSharpEnum -> Some () | _ -> None | _ -> None @@ -259,13 +259,13 @@ module TcResolutionsExtensions = match repr with | TFSharpObjectRepr om -> match om.fsobjmodel_kind with - | TTyconClass -> SemanticClassificationType.ReferenceType - | TTyconInterface -> SemanticClassificationType.Interface - | TTyconStruct -> SemanticClassificationType.ValueType - | TTyconDelegate _ -> SemanticClassificationType.Delegate - | TTyconEnum _ -> SemanticClassificationType.Enumeration - | TRecdRepr _ - | TUnionRepr _ -> + | TFSharpClass -> SemanticClassificationType.ReferenceType + | TFSharpInterface -> SemanticClassificationType.Interface + | TFSharpStruct -> SemanticClassificationType.ValueType + | TFSharpDelegate _ -> SemanticClassificationType.Delegate + | TFSharpEnum _ -> SemanticClassificationType.Enumeration + | TFSharpRecdRepr _ + | TFSharpUnionRepr _ -> if isStructTyconRef tcref then SemanticClassificationType.ValueType else @@ -284,8 +284,8 @@ module TcResolutionsExtensions = | TAsmRepr _ -> SemanticClassificationType.TypeDef | TMeasureableRepr _-> SemanticClassificationType.TypeDef #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint _-> SemanticClassificationType.TypeDef - | TProvidedNamespaceExtensionPoint _-> SemanticClassificationType.TypeDef + | TProvidedTypeRepr _-> SemanticClassificationType.TypeDef + | TProvidedNamespaceRepr _-> SemanticClassificationType.TypeDef #endif | TNoRepr -> SemanticClassificationType.ReferenceType diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index bf1b5967c4f..b7598b7953f 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -793,13 +793,13 @@ module internal DescriptionListsImpl = match repr with | TFSharpObjectRepr om -> match om.fsobjmodel_kind with - | TTyconClass -> FSharpGlyph.Class - | TTyconInterface -> FSharpGlyph.Interface - | TTyconStruct -> FSharpGlyph.Struct - | TTyconDelegate _ -> FSharpGlyph.Delegate - | TTyconEnum _ -> FSharpGlyph.Enum - | TRecdRepr _ -> FSharpGlyph.Type - | TUnionRepr _ -> FSharpGlyph.Union + | TFSharpClass -> FSharpGlyph.Class + | TFSharpInterface -> FSharpGlyph.Interface + | TFSharpStruct -> FSharpGlyph.Struct + | TFSharpDelegate _ -> FSharpGlyph.Delegate + | TFSharpEnum _ -> FSharpGlyph.Enum + | TFSharpRecdRepr _ -> FSharpGlyph.Type + | TFSharpUnionRepr _ -> FSharpGlyph.Union | TILObjectRepr (TILObjectReprData (_, _, td)) -> if td.IsClass then FSharpGlyph.Class elif td.IsStruct then FSharpGlyph.Struct @@ -809,8 +809,8 @@ module internal DescriptionListsImpl = | TAsmRepr _ -> FSharpGlyph.Typedef | TMeasureableRepr _-> FSharpGlyph.Typedef #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint _-> FSharpGlyph.Typedef - | TProvidedNamespaceExtensionPoint _-> FSharpGlyph.Typedef + | TProvidedTypeRepr _-> FSharpGlyph.Typedef + | TProvidedNamespaceRepr _-> FSharpGlyph.Typedef #endif | TNoRepr -> FSharpGlyph.Class diff --git a/src/fsharp/symbols/SymbolHelpers.fs b/src/fsharp/symbols/SymbolHelpers.fs index 1c8628ad31a..fe53650be26 100644 --- a/src/fsharp/symbols/SymbolHelpers.fs +++ b/src/fsharp/symbols/SymbolHelpers.fs @@ -798,7 +798,7 @@ module internal SymbolHelpers = if tyconRef.IsProvidedErasedTycon || tyconRef.IsProvidedGeneratedTycon then let typeBeforeArguments = match tyconRef.TypeReprInfo with - | TProvidedTypeExtensionPoint info -> info.ProvidedType + | TProvidedTypeRepr info -> info.ProvidedType | _ -> failwith "unreachable" let staticParameters = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments, provider) -> typeBeforeArguments.GetStaticParameters provider), range=m) let staticParameters = staticParameters.PApplyArray(id, "GetStaticParameters", m) @@ -909,7 +909,7 @@ module internal SymbolHelpers = // otherwise we'll fail at tast.fs match modref.Deref.TypeReprInfo with #if !NO_EXTENSIONTYPING - | TProvidedNamespaceExtensionPoint _ -> + | TProvidedNamespaceRepr _ -> modref.CompilationPathOpt |> Option.bind (fun path -> // works similar to generation of xml-docs at tastops.fs, probably too similar diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs index 107d5a37dd7..48560ecd2b8 100644 --- a/src/fsharp/symbols/Symbols.fs +++ b/src/fsharp/symbols/Symbols.fs @@ -562,10 +562,9 @@ type FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = match entity.TypeReprInfo with | TFSharpObjectRepr r when entity.IsFSharpDelegateTycon -> match r.fsobjmodel_kind with - | TTyconDelegate ss -> FSharpDelegateSignature(cenv, ss) + | TFSharpDelegate ss -> FSharpDelegateSignature(cenv, ss) | _ -> invalidOp "not a delegate type" | _ -> invalidOp "not a delegate type" - override _.Accessibility = if isUnresolved() then FSharpAccessibility taccessPublic else @@ -673,7 +672,7 @@ type FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = member x.StaticParameters = match entity.TypeReprInfo with #if !NO_EXTENSIONTYPING - | TProvidedTypeExtensionPoint info -> + | TProvidedTypeRepr info -> let m = x.DeclarationLocation let typeBeforeArguments = info.ProvidedType let staticParameters = typeBeforeArguments.PApplyWithProvider((fun (typeBeforeArguments, provider) -> typeBeforeArguments.GetStaticParameters provider), range=m) diff --git a/tests/fsharp/Compiler/Service/SignatureGenerationTests.fs b/tests/fsharp/Compiler/Service/SignatureGenerationTests.fs index b6898e524bb..5807c51b644 100644 --- a/tests/fsharp/Compiler/Service/SignatureGenerationTests.fs +++ b/tests/fsharp/Compiler/Service/SignatureGenerationTests.fs @@ -23,8 +23,18 @@ module SignatureGenerationTests = |> typecheckResults |> sigText - let actual = text.ToString() - let expected2 = expected.Replace("\r\n", "\n") + let actual = + text.ToString() + |> fun s -> s.Split('\n') + |> Array.map (fun s -> s.TrimEnd(' ')) + + printfn $"actual is\n-------\n{text.ToString()}\n---------" + + let expected2 = + expected.Replace("\r\n", "\n") + |> fun s -> s.Split('\n') + |> Array.map (fun s -> s.TrimEnd(' ')) + Assert.shouldBeEquivalentTo expected2 actual [] @@ -71,38 +81,50 @@ module Inner = member x.Thing = match x with | FirstCase thing -> thing """ |> sigShouldBe """namespace Sample + /// exception comments exception MyEx of reason: string + /// module-level docs - module Inner = begin + module Inner = + /// type-level docs type Facts = + /// constructor-level docs - new : unit -> Facts + new: unit -> Facts + /// primary ctor docs - new : name:string -> Facts + new: name: string -> Facts + /// member-level docs - member blah : unit -> int list + member blah: unit -> int list + /// auto-property-level docs - member Name : string + member Name: string + /// module-level binding docs - val module_member : unit + val module_member: unit + /// record docs type TestRecord = - { /// record field docs - RecordField: int } - with - /// record member docs - member Data : int - /// static record member docs - static member Foo : bool - end + { + /// record field docs + RecordField: int + } + + /// record member docs + member Data: int + + /// static record member docs + static member Foo: bool + /// union docs type TestUnion = + /// docs for first case | FirstCase of thing: int - with - /// union member - member Thing : int - end - end""" \ No newline at end of file + + /// union member + member Thing: int + """ \ No newline at end of file diff --git a/tests/fsharp/core/printing/test.fsx b/tests/fsharp/core/printing/test.fsx index 63dd02878e5..1f0593050a9 100644 --- a/tests/fsharp/core/printing/test.fsx +++ b/tests/fsharp/core/printing/test.fsx @@ -929,6 +929,42 @@ type optionRecord = { x: obj } let x = { x = null } ;; +type RecordWithMembers = + { x: obj } + member a.Property = 1 + member a.Method() = 2 +;; +type UnionWithMembers = + /// This is Case1 + | Case1 + /// This is Case2 + | Case2 of int + /// This is Property + member a.Property = 1 + /// This is Method + member a.Method() = 2 +;; +type OneFieldRecordNoXmlDoc = + { OneField: obj} +;; +type OneFieldRecordXmlDoc = + { /// Hello! + OneField: obj} +;; +type TwoFieldRecordNoXmlDoc = + { TwoFields1: obj; TwoFields2: obj } +;; +type TwoFieldRecordXmlDoc = + { /// Goog + TwoFields1: obj; + /// Even more good + TwoFields2: obj } +;; +type System.Int32 with + member a.ExtrinsicExtensionProperty = 1 + member a.ExtrinsicExtensionMethod() = 2 +;; + ;; (* ;; needed, to isolate error regressions *) ;;exit 0;; (* piped in to enable error regressions *) \ No newline at end of file diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index b6df048d2c7..392e038edee 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -1211,7 +1211,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -1220,7 +1221,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r = { f0 = 0 f1 = 1 f2 = 2 @@ -2573,4 +2575,40 @@ val x: optionRecord = { x = None } { x: obj } val x: optionRecord = { x = null } +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index 2b5f1c95fda..3d1b7dcfef8 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -1213,7 +1213,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -1222,7 +1223,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r = { f0 = 0 f1 = 1 f2 = 2 @@ -2575,4 +2577,40 @@ val x: optionRecord = { x = None } { x: obj } val x: optionRecord = { x = null } +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index 1a09b074b87..63128735b3f 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -531,7 +531,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -540,7 +541,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r = { f0 = 0 f1 = 1 f2 = 2 @@ -1818,4 +1820,40 @@ val x: optionRecord = { x = None } { x: obj } val x: optionRecord = { x = null } +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index b4ec64da765..0a662a939fc 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -533,7 +533,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -542,7 +543,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r = { f0 = 0 f1 = 1 f2 = 2 @@ -1820,4 +1822,40 @@ val x: optionRecord = { x = None } { x: obj } val x: optionRecord = { x = null } +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index b5b0c74f649..8f4ee5e5a69 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -4170,7 +4170,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -4179,7 +4180,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r = { f0 = 0 f1 = 1 f2 = 2 @@ -6120,4 +6122,40 @@ val x: optionRecord = { x = None } { x: obj } val x: optionRecord = { x = null } +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index a9b173950d7..d9a0a92576d 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -4172,7 +4172,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -4181,7 +4182,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r = { f0 = 0 f1 = 1 f2 = 2 @@ -6122,4 +6124,40 @@ val x: optionRecord = { x = None } { x: obj } val x: optionRecord = { x = null } +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index 0f1dd4f9820..6cef5ef7618 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -358,7 +358,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -367,7 +368,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r val r10s: r[] val r10s': string * r[] @@ -1588,4 +1590,40 @@ val x: optionRecord { x: obj } val x: optionRecord +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index 622187b8cb3..4ea172ee383 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -360,7 +360,8 @@ type 'a T1Pre with member E: IEvent > type r = - { f0: int + { + f0: int f1: int f2: int f3: int @@ -369,7 +370,8 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } + f9: int + } val r10: r val r10s: r[] val r10s': string * r[] @@ -1590,4 +1592,40 @@ val x: optionRecord { x: obj } val x: optionRecord +> type RecordWithMembers = + { x: obj } + member Method: unit -> int + member Property: int + +> type UnionWithMembers = + | Case1 + | Case2 of int + member Method: unit -> int + member Property: int + +> type OneFieldRecordNoXmlDoc = + { OneField: obj } + +> type OneFieldRecordXmlDoc = + { + OneField: obj + } + +> type TwoFieldRecordNoXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type TwoFieldRecordXmlDoc = + { + TwoFields1: obj + TwoFields2: obj + } + +> type Int32 with + member ExtrinsicExtensionProperty: int +type Int32 with + member ExtrinsicExtensionMethod: unit -> int + > > > From 4ab4ab075514b22506b21d50431b36c082e2049c Mon Sep 17 00:00:00 2001 From: Don Syme Date: Wed, 1 Sep 2021 17:04:35 +0100 Subject: [PATCH 08/25] simplify code for laying out type definitions --- src/fsharp/NicePrint.fs | 308 ++++++++++++++++++---------------------- 1 file changed, 142 insertions(+), 166 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index d416ce3b494..9e29ccf30a1 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1675,13 +1675,15 @@ module private TastDefinitionPrinting = let impliedNames = try - Set.ofList [ for p in props do - if p.HasGetter then yield p.GetterMethod.DisplayName - if p.HasSetter then yield p.SetterMethod.DisplayName - for e in events do - yield e.AddMethod.DisplayName - yield e.RemoveMethod.DisplayName ] - with _ -> Set.empty + [ for p in props do + if p.HasGetter then p.GetterMethod.DisplayName + if p.HasSetter then p.SetterMethod.DisplayName + for e in events do + e.AddMethod.DisplayName + e.RemoveMethod.DisplayName ] + |> Set.ofList + with _ -> + Set.empty let meths = GetImmediateIntrinsicMethInfosOfType (None, ad) g amap m ty @@ -1775,176 +1777,150 @@ module private TastDefinitionPrinting = [wordL (tagKeyword "inherit") ^^ (layoutType denv super)] | _ -> [] - let erasedL = -#if SHOW_ERASURE - match tryTcrefOfAppTy g ty with - | ValueSome tcref -> - if tcref.IsProvidedErasedTycon then - [ wordL ""; wordL (FSComp.SR.erasedTo()) ^^ PrintIL.layoutILTypeRef { denv with shortTypeNames = false } tcref.CompiledRepresentationForNamedType; wordL "" ] - else - [] - | None -> -#endif - [] + let allDecls = inherits @ iimplsLs @ ctorLs @ instanceValsLs @ methLs @ fieldLs @ propLs @ eventLs @ staticValsLs @ nestedTypeLs - let decls = inherits @ iimplsLs @ ctorLs @ methLs @ fieldLs @ propLs @ eventLs @ instanceValsLs @ staticValsLs @ nestedTypeLs @ erasedL - - let addMembers useWithEnd reprL = - if isNil decls then + let addMaxMembers reprL = + if isNil allDecls then reprL else - let memberLs = applyMaxMembers denv.maxMembers decls - if simplified || not useWithEnd then - reprL @@ aboveListL memberLs - else - reprL @@ (WordL.keywordWith @@-- aboveListL memberLs) @@ WordL.keywordEnd + let memberLs = applyMaxMembers denv.maxMembers allDecls + reprL @@ aboveListL memberLs + + let repr = tycon.TypeReprInfo + + let addReprAccessL l = layoutAccessibility denv tycon.TypeReprAccessibility l + + let addStartEnd declsL = + match start with + | Some s -> (wordL s @@-- declsL) @@ WordL.keywordEnd + | None -> declsL + + let addLhs rhsL = + let brk = not (isNil allDecls) || breakTypeDefnEqn repr + if brk then + (lhsL ^^ WordL.equals) @@-- rhsL + else + (lhsL ^^ WordL.equals) --- rhsL + + let typeDeclL = - let reprL = - let repr = tycon.TypeReprInfo match repr with - | TFSharpRecdRepr _ - | TFSharpUnionRepr _ - | TFSharpObjectRepr _ - | TAsmRepr _ - | TMeasureableRepr _ - | TILObjectRepr _ -> - - let rhsL = - let addReprAccessL l = layoutAccessibility denv tycon.TypeReprAccessibility l - let denv = denv.AddAccessibility tycon.TypeReprAccessibility - match repr with - | TFSharpRecdRepr _ -> - let recdFieldRefL fld = layoutRecdField false denv infoReader tcref fld - - // For records, use multi-line layout as soon as there is XML doc - // type R = - // { - // /// ABC - // Field1: int - // - // /// ABC - // Field2: int - // } - // - // For records, use multi-line layout as soon as there is more than one field - // type R = - // { - // Field1: int - // Field2: int - // } - let useMultiLine = - let members = - match denv.maxMembers with - | None -> tycon.TrueFieldsAsList - | Some n -> tycon.TrueFieldsAsList |> List.truncate n - members.Length > 1 || - members |> List.exists (fun m -> not m.XmlDoc.IsEmpty) - - let recdL = - tycon.TrueFieldsAsList - |> List.map recdFieldRefL - |> applyMaxMembers denv.maxMembers - |> aboveListL - |> (if useMultiLine then braceMultiLineL else braceL) - |> addReprAccessL - |> addMembers false - - Some recdL - - | TFSharpUnionRepr _ -> - let layoutUnionCases = - tycon.UnionCasesAsList - |> layoutUnionCases denv infoReader tcref - |> applyMaxMembers denv.maxMembers - |> aboveListL - Some (addMembers false (addReprAccessL layoutUnionCases)) + | TFSharpRecdRepr _ -> + let denv = denv.AddAccessibility tycon.TypeReprAccessibility + + // For records, use multi-line layout as soon as there is XML doc + // type R = + // { + // /// ABC + // Field1: int + // + // /// ABC + // Field2: int + // } + // + // For records, use multi-line layout as soon as there is more than one field + // type R = + // { + // Field1: int + // Field2: int + // } + let useMultiLine = + let members = + match denv.maxMembers with + | None -> tycon.TrueFieldsAsList + | Some n -> tycon.TrueFieldsAsList |> List.truncate n + members.Length > 1 || + members |> List.exists (fun m -> not m.XmlDoc.IsEmpty) + + tycon.TrueFieldsAsList + |> List.map (layoutRecdField false denv infoReader tcref) + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> (if useMultiLine then braceMultiLineL else braceL) + |> addReprAccessL + |> addMaxMembers + |> addLhs + + | TFSharpUnionRepr _ -> + let denv = denv.AddAccessibility tycon.TypeReprAccessibility + tycon.UnionCasesAsList + |> layoutUnionCases denv infoReader tcref + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addReprAccessL + |> addMaxMembers + |> addLhs - | TFSharpObjectRepr r -> - match r.fsobjmodel_kind with - | TFSharpDelegate (TSlotSig(_, _, _, _, paraml, rty)) -> - let rty = GetFSharpViewOfReturnType denv.g rty - Some (WordL.keywordDelegate ^^ WordL.keywordOf --- layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) rty []) - - | TFSharpEnum -> - tycon.TrueFieldsAsList - |> List.map (fun f -> - match f.LiteralValue with - | None -> emptyL - | Some c -> WordL.bar ^^ - wordL (tagField f.Name) ^^ - WordL.equals ^^ - layoutConst denv.g ty c) - |> aboveListL - |> Some - - | _ -> - let allDecls = inherits @ iimplsLs @ ctorLs @ instanceValsLs @ methLs @ propLs @ eventLs @ staticValsLs - if isNil allDecls then - None - else - let allDecls = applyMaxMembers denv.maxMembers allDecls - let emptyMeasure = match tycon.TypeOrMeasureKind with TyparKind.Measure -> isNil allDecls | _ -> false - if emptyMeasure then None else - let declsL = aboveListL allDecls - let declsL = - match start with - | Some s -> (wordL s @@-- declsL) @@ WordL.keywordEnd - | None -> declsL - Some declsL - - | TAsmRepr _ -> - Some (wordL (tagText "(# \"\" #)")) - - | TMeasureableRepr ty -> - Some (layoutType denv ty) - - | TILObjectRepr _ -> - if tycon.ILTyconRawMetadata.IsEnum then - infoReader.GetILFieldInfosOfType (None, ad, m, ty) - |> List.filter (fun x -> x.FieldName <> "value__") - |> List.map (fun x -> PrintIL.layoutILEnumDefParts x.FieldName x.LiteralValue) - |> applyMaxMembers denv.maxMembers - |> aboveListL - |> Some - else - let declsL = - decls - |> applyMaxMembers denv.maxMembers - |> aboveListL - |> fun declsL -> - match start with - | Some s -> (wordL s @@-- declsL) @@ WordL.keywordEnd - | None -> declsL - - Some declsL - - | _ -> None - - // Work out whether we use - // type R = // broken - // ... - // or - // type R = ... // breakable - let brk = not (isNil decls) || breakTypeDefnEqn repr - - match rhsL with - | None -> lhsL - | Some rhsL -> - if brk then - (lhsL ^^ WordL.equals) @@-- rhsL - else - (lhsL ^^ WordL.equals) --- rhsL + | TFSharpObjectRepr { fsobjmodel_kind = TFSharpDelegate slotSig } -> + let (TSlotSig(_, _, _, _, paraml, rty)) = slotSig + let rty = GetFSharpViewOfReturnType denv.g rty + let delegateL = WordL.keywordDelegate ^^ WordL.keywordOf --- layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) rty [] + delegateL + |> addLhs + + | TFSharpObjectRepr { fsobjmodel_kind = TFSharpEnum } -> + tycon.TrueFieldsAsList + |> List.map (fun f -> + match f.LiteralValue with + | None -> emptyL + | Some c -> + WordL.bar ^^ + wordL (tagField f.Name) ^^ + WordL.equals ^^ + layoutConst denv.g ty c) + |> aboveListL + |> addLhs + + | TFSharpObjectRepr _ when isNil allDecls && start.IsNone -> + lhsL + + | TFSharpObjectRepr _ -> + allDecls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addStartEnd + |> addLhs + + | TAsmRepr _ -> + let asmL = wordL (tagText "(# \"\" #)") + asmL + |> addLhs + + | TMeasureableRepr ty -> + layoutType denv ty + |> addLhs + + | TILObjectRepr _ when tycon.ILTyconRawMetadata.IsEnum -> + infoReader.GetILFieldInfosOfType (None, ad, m, ty) + |> List.filter (fun x -> x.FieldName <> "value__") + |> List.map (fun x -> PrintIL.layoutILEnumDefParts x.FieldName x.LiteralValue) + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addLhs + + | TILObjectRepr _ -> + allDecls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addStartEnd + |> addLhs + + | TNoRepr when tycon.TypeAbbrev.IsSome -> + let abbreviatedType = tycon.TypeAbbrev.Value + (lhsL ^^ WordL.equals) --- (layoutType { denv with shortTypeNames = false } abbreviatedType) + + | _ when isNil allDecls -> + lhsL | TProvidedNamespaceRepr _ | TProvidedTypeRepr _ | TNoRepr -> - match tycon.TypeAbbrev with - | None -> - addMembers true (lhsL ^^ WordL.equals) - | Some abbreviatedType -> - (lhsL ^^ WordL.equals) --- (layoutType { denv with shortTypeNames = false } abbreviatedType) + allDecls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addLhs - let attribsL = layoutAttribs denv false ty tycon.TypeOrMeasureKind tycon.Attribs reprL + let attribsL = layoutAttribs denv false ty tycon.TypeOrMeasureKind tycon.Attribs typeDeclL layoutXmlDocOfEntityRef denv infoReader tcref attribsL // Layout: exception definition From 40e31ccde728da346015b39bfdc6127ace458145 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Wed, 1 Sep 2021 17:24:39 +0100 Subject: [PATCH 09/25] adjust tests --- src/fsharp/FSComp.txt | 2 +- src/fsharp/xlf/FSComp.txt.cs.xlf | 2 +- src/fsharp/xlf/FSComp.txt.de.xlf | 2 +- src/fsharp/xlf/FSComp.txt.es.xlf | 2 +- src/fsharp/xlf/FSComp.txt.fr.xlf | 2 +- src/fsharp/xlf/FSComp.txt.it.xlf | 2 +- src/fsharp/xlf/FSComp.txt.ja.xlf | 2 +- src/fsharp/xlf/FSComp.txt.ko.xlf | 2 +- src/fsharp/xlf/FSComp.txt.pl.xlf | 2 +- src/fsharp/xlf/FSComp.txt.pt-BR.xlf | 2 +- src/fsharp/xlf/FSComp.txt.ru.xlf | 2 +- src/fsharp/xlf/FSComp.txt.tr.xlf | 2 +- src/fsharp/xlf/FSComp.txt.zh-Hans.xlf | 2 +- src/fsharp/xlf/FSComp.txt.zh-Hant.xlf | 2 +- .../LexicalFiltering/Basic/OffsideExceptions.fs | 2 +- .../Basic/OffsideExceptions/RelaxWhitespace2.fs.bsl | 2 +- tests/fsharp/typecheck/sigs/neg15.bsl | 2 +- tests/fsharp/typecheck/sigs/neg57.bsl | 2 +- .../Attributes/Diags/E_AdjustUses01a.fs | 2 +- .../Attributes/Diags/E_AdjustUses01b.fs | 2 +- .../Attributes/Legacy/Test01.fs | 6 +++--- .../Attributes/Legacy/Test02.fs | 6 +++--- .../Attributes/Legacy/Test03.fs | 4 ++-- .../Attributes/Legacy/Test04.fs | 6 +++--- .../Attributes/Legacy/Test05.fs | 6 +++--- .../Attributes/Legacy/Test06.fs | 4 ++-- .../Attributes/Legacy/Test07.fs | 4 ++-- .../Attributes/Legacy/Test08.fs | 4 ++-- .../Attributes/Legacy/Test09.fs | 2 +- .../Attributes/Legacy/Test10.fs | 6 +++--- .../Attributes/Legacy/Test11.fs | 6 +++--- .../Attributes/Legacy/Test12.fs | 4 ++-- .../Attributes/Legacy/Test13.fs | 6 +++--- .../Attributes/Legacy/Test14.fs | 6 +++--- .../Attributes/Legacy/Test15.fs | 4 ++-- .../Attributes/Legacy/Test16.fs | 4 ++-- .../Attributes/Legacy/Test17.fs | 4 ++-- .../Attributes/Legacy/Test18.fs | 2 +- .../Attributes/Legacy/Test19.fs | 4 ++-- .../Attributes/Legacy/Test20.fs | 4 ++-- .../Attributes/Legacy/Test21.fs | 2 +- .../Attributes/Legacy/Test22.fs | 4 ++-- .../Attributes/Legacy/Test23.fs | 4 ++-- .../Attributes/Legacy/Test24.fs | 2 +- .../Attributes/Legacy/Test25.fs | 2 +- .../Attributes/Legacy/Test26.fs | 2 +- .../Attributes/Legacy/Test28.fs | 2 +- .../UnionTypes/E_GenericFunctionValuedStaticProp01.fs | 2 +- .../MethodsAndProperties/E_IndexerArityMismatch01.fs | 8 ++++---- .../MethodsAndProperties/E_IndexerArityMismatch02.fs | 8 ++++---- .../MethodsAndProperties/tupledValueProperties02.fsx | 8 ++++---- .../NamedArguments/E_NumParamMismatch01.fs | 2 +- .../OverloadingMembers/E_ReturnGenericUnit01.fs | 2 +- .../ObjectExpressions/E_MembersMustBeVirtual01.fs | 2 +- .../ObjectExpressions/E_ObjExprWithDuplOverride01.fs | 2 +- .../Expressions/SyntacticSugar/E_GetSliceNotDef02.fs | 2 +- .../E_GenericTypeConstraint02.fsi | 4 ++-- .../CheckingOfImplementationFiles/E_MatchOnProperCtor.fsi | 2 +- .../E_MemberNotImplemented01.fsi | 2 +- .../DispatchSlotInference/E_GenInterfaceWGenMethods01.fs | 2 +- .../E_MoreThanOneDispatchSlotMatch01.fs | 2 +- .../Generalization/E_GeneralizeMemberInGeneric01.fs | 4 ++-- .../Generalization/RecordProperty01.fs | 2 +- .../ClassTypes/AutoProperties/E_PrivateProperty01.fs | 2 +- .../InterfaceTypes/E_InterfaceNotFullyImpl01.fs | 2 +- .../SignatureConformance/E_StructConstructor01.fsi | 2 +- .../SignatureConformance/E_StructWithNameConflict01.fsi | 2 +- .../MissingMethodInImplementation01.fs | 2 +- .../MissingMethodInImplementation01.fsi | 2 +- .../CheckingSyntacticTypes/ByRef04.fsx | 8 ++++---- .../UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx | 2 +- .../Diagnostics/General/E_MemberObjectctorTakeGiven.fs | 4 ++-- .../Misc/ReflectionTypeNameMangling01.fsx | 2 +- .../InteractiveSession/Misc/VerbatimIdentifier01.fsx | 4 ++-- tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx | 8 ++++---- tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx | 2 +- tests/fsharpqa/Source/Printing/ParamArrayInSignatures.fsx | 2 +- .../Source/Printing/SignatureWithOptionalArgs01.fs | 8 ++++---- 78 files changed, 128 insertions(+), 128 deletions(-) diff --git a/src/fsharp/FSComp.txt b/src/fsharp/FSComp.txt index 9bf9937c1e7..8ad0572c511 100644 --- a/src/fsharp/FSComp.txt +++ b/src/fsharp/FSComp.txt @@ -718,7 +718,7 @@ tcUnnamedArgumentsDoNotFormPrefix,"The unnamed arguments do not form a prefix of 873,tcOnlySimplePatternsInLetRec,"Only simple variable patterns can be bound in 'let rec' constructs" 874,tcOnlyRecordFieldsAndSimpleLetCanBeMutable,"Mutable 'let' bindings can't be recursive or defined in recursive modules or namespaces" 875,tcMemberIsNotSufficientlyGeneric,"This member is not sufficiently generic" -876,tcLiteralAttributeRequiresConstantValue,"A declaration may only be the [] attribute if a constant value is also given, e.g. 'val x : int = 1'" +876,tcLiteralAttributeRequiresConstantValue,"A declaration may only be the [] attribute if a constant value is also given, e.g. 'val x: int = 1'" 877,tcValueInSignatureRequiresLiteralAttribute,"A declaration may only be given a value in a signature if the declaration has the [] attribute" 878,tcThreadStaticAndContextStaticMustBeStatic,"Thread-static and context-static variables must be static and given the [] attribute to indicate that the value is initialized to the default value on each new thread" 879,tcVolatileFieldsMustBeMutable,"Volatile fields must be marked 'mutable' and cannot be thread-static" diff --git a/src/fsharp/xlf/FSComp.txt.cs.xlf b/src/fsharp/xlf/FSComp.txt.cs.xlf index 4f1068a61e0..2a7388a815b 100644 --- a/src/fsharp/xlf/FSComp.txt.cs.xlf +++ b/src/fsharp/xlf/FSComp.txt.cs.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Pokud se definuje také hodnota konstanty, třeba val x : int = 1, může být deklarací jenom atribut [<Literal>]. diff --git a/src/fsharp/xlf/FSComp.txt.de.xlf b/src/fsharp/xlf/FSComp.txt.de.xlf index c87da1eb799..8b50d43390a 100644 --- a/src/fsharp/xlf/FSComp.txt.de.xlf +++ b/src/fsharp/xlf/FSComp.txt.de.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Eine Deklaration kann nur dem [<Literal>]-Attribut entsprechen, wenn auch ein konstanter Wert angegeben ist, z.B. "val x : int =1". diff --git a/src/fsharp/xlf/FSComp.txt.es.xlf b/src/fsharp/xlf/FSComp.txt.es.xlf index ba20897d6d6..50c683c2d74 100644 --- a/src/fsharp/xlf/FSComp.txt.es.xlf +++ b/src/fsharp/xlf/FSComp.txt.es.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Una declaración solo puede ser el atributo [<Literal>] si también se proporciona un valor constante, por ejemplo, "val x: int = 1" diff --git a/src/fsharp/xlf/FSComp.txt.fr.xlf b/src/fsharp/xlf/FSComp.txt.fr.xlf index d1dbb5a3228..0c210f97f37 100644 --- a/src/fsharp/xlf/FSComp.txt.fr.xlf +++ b/src/fsharp/xlf/FSComp.txt.fr.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Une déclaration peut seulement être l'attribut [<Literal>] si une valeur constante est aussi donnée, par ex. 'val x : int = 1' diff --git a/src/fsharp/xlf/FSComp.txt.it.xlf b/src/fsharp/xlf/FSComp.txt.it.xlf index c2efb639371..1e382f8ff3e 100644 --- a/src/fsharp/xlf/FSComp.txt.it.xlf +++ b/src/fsharp/xlf/FSComp.txt.it.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Una dichiarazione può essere solo l'attributo [<Literal>] se è specificato anche un valore costante, ad esempio 'val x : int = 1' diff --git a/src/fsharp/xlf/FSComp.txt.ja.xlf b/src/fsharp/xlf/FSComp.txt.ja.xlf index 423870b1b3f..8d1c8d58c45 100644 --- a/src/fsharp/xlf/FSComp.txt.ja.xlf +++ b/src/fsharp/xlf/FSComp.txt.ja.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' 定数値も指定する場合には宣言を [<Literal>] 属性のみにできます。例: 'val x : int = 1' diff --git a/src/fsharp/xlf/FSComp.txt.ko.xlf b/src/fsharp/xlf/FSComp.txt.ko.xlf index 3a1e807667e..2b7c0183461 100644 --- a/src/fsharp/xlf/FSComp.txt.ko.xlf +++ b/src/fsharp/xlf/FSComp.txt.ko.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' 상수 값도 지정된 경우(예: 'val x : int = 1')에만 선언은 [<Literal>] 특성일 수 있습니다. diff --git a/src/fsharp/xlf/FSComp.txt.pl.xlf b/src/fsharp/xlf/FSComp.txt.pl.xlf index 4b05380fb6a..1eabdfa6e05 100644 --- a/src/fsharp/xlf/FSComp.txt.pl.xlf +++ b/src/fsharp/xlf/FSComp.txt.pl.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Deklaracja może być atrybutem [<Literal>] tylko wtedy, gdy zostanie również podana wartość stała, np. „val x : int = 1” diff --git a/src/fsharp/xlf/FSComp.txt.pt-BR.xlf b/src/fsharp/xlf/FSComp.txt.pt-BR.xlf index e78da3a8260..193426d1414 100644 --- a/src/fsharp/xlf/FSComp.txt.pt-BR.xlf +++ b/src/fsharp/xlf/FSComp.txt.pt-BR.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Uma declaração só pode ser o atributo [<Literal>] se um valor constante também é dado, ex.:' val x: int = 1' diff --git a/src/fsharp/xlf/FSComp.txt.ru.xlf b/src/fsharp/xlf/FSComp.txt.ru.xlf index 8ae8c73c007..9b7e09f29f9 100644 --- a/src/fsharp/xlf/FSComp.txt.ru.xlf +++ b/src/fsharp/xlf/FSComp.txt.ru.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Объявление может представлять собой только атрибут [<Literal>], если указано значение константы, например, 'val x : int = 1' diff --git a/src/fsharp/xlf/FSComp.txt.tr.xlf b/src/fsharp/xlf/FSComp.txt.tr.xlf index 3a24dcb76c4..0519d175d83 100644 --- a/src/fsharp/xlf/FSComp.txt.tr.xlf +++ b/src/fsharp/xlf/FSComp.txt.tr.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' Bir sabit değer de sağlanmışsa bildirim yalnızca [<Literal>] özniteliği olabilir, ör. 'val x : int = 1' diff --git a/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf b/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf index 3d8521964f9..d050115cdaf 100644 --- a/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/fsharp/xlf/FSComp.txt.zh-Hans.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' 如果还给定了常量值,则声明只能是 [<Literal>] 属性,例如 "val x : int = 1" diff --git a/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf b/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf index 3b48511cf78..1c3ba21f7bb 100644 --- a/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/fsharp/xlf/FSComp.txt.zh-Hant.xlf @@ -4248,7 +4248,7 @@ - A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x : int = 1' + A declaration may only be the [<Literal>] attribute if a constant value is also given, e.g. 'val x: int = 1' 若也提供了常數值,宣告就只能是 [<Literal>] 屬性,例如 'val x : int = 1' diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs index be92f802ddd..0a925647882 100644 --- a/tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs +++ b/tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs @@ -412,7 +412,7 @@ function EndLine = 3 EndColumn = 9 } Message = - "Incomplete pattern matches on this expression. For example, the value '{x=0}' may indicate a case not covered by the pattern(s)." }; + "Incomplete pattern matches on this expression. For example, the value '{ x=0 }' may indicate a case not covered by the pattern(s)." }; { Error = Warning 193 Range = { StartLine = 3 StartColumn = 1 diff --git a/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/LexicalFiltering/Basic/OffsideExceptions/RelaxWhitespace2.fs.bsl b/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/LexicalFiltering/Basic/OffsideExceptions/RelaxWhitespace2.fs.bsl index d46f0278052..bd04ab2edd9 100644 --- a/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/LexicalFiltering/Basic/OffsideExceptions/RelaxWhitespace2.fs.bsl +++ b/tests/FSharp.Compiler.ComponentTests/resources/tests/Conformance/LexicalFiltering/Basic/OffsideExceptions/RelaxWhitespace2.fs.bsl @@ -43,6 +43,6 @@ RelaxWhitespace2.fs (3394,13)-(3394,14) typecheck warning Incomplete pattern mat RelaxWhitespace2.fs (3397,13)-(3397,14) typecheck warning Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s). RelaxWhitespace2.fs (3403,21)-(3403,22) typecheck warning Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s). RelaxWhitespace2.fs (3410,13)-(3415,20) typecheck warning Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s). -RelaxWhitespace2.fs (3713,1)-(3713,9) typecheck warning Incomplete pattern matches on this expression. For example, the value '{y=0}' may indicate a case not covered by the pattern(s). +RelaxWhitespace2.fs (3713,1)-(3713,9) typecheck warning Incomplete pattern matches on this expression. For example, the value '{ y=0 }' may indicate a case not covered by the pattern(s). RelaxWhitespace2.fs (3720,1)-(3720,9) typecheck warning Incomplete pattern matches on this expression. RelaxWhitespace2.fs (3731,1)-(3731,9) typecheck warning Incomplete pattern matches on this expression. \ No newline at end of file diff --git a/tests/fsharp/typecheck/sigs/neg15.bsl b/tests/fsharp/typecheck/sigs/neg15.bsl index 92d49dd44a1..055ddf9fcc3 100644 --- a/tests/fsharp/typecheck/sigs/neg15.bsl +++ b/tests/fsharp/typecheck/sigs/neg15.bsl @@ -63,4 +63,4 @@ neg15.fs(190,1,190,6): typecheck error FS0491: The member or object constructor neg15.fs(191,1,191,8): typecheck error FS0491: The member or object constructor 'SM' is not accessible. Private members may only be accessed from within the declaring type. Protected members may only be accessed from an extending type and cannot be accessed from inner lambda expressions. -neg15.fs(204,11,204,16): typecheck error FS0501: The object constructor 'X2' takes 0 argument(s) but is here given 1. The required signature is 'new : unit -> X2'. +neg15.fs(204,11,204,16): typecheck error FS0501: The object constructor 'X2' takes 0 argument(s) but is here given 1. The required signature is 'new: unit -> X2'. diff --git a/tests/fsharp/typecheck/sigs/neg57.bsl b/tests/fsharp/typecheck/sigs/neg57.bsl index aff6f93a03f..700888656fa 100644 --- a/tests/fsharp/typecheck/sigs/neg57.bsl +++ b/tests/fsharp/typecheck/sigs/neg57.bsl @@ -1,4 +1,4 @@ neg57.fs(4,6,4,9): typecheck error FS0314: The type definitions for type 'Foo' in the signature and implementation are not compatible because the field 'offset' was present in the implementation but not in the signature. Struct types must now reveal their fields in the signature for the type, though the fields may still be labelled 'private' or 'internal'. -neg57.fs(1,8,1,9): typecheck error FS0193: Module 'M' requires a value 'new : unit -> Foo<'T>' +neg57.fs(1,8,1,9): typecheck error FS0193: Module 'M' requires a value 'new: unit -> Foo<'T>' diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01a.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01a.fs index f4099f83728..f0faca0ad5d 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01a.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01a.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes #Diagnostics // Regression test for FSHARP1.0:5406 // Scenario #2: I'm writing my own custom IComparable implementation - don't bother giving me one -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ [] [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01b.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01b.fs index 93b928b3daa..9ba57bfab71 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01b.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Diags/E_AdjustUses01b.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes #Diagnostics // Regression test for FSHARP1.0:5406 // Scenario #1: I'm not writing my own custom IComparable implementation, assume the reference equality -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ [] [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test01.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test01.fs index 1fea4b200e3..d12d3d698de 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test01.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test01.fs @@ -1,8 +1,8 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M01 = [] [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test02.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test02.fs index a8a78e3effe..5d8333b5d08 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test02.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test02.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M02 = diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test03.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test03.fs index 02ef7b86a0e..c071eedb65c 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test03.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test03.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ module M03 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test04.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test04.fs index af9e0cb3309..85202dc8748 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test04.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test04.fs @@ -1,8 +1,8 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M04 = [] [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test05.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test05.fs index d1661a1301b..492b5ee68f0 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test05.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test05.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M05 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test06.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test06.fs index a0786a43e36..403fb94ec01 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test06.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test06.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ module M06 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test07.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test07.fs index 1182c2fc956..b27c1436f56 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test07.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test07.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M07 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test08.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test08.fs index 71f99fac753..f39da31e12c 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test08.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test08.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M08 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test09.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test09.fs index 871605c9c7d..2602e7e2786 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test09.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test09.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ module M09 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test10.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test10.fs index 745dfee5fed..c16191409eb 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test10.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test10.fs @@ -1,8 +1,8 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M10 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test11.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test11.fs index 6938b15b8fd..df83ca304ee 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test11.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test11.fs @@ -1,8 +1,8 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M11 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test12.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test12.fs index 40c055ab904..83f9928cf71 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test12.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test12.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ module M12 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test13.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test13.fs index 83cb6602d79..71d0643581c 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test13.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test13.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M13 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test14.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test14.fs index 712a36ce9bd..32c58d9e597 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test14.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test14.fs @@ -1,8 +1,8 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M14 = diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test15.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test15.fs index e4653388628..84cd5fd9a15 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test15.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test15.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ module M15 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test16.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test16.fs index 13017437bf9..6a251bfc8a8 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test16.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test16.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M16 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test17.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test17.fs index 40c619cc110..31fce549b22 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test17.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test17.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M17 = [] (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test18.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test18.fs index 6baa497d41f..f2feefd8eb3 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test18.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test18.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> ReferenceEqualityAttribute'\.$ +//The object constructor 'ReferenceEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> ReferenceEqualityAttribute'\.$ module M18 = [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test19.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test19.fs index e456ae03d45..678e24b9409 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test19.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test19.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M19 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test20.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test20.fs index ca4624c96f1..3fc566826a2 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test20.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test20.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M20 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test21.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test21.fs index 62190a2edec..264fbf884ef 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test21.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test21.fs @@ -1,5 +1,5 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ module M21 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test22.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test22.fs index 5c646bf10b7..cafe723d9b1 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test22.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test22.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M22 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test23.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test23.fs index 36ac19e1e99..01c0e359acf 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test23.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test23.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M23 = diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test24.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test24.fs index 3ac68f9b637..d95e67e960f 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test24.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test24.fs @@ -1,5 +1,5 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralComparisonAttribute'\.$ +//The object constructor 'StructuralComparisonAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralComparisonAttribute'\.$ module M24 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test25.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test25.fs index a4a8db15d12..a3ccd10c520 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test25.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test25.fs @@ -1,5 +1,5 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M25 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test26.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test26.fs index 3d9ef4ac930..08725d8ccbd 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test26.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test26.fs @@ -1,5 +1,5 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ module M26 = (* [] *) diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test28.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test28.fs index d9cbc3500ba..8d1990fbe1e 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test28.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/GeneratedEqualityHashingComparison/Attributes/Legacy/Test28.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypesAndModules #GeneratedEqualityAndHashing #Attributes // Regression test for FSHARP1.0:4571 -//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new : unit -> StructuralEqualityAttribute'\.$ +//The object constructor 'StructuralEqualityAttribute' takes 0 argument\(s\) but is here given 1\. The required signature is 'new: unit -> StructuralEqualityAttribute'\.$ [] //[] [] diff --git a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/UnionTypes/E_GenericFunctionValuedStaticProp01.fs b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/UnionTypes/E_GenericFunctionValuedStaticProp01.fs index 5543c4f888d..41f12af15af 100644 --- a/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/UnionTypes/E_GenericFunctionValuedStaticProp01.fs +++ b/tests/fsharpqa/Source/Conformance/BasicTypeAndModuleDefinitions/UnionTypes/E_GenericFunctionValuedStaticProp01.fs @@ -1,6 +1,6 @@ // Regression test for DEV11:5949 - "generic function-valued static property raises "error FS0073: internal error: Undefined or unsolved type variable: 'a"" //The instantiation of the generic type 'list1' is missing and can't be inferred from the arguments or return type of this member\. Consider providing a type instantiation when accessing this type, e\.g\. 'list1<_>'\.$ -//The function or member 'toList' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member private list1\.toList : \('a list1 -> 'a list\)'\.$ +//The function or member 'toList' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member private list1\.toList: \('a list1 -> 'a list\)'\.$ open System open System.Collections diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch01.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch01.fs index 3263f7f4d40..092d929ca34 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch01.fs +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch01.fs @@ -1,10 +1,10 @@ // #Regression #Conformance #DeclarationElements #MemberDefinitions #MethodsAndProperties // Regression test for FSHARP1.0:1407 (Poor error message when arguments do not match signature of overloaded operator. Also incorrect span.) -//This expression was expected to have type. ''a \[,\]' .but here has type. 'int \[\]' -//This expression was expected to have type. ''a \[\]' .but here has type. 'int \[,\]' -//This expression was expected to have type. ''a \[\]' .but here has type. 'int \[,,\]' -//This expression was expected to have type. ''a \[\]' .but here has type. 'int \[,,,\]' +//This expression was expected to have type. ''a\[,\]' .but here has type. 'int\[\]' +//This expression was expected to have type. ''a\[\]' .but here has type. 'int\[,\]' +//This expression was expected to have type. ''a\[\]' .but here has type. 'int\[,,\]' +//This expression was expected to have type. ''a\[\]' .but here has type. 'int\[,,,\]' let foo (arr : int[,]) = arr.[1,2] // ok diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch02.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch02.fs index ddbfc1ef785..5dc4df4da21 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch02.fs +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/E_IndexerArityMismatch02.fs @@ -1,10 +1,10 @@ // #Regression #Conformance #DeclarationElements #MemberDefinitions #MethodsAndProperties // Regression test for FSHARP1.0:1407 (Poor error message when arguments do not match signature of overloaded operator. Also incorrect span.) -//This expression was expected to have type. ''a \[,,\]' .but here has type. 'int \[\]' -//This expression was expected to have type. ''a \[\]' .but here has type. 'int \[,\]' -//This expression was expected to have type. ''a \[,,\]' .but here has type. 'int \[,,,\]' -//This expression was expected to have type. ''a \[,\]' .but here has type. 'int \[,,,]' +//This expression was expected to have type. ''a\[,,\]' .but here has type. 'int\[\]' +//This expression was expected to have type. ''a\[\]' .but here has type. 'int\[,\]' +//This expression was expected to have type. ''a\[,,\]' .but here has type. 'int\[,,,\]' +//This expression was expected to have type. ''a\[,\]' .but here has type. 'int\[,,,]' let foo (arr : int[,]) = arr.[1,2] // ok diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/tupledValueProperties02.fsx b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/tupledValueProperties02.fsx index 4b6ce48dfb3..56c262747ed 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/tupledValueProperties02.fsx +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/MethodsAndProperties/tupledValueProperties02.fsx @@ -4,10 +4,10 @@ // Note: the non-curried syntax ((x:decimal, y:decimal)) is expected // Run thru fsi // type x = -// new : unit -> x -// member Verify : int -// member X : decimal \* decimal with set -// member Y : decimal \* decimal with set +// new: unit -> x +// member Verify: int +// member X: decimal \* decimal with set +// member Y: decimal \* decimal with set #light type x ()= class diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs index 03ca90c19fc..62e9d270297 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/NamedArguments/E_NumParamMismatch01.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #DeclarationElements #MemberDefinitions #NamedArguments // FSB 1433, Count of supplied parameters incorrect in error message if named parameters are used. //Accessibility modifiers are not permitted on overrides or interface implementations -//The member or object constructor 'NamedMeth1' requires 1 additional argument\(s\)\. The required signature is 'abstract IFoo\.NamedMeth1: arg1:int \* arg2: int \* arg3: int \* arg4: int -> float' +//The member or object constructor 'NamedMeth1' requires 1 additional argument\(s\)\. The required signature is 'abstract IFoo\.NamedMeth1: arg1: int \* arg2: int \* arg3: int \* arg4: int -> float' //The member or object constructor 'NamedMeth1' requires 4 argument\(s\) but is here given 2 unnamed and 3 named argument\(s\)\. The required signature is 'abstract IFoo\.NamedMeth1: arg1: int \* arg2: int \* arg3: int \* arg4: int -> float' type IFoo = interface diff --git a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_ReturnGenericUnit01.fs b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_ReturnGenericUnit01.fs index 1e0b8557a8d..70f2a159199 100644 --- a/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_ReturnGenericUnit01.fs +++ b/tests/fsharpqa/Source/Conformance/DeclarationElements/MemberDefinitions/OverloadingMembers/E_ReturnGenericUnit01.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #DeclarationElements #MemberDefinitions #Overloading // Verify error message when returning a 'a which is of type unit -//The member 'M : unit -> unit' does not have the correct type to override the corresponding abstract method +//The member 'M: unit -> unit' does not have the correct type to override the corresponding abstract method [] type 'a ``base`` = diff --git a/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_MembersMustBeVirtual01.fs b/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_MembersMustBeVirtual01.fs index 41badad221f..23564654982 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_MembersMustBeVirtual01.fs +++ b/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_MembersMustBeVirtual01.fs @@ -2,7 +2,7 @@ // FSB 1683, dispatch slot checking in object expression manages to match non-virtual member //The type Foo contains the member 'MyX' but it is not a virtual or abstract method that is available to override or implement. -//The member 'MyX : unit -> int' does not have the correct type to override any given virtual method$ +//The member 'MyX: unit -> int' does not have the correct type to override any given virtual method$ //At least one override did not correctly implement its corresponding abstract member$ type Foo(x : int) = diff --git a/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_ObjExprWithDuplOverride01.fs b/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_ObjExprWithDuplOverride01.fs index 7af5108124a..10c4974b6a8 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_ObjExprWithDuplOverride01.fs +++ b/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_ObjExprWithDuplOverride01.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #DataExpressions #ObjectConstructors // Regression test for FSharp1.0:4593 - Internal compiler error on typechecking object expressions with duplicate overrides -//More than one override implements 'Next : StrongToWeakEntry<'a> array -> int when 'a : not struct' +//More than one override implements 'Next: StrongToWeakEntry<'a> array -> int when 'a: not struct' #light diff --git a/tests/fsharpqa/Source/Conformance/Expressions/SyntacticSugar/E_GetSliceNotDef02.fs b/tests/fsharpqa/Source/Conformance/Expressions/SyntacticSugar/E_GetSliceNotDef02.fs index 0c728456047..ce67de40860 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/SyntacticSugar/E_GetSliceNotDef02.fs +++ b/tests/fsharpqa/Source/Conformance/Expressions/SyntacticSugar/E_GetSliceNotDef02.fs @@ -2,7 +2,7 @@ #light // Verify error using a 1D slice if only a 2D version added -//The member or object constructor 'GetSlice' takes 4 argument\(s\) but is here given 2\. The required signature is 'member Foo\.GetSlice : lb1:'a option \* ub1:'a option \* lb2:'a option \* ub2:'a option -> unit' +//The member or object constructor 'GetSlice' takes 4 argument\(s\) but is here given 2\. The required signature is 'member Foo\.GetSlice: lb1: 'a option \* ub1: 'a option \* lb2: 'a option \* ub2: 'a option -> unit' type Foo<'a>() = let mutable m_lastLB1 : 'a option = None diff --git a/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_GenericTypeConstraint02.fsi b/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_GenericTypeConstraint02.fsi index 6373c0fd989..90982433631 100644 --- a/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_GenericTypeConstraint02.fsi +++ b/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_GenericTypeConstraint02.fsi @@ -2,8 +2,8 @@ module Test // Regression test for FSharp1.0:5834 - Generic constraints on explictly specified type parameters work differently in fsi and fs -//A type parameter is missing a constraint 'when 'a : struct' -//The signature and implementation are not compatible because the declaration of the type parameter 'a' requires a constraint of the form 'a : struct +//A type parameter is missing a constraint 'when 'a: struct' +//The signature and implementation are not compatible because the declaration of the type parameter 'a' requires a constraint of the form 'a: struct type G<'a when 'a : struct> val h<'a> : 'a -> G<'a> diff --git a/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MatchOnProperCtor.fsi b/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MatchOnProperCtor.fsi index ca8d30cdc78..bea7555b1e4 100644 --- a/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MatchOnProperCtor.fsi +++ b/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MatchOnProperCtor.fsi @@ -1,5 +1,5 @@ // Regression test for bug 6465 -//Module 'MyNamespace' requires a value 'new : \(int \* int\) -> MyType' +//Module 'MyNamespace' requires a value 'new: \(int \* int\) -> MyType' namespace MyNamespace type MyType = diff --git a/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MemberNotImplemented01.fsi b/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MemberNotImplemented01.fsi index 7f41f8ca056..5c2886da572 100644 --- a/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MemberNotImplemented01.fsi +++ b/tests/fsharpqa/Source/Conformance/ImplementationFilesAndSignatureFiles/CheckingOfImplementationFiles/E_MemberNotImplemented01.fsi @@ -2,7 +2,7 @@ // Regression test for FSharp1.0:5628 // Title: incorrect signature check: implementation file missing implementation of method declared in signature file -//Module 'Test' contains. static member C1\.op_Explicit : x:C1 -> float .but its signature specifies. static member C1\.op_Explicit : x:C1 -> int .The types differ$ +//Module 'Test' contains. static member C1\.op_Explicit: x: C1 -> float .but its signature specifies. static member C1\.op_Explicit: x: C1 -> int .The types differ$ diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs index 063c814b08a..5d87e71957e 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_GenInterfaceWGenMethods01.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypeInference // FSHARP1.0:1445. See also FSHARP1.0:4721 // Failure when generating code for generic interface with generic method -//Value restriction\. The value 'result' has been inferred to have generic type. val result: '_a array when '_a : equality and '_a : null .Either define 'result' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation\.$ +//Value restriction\. The value 'result' has been inferred to have generic type. val result: '_a array when '_a: equality and '_a: null .Either define 'result' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation\.$ type 'a IFoo = interface abstract DoStuff<'b> : 'a -> 'b array end diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs index 984cf1d4411..42c921ab237 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/DispatchSlotInference/E_MoreThanOneDispatchSlotMatch01.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypeInference // FSB 1625, fsc generates assemblies that don't load/peverify -//The override 'M : int -> int' implements more than one abstract slot, e\.g\. 'abstract IB\.M: int -> int' and 'abstract IA\.M: int -> int' +//The override 'M: int -> int' implements more than one abstract slot, e\.g\. 'abstract IB\.M: int -> int' and 'abstract IA\.M: int -> int' type IA = abstract M : int -> int diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_GeneralizeMemberInGeneric01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_GeneralizeMemberInGeneric01.fs index 1ba1bf5c15e..db79a5bb18e 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_GeneralizeMemberInGeneric01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/E_GeneralizeMemberInGeneric01.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #TypeInference // Regression for Dev11:10649, we used to generalize some members too early which could be unsound if that member was in a generic type -//The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member private Foo\.Inf : \('T list -> 'T list\)'\.$ -//The function or member 'Foo' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member private Qux\.Foo : \('T list -> 'T list\)'\.$ +//The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member private Foo\.Inf: \('T list -> 'T list\)'\.$ +//The function or member 'Foo' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member private Qux\.Foo: \('T list -> 'T list\)'\.$ // Used to ICE type Foo<'T> = FooCase of 'T diff --git a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/RecordProperty01.fs b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/RecordProperty01.fs index 609d43bc0a0..be701527266 100644 --- a/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/RecordProperty01.fs +++ b/tests/fsharpqa/Source/Conformance/InferenceProcedures/Generalization/RecordProperty01.fs @@ -1,6 +1,6 @@ // #Regression #Conformance #TypeInference // Regression for Dev11:41009, this class definition used to generate an error. Make sure we can use it too. -//The function or member 'Empty' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member Rope\.Empty : Rope<'T>'\. +//The function or member 'Empty' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types\. The inferred signature is 'static member Rope\.Empty: Rope<'T>'\. type Rope<'T> = | Sub of 'T[] diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/AutoProperties/E_PrivateProperty01.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/AutoProperties/E_PrivateProperty01.fs index d99c71b9bff..acb21f79b71 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/AutoProperties/E_PrivateProperty01.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/ClassTypes/AutoProperties/E_PrivateProperty01.fs @@ -1,5 +1,5 @@ // #Conformance #ObjectOrientedTypes #Classes #MethodsAndProperties #Accessibility -//The type 'X' is less accessible than the value, member or type 'member XX\.PublicProperty : X' it is used in.$ +//The type 'X' is less accessible than the value, member or type 'member XX\.PublicProperty: X' it is used in.$ type private X() = class end type XX() = diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl01.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl01.fs index 24403ca6c8b..feaa5cc7cb0 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl01.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/InterfaceTypes/E_InterfaceNotFullyImpl01.fs @@ -3,7 +3,7 @@ // This code used to compile and then throw at runtime // Now we emit an error. -//No implementation was given for 'abstract member INodeWrapper\.Node : Node'\. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.' +//No implementation was given for 'abstract INodeWrapper\.Node: Node'\. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e\.g\. 'interface \.\.\. with member \.\.\.' namespace Foo diff --git a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructConstructor01.fsi b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructConstructor01.fsi index 991c81ee5b4..fb4fe9384a6 100644 --- a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructConstructor01.fsi +++ b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructConstructor01.fsi @@ -1,6 +1,6 @@ // #Conformance #Signatures #Structs #Regression // Regression for Dev11:137930, structs used to not give errors on unimplemented constructors in the signature file -//Module 'M' requires a value 'new : unit -> Foo<'T>' +//Module 'M' requires a value 'new: unit -> Foo<'T>' module M diff --git a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict01.fsi b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict01.fsi index f39854e2e1b..b784cb1e69d 100644 --- a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict01.fsi +++ b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict01.fsi @@ -1,6 +1,6 @@ // #Conformance #Signatures #Structs #Regression // Regression for Dev11:137942, structs used to not give errors on when member names conflicted with interface members -//Module 'M' contains. override Foo\.GetEnumerator : unit -> IEnumerator<'T> .but its signature specifies. member Foo\.GetEnumerator : unit -> IEnumerator<'T> .The compiled names differ +//Module 'M' contains. override Foo\.GetEnumerator: unit -> IEnumerator<'T> .but its signature specifies. member Foo\.GetEnumerator: unit -> IEnumerator<'T> .The compiled names differ //The field, constructor or member 'GetEnumerator' is not defined$ module M diff --git a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fs b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fs index 30a1ac473fd..e1e7c4e31ef 100644 --- a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fs +++ b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fs @@ -1,7 +1,7 @@ // #Regression #Conformance #SignatureFiles // Regression for 5618 // Used to get a bad error message here, LSS doesn't implement member Bar with is in the .fsi but also on another type -//Module 'MyNS\.File2' requires a value 'member File2\.LSS\.Bar : string -> int'$ +//Module 'MyNS\.File2' requires a value 'member File2\.LSS\.Bar: string -> int'$ namespace MyNS module File2 = diff --git a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fsi b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fsi index 9a1d2a61eea..7ac32f02f2e 100644 --- a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fsi +++ b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/MissingMethodInImplementation01.fsi @@ -1,7 +1,7 @@ // #Regression #Conformance #SignatureFiles // Regression for 5618 // Used to get a bad error message here, LSS doesn't implement member Bar with is in the .fsi but also on another type -//Module 'MyNS\.File2' requires a value 'member File2\.LSS\.Bar : string -> int'$ +//Module 'MyNS\.File2' requires a value 'member File2\.LSS\.Bar: string -> int'$ namespace MyNS diff --git a/tests/fsharpqa/Source/Conformance/TypesAndTypeConstraints/CheckingSyntacticTypes/ByRef04.fsx b/tests/fsharpqa/Source/Conformance/TypesAndTypeConstraints/CheckingSyntacticTypes/ByRef04.fsx index 1cac208d4d6..99363967af9 100644 --- a/tests/fsharpqa/Source/Conformance/TypesAndTypeConstraints/CheckingSyntacticTypes/ByRef04.fsx +++ b/tests/fsharpqa/Source/Conformance/TypesAndTypeConstraints/CheckingSyntacticTypes/ByRef04.fsx @@ -1,9 +1,9 @@ // #ByRef #Regression #inline // Regression test for DevDiv:122445 ("Internal compiler error when evaluating code with inline/byref") -//val inline f : -// x:string -> y:nativeptr< \^a> -> bool -// when \^a : unmanaged and -// \^a : \(static member TryParse : string \* nativeptr< \^a> -> bool\) +//val inline f: +// x: string -> y: nativeptr< \^a> -> bool +// when \^a: unmanaged and +// \^a: \(static member TryParse: string \* nativeptr< \^a> -> bool\) // Should compile just fine let inline f x (y:_ nativeptr) = (^a : (static member TryParse : string * ^a nativeptr -> bool)(x,y)) diff --git a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx index f192e9f2f84..93a352702da 100644 --- a/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx +++ b/tests/fsharpqa/Source/Conformance/UnitsOfMeasure/TypeChecker/W_LessGeneric01.fsx @@ -6,7 +6,7 @@ // ----------------\^\^ //This construct causes code to be less generic than indicated by the type annotations\. The unit-of-measure variable 'u has been constrained to be measure '1'\.$ //val loop: f: \('a -> 'a\) -> init: 'a -> comp: \('a -> 'a -> bool\) -> 'a -//val fn: x:float -> float +//val fn: x: float -> float let rec loop f init comp = let next = f init diff --git a/tests/fsharpqa/Source/Diagnostics/General/E_MemberObjectctorTakeGiven.fs b/tests/fsharpqa/Source/Diagnostics/General/E_MemberObjectctorTakeGiven.fs index 0b896f194d4..fc095c9a225 100644 --- a/tests/fsharpqa/Source/Diagnostics/General/E_MemberObjectctorTakeGiven.fs +++ b/tests/fsharpqa/Source/Diagnostics/General/E_MemberObjectctorTakeGiven.fs @@ -4,9 +4,9 @@ // bad error message: The member or object constructor 'Random' takes 1 arguments but is here supplied with 1. // // Now we should diplay: -// The member or object constructor 'Random' takes 0 type argument(s) but is here given 1. The required signature is 'static member Variable.Random : y:Variable<'a> -> Variable<'a>'. E:\dd\fsharp_1\src\qa\md\src\fsh\Compiler\fsharp\Source\Conformance\DeclarationElements\ObjectConstructors\E-ImplicitExplicitCTors.fs +// The member or object constructor 'Random' takes 0 type argument(s) but is here given 1. The required signature is 'static member Variable.Random: y: Variable<'a> -> Variable<'a>'. E:\dd\fsharp_1\src\qa\md\src\fsh\Compiler\fsharp\Source\Conformance\DeclarationElements\ObjectConstructors\E-ImplicitExplicitCTors.fs // -//The member or object constructor 'Random' takes 0 type argument\(s\) but is here given 1\. The required signature is 'static member Variable\.Random : y:Variable<'a> -> Variable<'a>' +//The member or object constructor 'Random' takes 0 type argument\(s\) but is here given 1\. The required signature is 'static member Variable\.Random: y: Variable<'a> -> Variable<'a>' #light diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx index ed5040071a9..f32da41224d 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx @@ -13,7 +13,7 @@ // --------------\^\^\^\^\^\^\^\^\^\^\^\^\^\^ //Incomplete pattern matches on this expression\. For example, the value 'None' may indicate a case not covered by the pattern\(s\) //type Planet = -// new : ipx:float \* ivx:float -> Planet +// new: ipx: float \* ivx: float -> Planet // member VX: float // member X: float //val paintObjects: Planet list diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx index 83e4eaa4e7e..6e409c496d4 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx @@ -1,7 +1,7 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:5675 -//val \( A\.B \): bool = true -//val \( \.\. \): bool = true +//val \( A\.B \) : bool = true +//val \( \.\. \) : bool = true //val A: bool = true let ``A.B`` = true;; diff --git a/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx b/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx index 6310ecd5952..655a9f0524d 100644 --- a/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx +++ b/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx @@ -20,10 +20,10 @@ //val getPointF: x: float32 \* y: float32 -> System\.Drawing\.PointF //val h: System\.Drawing\.PointF = {X=.+, Y=.+} //val i: int \* RecT \* Bldg = \(1, { Name = "F#" }, Office\) -//val J_: int \[\] = \[\|1; 2; 3\|] -//val j_': float \[\] = \[\|1\.0; 1\.0\|] -//val j_'_: RecT \[\] = \[\|\|] -//val j_'': string \[\] = \[\|"0"; "1"; "2"; "3"; "4"\|] +//val J_: int\[\] = \[\|1; 2; 3\|] +//val j_': float\[\] = \[\|1\.0; 1\.0\|] +//val j_'_: RecT\[\] = \[\|\|] +//val j_'': string\[\] = \[\|"0"; "1"; "2"; "3"; "4"\|] type RecT = { Name : string } diff --git a/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx b/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx index 70ce9ff5f86..651ba156c30 100644 --- a/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx +++ b/tests/fsharpqa/Source/Printing/LazyValues01NetFx4.fsx @@ -2,7 +2,7 @@ // Regression test for FSharp1.0:3981 - Lazy gets NullReferenceException when displayed // val a: Lazy = Value is not created // val b: unit list = \[\(\)\] -// val c: unit \[\] = \[\|\(\); \(\); \(\)\|] +// val c: unit\[\] = \[\|\(\); \(\); \(\)\|] // val d: unit = \(\) let a = lazy() diff --git a/tests/fsharpqa/Source/Printing/ParamArrayInSignatures.fsx b/tests/fsharpqa/Source/Printing/ParamArrayInSignatures.fsx index 671066a0709..f948cbeef58 100644 --- a/tests/fsharpqa/Source/Printing/ParamArrayInSignatures.fsx +++ b/tests/fsharpqa/Source/Printing/ParamArrayInSignatures.fsx @@ -3,7 +3,7 @@ // pretty printing signatures with params arguments //type Heterogeneous = -// static member Echo : \[\] args:obj \[\] -> obj \[\] +// static member Echo: \[\] args: obj\[\] -> obj\[\] type Heterogeneous = static member Echo([] args: obj[]) = args diff --git a/tests/fsharpqa/Source/Printing/SignatureWithOptionalArgs01.fs b/tests/fsharpqa/Source/Printing/SignatureWithOptionalArgs01.fs index c336bc6a1ce..234db8784e1 100644 --- a/tests/fsharpqa/Source/Printing/SignatureWithOptionalArgs01.fs +++ b/tests/fsharpqa/Source/Printing/SignatureWithOptionalArgs01.fs @@ -3,10 +3,10 @@ // pretty printing signatures with optional arguments //type AsyncTimer = -// new : f:\(unit -> unit\) \* \?delay:int -> AsyncTimer -// member Start : unit -> unit -// member Stop : unit -> unit -// member Delay : int option +// new: f: \(unit -> unit\) \* \?delay: int -> AsyncTimer +// member Start: unit -> unit +// member Stop: unit -> unit +// member Delay: int option open Microsoft.FSharp.Control From c665737c8847ccd87055a6d1dd3c50a56fcb3641 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 01:14:42 +0100 Subject: [PATCH 10/25] fix printing of backtick and operator identifiers --- VisualFSharp.sln | 6 + src/fsharp/CheckExpressions.fs | 2 +- src/fsharp/NameResolution.fs | 4 +- src/fsharp/NicePrint.fs | 313 +++++++++--------- src/fsharp/PrettyNaming.fs | 304 +++++++++++------ src/fsharp/PrettyNaming.fsi | 97 +++++- src/fsharp/TypedTree.fs | 14 +- src/fsharp/TypedTreeOps.fs | 5 +- src/fsharp/lexhelp.fs | 98 ------ src/fsharp/lexhelp.fsi | 9 - src/fsharp/service/FSharpCheckerResults.fs | 4 +- src/fsharp/service/SemanticClassification.fs | 2 +- src/fsharp/service/ServiceDeclarationLists.fs | 6 +- src/fsharp/service/ServiceLexing.fs | 11 +- src/fsharp/service/ServiceLexing.fsi | 4 +- src/fsharp/symbols/SymbolPatterns.fs | 6 +- src/fsharp/symbols/SymbolPatterns.fsi | 6 - src/fsharp/symbols/Symbols.fs | 2 +- tests/fsharp/core/printing/test.fsx | 54 ++- .../printing/z.output.test.1000.stderr.bsl | 118 +++---- .../printing/z.output.test.1000.stdout.47.bsl | 144 +++++--- .../printing/z.output.test.1000.stdout.50.bsl | 144 +++++--- .../printing/z.output.test.200.stderr.bsl | 118 +++---- .../printing/z.output.test.200.stdout.47.bsl | 144 +++++--- .../printing/z.output.test.200.stdout.50.bsl | 144 +++++--- .../printing/z.output.test.default.stderr.bsl | 118 +++---- .../z.output.test.default.stdout.47.bsl | 144 +++++--- .../z.output.test.default.stdout.50.bsl | 144 +++++--- .../printing/z.output.test.off.stderr.bsl | 118 +++---- .../printing/z.output.test.off.stdout.47.bsl | 144 +++++--- .../printing/z.output.test.off.stdout.50.bsl | 144 +++++--- .../printing/z.output.test.quiet.stderr.bsl | 118 +++---- .../CodeFix/RenameParamToMatchSignature.fs | 3 +- .../CodeFix/RenameUnusedValue.fs | 6 +- .../CodeFix/ReplaceWithSuggestion.fs | 3 +- .../Completion/CompletionProvider.fs | 4 +- .../FSharp.Editor/Completion/SignatureHelp.fs | 2 +- .../LanguageService/Tokenizer.fs | 2 +- .../Refactor/AddExplicitTypeToParameter.fs | 2 +- .../FSharp.LanguageService/Intellisense.fs | 2 +- .../Tests.LanguageService.ParameterInfo.fs | 4 +- .../Tests.LanguageService.QuickInfo.fs | 7 +- .../tests/UnitTests/QuickInfoTests.fs | 6 +- 43 files changed, 1573 insertions(+), 1157 deletions(-) diff --git a/VisualFSharp.sln b/VisualFSharp.sln index 92927a4af56..fbc6ced66f3 100644 --- a/VisualFSharp.sln +++ b/VisualFSharp.sln @@ -87,6 +87,12 @@ EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Test.Utilities", "tests\FSharp.Test.Utilities\FSharp.Test.Utilities.fsproj", "{60D275B0-B14A-41CB-A1B2-E815A7448FCB}" EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpSuite.Tests", "tests\fsharp\FSharpSuite.Tests.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}" + ProjectSection(ProjectDependencies) = postProject + {D0E98C0D-490B-4C61-9329-0862F6E87645} = {D0E98C0D-490B-4C61-9329-0862F6E87645} + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} = {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} + {2E60864A-E3FF-4BCC-810F-DC7C34E6B236} = {2E60864A-E3FF-4BCC-810F-DC7C34E6B236} + {C94C257C-3C0A-4858-B5D8-D746498D1F08} = {C94C257C-3C0A-4858-B5D8-D746498D1F08} + EndProjectSection EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.UnitTests", "tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}" EndProject diff --git a/src/fsharp/CheckExpressions.fs b/src/fsharp/CheckExpressions.fs index af721c6a084..870f71f8fd5 100644 --- a/src/fsharp/CheckExpressions.fs +++ b/src/fsharp/CheckExpressions.fs @@ -6357,7 +6357,7 @@ and TcIndexingThen cenv env overallTy mWholeExpr mDot tpenv setInfo synLeftExprO match info with | None -> None | Some (path, functionName, indexArgs) -> - let operPath = mkSynLidGet (mDot.MakeSynthetic()) path (CompileOpName functionName) + let operPath = mkSynLidGet (mDot.MakeSynthetic()) path functionName let f, fty, tpenv = TcExprOfUnknownType cenv env tpenv operPath let domainTy, resultTy = UnifyFunctionType (Some mWholeExpr) cenv env.DisplayEnv mWholeExpr fty UnifyTypes cenv env mWholeExpr domainTy e1ty diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 3895b2b18c2..17f84a29e9f 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -257,9 +257,9 @@ type Item = | Item.Event einfo -> einfo.EventName | Item.Property(_, FSProp(_, _, Some v, _) :: _) | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> v.DisplayName - | Item.Property(nm, _) -> DemangleOperatorName nm + | Item.Property(nm, _) -> ConvertLogicalNameToDisplayText nm | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayName - | Item.MethodGroup(nm, _, _) -> DemangleOperatorName nm + | Item.MethodGroup(nm, _, _) -> ConvertLogicalNameToDisplayText nm | Item.CtorGroup(nm, _) -> DemangleGenericTypeName nm | Item.FakeInterfaceCtor (AbbrevOrAppTy tcref) | Item.DelegateCtor (AbbrevOrAppTy tcref) -> DemangleGenericTypeName tcref.DisplayName diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 9e29ccf30a1..4b7e73832aa 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -65,6 +65,13 @@ module internal PrintUtilities = | [x] -> x | x :: xs -> List.fold (^^) x xs + let tagNavArbValRef (valRefOpt: ValRef option) tag = + match valRefOpt with + | Some vref -> + tag |> mkNav vref.DefinitionRange + | None -> + tag + let suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty = isEnumTy g ty || isDelegateTy g ty || ExistsHeadTypeInEntireHierarchy g amap m ty g.exn_tcr @@ -73,10 +80,6 @@ module internal PrintUtilities = | Some n when allDecls.Length > n -> (allDecls |> List.truncate n) @ [wordL (tagPunctuation "...")] | _ -> allDecls - /// fix up a name coming from IL metadata by quoting "funny" names (keywords, otherwise invalid identifiers) - let adjustILName n = - n |> Lexhelp.Keywords.QuoteIdentifierIfNeeded - // Put the "+ N overloads" into the layout let shrinkOverloads layoutFunction resultFunction group = match group with @@ -362,8 +365,9 @@ module private PrintIL = | None -> WordL.equals ^^ (comment "value unavailable") | Some s -> WordL.equals ^^ wordL s - let layoutILEnumDefParts nm litVal = - WordL.bar ^^ wordL (tagEnum (adjustILName nm)) ^^ layoutILFieldInit litVal + let layoutILEnumCase nm litVal = + let nameL = ConvertDisplayNameToDisplayLayout (tagEnum >> wordL) nm + WordL.bar ^^ nameL ^^ layoutILFieldInit litVal module private PrintTypes = // Note: We need nice printing of constants in order to print literals and attributes @@ -704,9 +708,9 @@ module private PrintTypes = (layoutTyparRefWithInfo denv env tp)) |> longConstraintPrefix] and private layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = - let nm = DemangleOperatorName nm + let nameL = ConvertValLogicalNameToDisplayLayout (tagMember >> wordL) nm if denv.shortConstraints then - WordL.keywordMember ^^ wordL (tagMember nm) + WordL.keywordMember ^^ nameL else let rty = GetFSharpViewOfReturnType denv.g rty let stat = layoutMemberFlags memFlags @@ -715,12 +719,12 @@ module private PrintTypes = match tys with | [ty] -> layoutTypeWithInfo denv env ty | tys -> bracketL (layoutTypesWithInfoAndPrec denv env 2 (wordL (tagKeyword "or")) tys) + (tysL |> addColonL) --- - bracketL (stat ++ (wordL (tagMember nm) |> addColonL) --- + bracketL (stat ++ (nameL |> addColonL) --- ((layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) argtys --- wordL (tagPunctuation "->")) --- (layoutReturnType denv env rty))) - - /// Layout a unit expression + /// Layout a unit of measure expression and private layoutMeasure denv unt = let sortVars vs = vs |> List.sortBy (fun (v: Typar, _) -> v.DisplayName) let sortCons cs = cs |> List.sortBy (fun (c: TyconRef, _) -> c.DisplayName) @@ -832,37 +836,39 @@ module private PrintTypes = and layoutType denv ty = layoutTypeWithInfo denv SimplifyTypes.typeSimplificationInfo0 ty - let layoutArgInfos denv env argInfos = - - // Format each argument, including its name and type - let argL (ty, argInfo: ArgReprInfo) = + // Format each argument, including its name and type + let layoutArgInfo denv env (ty, argInfo: ArgReprInfo) = - // Detect an optional argument - let isOptionalArg = HasFSharpAttribute denv.g denv.g.attrib_OptionalArgumentAttribute argInfo.Attribs - let isParamArray = HasFSharpAttribute denv.g denv.g.attrib_ParamArrayAttribute argInfo.Attribs - match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy denv.g ty with - // Layout an optional argument - | Some(id), true, _, ValueSome ty -> - leftL (tagPunctuation "?") ^^ - (sepL (tagParameter id.idText) |> addColonL) ^^ - layoutTypeWithInfoAndPrec denv env 2 ty - // Layout an unnamed argument - | None, _, _, _ -> - layoutTypeWithInfoAndPrec denv env 2 ty - // Layout a named argument - | Some id, _, isParamArray, _ -> - let prefix = - if isParamArray then - layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ leftL (tagParameter id.idText) - else - leftL (tagParameter id.idText) - (prefix |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty + // Detect an optional argument + let isOptionalArg = HasFSharpAttribute denv.g denv.g.attrib_OptionalArgumentAttribute argInfo.Attribs + let isParamArray = HasFSharpAttribute denv.g denv.g.attrib_ParamArrayAttribute argInfo.Attribs + + match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy denv.g ty with + // Layout an optional argument + | Some id, true, _, ValueSome ty -> + let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> rightL) id.idText + LeftL.questionMark ^^ + (idL |> addColonL) ^^ + layoutTypeWithInfoAndPrec denv env 2 ty + + // Layout an unnamed argument + | None, _, _, _ -> + layoutTypeWithInfoAndPrec denv env 2 ty + + // Layout a named argument + | Some id, _, isParamArray, _ -> + let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> wordL) id.idText + let prefix = + if isParamArray then + layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ idL + else + idL + (prefix |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty - let allArgsL = - argInfos - |> List.mapSquared argL - |> List.map (sepListL (wordL (tagPunctuation "*"))) - allArgsL + let layoutArgInfos denv env argInfos = + argInfos + |> List.mapSquared (layoutArgInfo denv env) + |> List.map (sepListL (wordL (tagPunctuation "*"))) let layoutGenericParameterTypes denv env = function @@ -939,7 +945,6 @@ module private PrintTypes = let cxs = cxs |> List.filter (fun (tp, _) -> not (parentTyparTys |> List.exists (fun ty -> match tryDestTyparTy denv.g ty with ValueSome destTypar -> typarEq tp destTypar | _ -> false))) prettyTyparInst, prettyLayoutOfTopTypeInfoAux denv argInfos retTy cxs - let private prettyArgInfos denv allTyparInst = function | [] -> [(denv.g.unit_ty, ValReprInfo.unnamedTopArg1)] @@ -972,7 +977,7 @@ module private PrintTypes = let prettyLayoutOfMemberSig denv (memberToParentInst, nm, methTypars, argInfos, retTy) = let _, niceMethodTypars, tauL = prettyLayoutOfMemberSigCore denv memberToParentInst (emptyTyparInst, methTypars, argInfos, retTy) - let nameL = DemangleOperatorNameAsLayout tagMember nm + let nameL = ConvertValLogicalNameToDisplayLayout (tagMember >> wordL) nm let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars @@ -1059,8 +1064,7 @@ module private PrintTastMemberOrVals = info.Name <- None let mkNameL niceMethodTypars tagFunction name = - let nameL = - DemangleOperatorNameAsLayout (tagFunction >> mkNav v.DefinitionRange) name + let nameL = ConvertValLogicalNameToDisplayLayout (tagFunction >> mkNav v.DefinitionRange >> wordL) name let nameL = if denv.showMemberContainers then layoutTyconRefImpl denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL @@ -1176,7 +1180,7 @@ module private PrintTastMemberOrVals = let tagF = if isForallFunctionTy denv.g v.Type && not (isDiscard v.DisplayName) then - if IsOperatorName v.DisplayName then + if IsOperatorDisplayName v.DisplayName then tagOperator else tagFunction @@ -1266,48 +1270,44 @@ module InfoMemberPrinting = /// This uses somewhat "old fashioned" printf-style buffer printing. let layoutParamData denv (ParamData(isParamArray, _isInArg, _isOutArg, optArgInfo, _callerInfo, nmOpt, _reflArgInfo, pty)) = let isOptArg = optArgInfo.IsOptional - match isParamArray, nmOpt, isOptArg, tryDestOptionTy denv.g pty with + // detect parameter type, if ptyOpt is None - this is .NET style optional argument + let ptyOpt = tryDestOptionTy denv.g pty + + match isParamArray, nmOpt, isOptArg with // Layout an optional argument - | _, Some nm, true, ptyOpt -> - // detect parameter type, if ptyOpt is None - this is .NET style optional argument + | _, Some id, true -> + let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> rightL) id.idText let pty = match ptyOpt with ValueSome x -> x | _ -> pty - let idText = - if denv.escapeKeywordNames && Lexhelp.Keywords.keywordNames |> List.contains nm.idText then - "``" + nm.idText + "``" - else - nm.idText - SepL.questionMark ^^ - (wordL (tagParameter idText) |> addColonL) ^^ + LeftL.questionMark ^^ + (idL |> addColonL) ^^ PrintTypes.layoutType denv pty + // Layout an unnamed argument - | _, None, _, _ -> + | _, None, _ -> PrintTypes.layoutType denv pty - // Layout a named argument - | true, Some nm, _, _ -> - let idText = - if denv.escapeKeywordNames && Lexhelp.Keywords.keywordNames |> List.contains nm.idText then - "``" + nm.idText + "``" - else - nm.idText + + // Layout a named ParamArray argument + | true, Some id, _ -> + let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> wordL) id.idText layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ - (wordL (tagParameter idText) |> addColonL) ^^ + (idL |> addColonL) ^^ PrintTypes.layoutType denv pty - | false, Some nm, _, _ -> - let idText = - if denv.escapeKeywordNames && Lexhelp.Keywords.keywordNames |> List.contains nm.idText then - "``" + nm.idText + "``" - else - nm.idText - (wordL (tagParameter idText) |> addColonL) ^^ + + // Layout a named normal argument + | false, Some id, _ -> + let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> wordL) id.idText + (idL |> addColonL) ^^ PrintTypes.layoutType denv pty - let formatParamDataToBuffer denv os pd = layoutParamData denv pd |> bufferL os + let formatParamDataToBuffer denv os pd = + layoutParamData denv pd |> bufferL os /// Format a method info using "F# style". // // That is, this style: - // new: argName1: argType1 * ... * argNameN: argTypeN -> retType - // Method: argName1: argType1 * ... * argNameN: argTypeN -> retType + // new: argName1: argType1 * ... * argNameN: argTypeN -> retType + // Method: argName1: argType1 * ... * argNameN: argTypeN -> retType + // let private layoutMethInfoFSharpStyleCore (infoReader: InfoReader) m denv (minfo: MethInfo) minst = let amap = infoReader.amap @@ -1319,27 +1319,32 @@ module InfoMemberPrinting = if not minfo.IsConstructor && not minfo.IsInstance then WordL.keywordStatic else emptyL - let layout = - layout ^^ - ( - if minfo.IsConstructor then - wordL (tagKeyword "new") - else - WordL.keywordMember ^^ - PrintTypes.layoutTyparDecls denv (minfo.LogicalName |> tagMethod |> wordL) true minfo.FormalMethodTypars - ) |> addColonL + let nameL = + if minfo.IsConstructor then + WordL.keywordNew + else + let idL = ConvertValLogicalNameToDisplayLayout (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName + WordL.keywordMember ^^ + PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars + + let layout = layout ^^ (nameL |> addColonL) let layout = layoutXmlDocOfMethInfo denv infoReader minfo layout - let paramDatas = minfo.GetParamDatas(amap, m, minst) - let layout = - layout ^^ - if List.forall isNil paramDatas then - WordL.structUnit - else - sepListL WordL.arrow (List.map ((List.map (layoutParamData denv)) >> sepListL WordL.star) paramDatas) - let retTy = minfo.GetFSharpReturnTy(amap, m, minst) - layout ^^ - WordL.arrow ^^ - PrintTypes.layoutType denv retTy + + let paramsL = + let paramDatas = minfo.GetParamDatas(amap, m, minst) + if List.forall isNil paramDatas then + WordL.structUnit + else + sepListL WordL.arrow (List.map ((List.map (layoutParamData denv)) >> sepListL WordL.star) paramDatas) + + let layout = layout ^^ paramsL + + let retL = + let retTy = minfo.GetFSharpReturnTy(amap, m, minst) + WordL.arrow ^^ + PrintTypes.layoutType denv retTy + + layout ^^ retL /// Format a method info using "half C# style". // @@ -1364,8 +1369,9 @@ module InfoMemberPrinting = if minfo.IsConstructor then SepL.leftParen else + let idL = ConvertValLogicalNameToDisplayLayout (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName SepL.dot ^^ - PrintTypes.layoutTyparDecls denv (wordL (tagMethod minfo.LogicalName)) true minfo.FormalMethodTypars ^^ + PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars ^^ SepL.leftParen let paramDatas = minfo.GetParamDatas (amap, m, minst) @@ -1430,11 +1436,7 @@ module InfoMemberPrinting = let rty = pinfo.GetPropertyType(amap, m) let rty = if pinfo.IsIndexer then mkRefTupledTy g (pinfo.GetParamTypes(amap, m)) --> rty else rty let rty, _ = PrettyTypes.PrettifyType g rty - let tagProp = - match pinfo.ArbitraryValRef with - | None -> tagProperty - | Some vref -> tagProperty >> mkNav vref.DefinitionRange - let nameL = DemangleOperatorNameAsLayout tagProp pinfo.PropertyName + let nameL = ConvertValLogicalNameToDisplayLayout (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let getterSetter = match pinfo.HasGetter, pinfo.HasSetter with | true, false -> @@ -1483,10 +1485,7 @@ module private TastDefinitionPrinting = aboveListL (List.map (layoutExtensionMember denv infoReader) vs) let layoutRecdField addAccess denv infoReader (enclosingTcref: TyconRef) (fld: RecdField) = - let lhs = - tagRecordField fld.Name - |> mkNav fld.DefinitionRange - |> wordL + let lhs = ConvertDisplayNameToDisplayLayout (tagRecordField >> mkNav fld.DefinitionRange >> wordL) fld.Name let lhs = (if addAccess then layoutAccessibility denv fld.Accessibility lhs else lhs) let lhs = if fld.IsMutable then wordL (tagKeyword "mutable") --- lhs else lhs let fieldL = (lhs |> addColonL) --- layoutType denv fld.FormalType @@ -1516,7 +1515,7 @@ module private TastDefinitionPrinting = sepListL WordL.star (List.mapi (layoutUnionOrExceptionField denv infoReader isGenerated enclosingTcref) fields) let layoutUnionCase denv infoReader prefixL enclosingTcref (ucase: UnionCase) = - let nmL = DemangleOperatorNameAsLayout (tagUnionCase >> mkNav ucase.DefinitionRange) ucase.Id.idText + let nmL = ConvertDisplayNameToDisplayLayout (tagUnionCase >> mkNav ucase.DefinitionRange >> wordL) ucase.Id.idText //let nmL = layoutAccessibility denv ucase.Accessibility nmL let caseL = match ucase.RecdFields with @@ -1546,86 +1545,67 @@ module private TastDefinitionPrinting = #endif | TNoRepr -> false - let private layoutILFieldInfo denv amap m (e: ILFieldInfo) = - let staticL = if e.IsStatic then WordL.keywordStatic else emptyL - let nameL = wordL (tagField (adjustILName e.FieldName)) - let typL = layoutType denv (e.FieldType(amap, m)) + let private layoutILFieldInfo denv amap m (einfo: ILFieldInfo) = + let staticL = if einfo.IsStatic then WordL.keywordStatic else emptyL + let nameL = ConvertDisplayNameToDisplayLayout (tagField >> wordL) einfo.FieldName + let typL = layoutType denv (einfo.FieldType(amap, m)) staticL ^^ WordL.keywordVal ^^ (nameL |> addColonL) ^^ typL - let private layoutEventInfo denv (infoReader: InfoReader) m (e: EventInfo) = + let private layoutEventInfo denv (infoReader: InfoReader) m (einfo: EventInfo) = let amap = infoReader.amap - - let staticL = if e.IsStatic then WordL.keywordStatic else emptyL - - let eventTag = - let tag = - e.EventName - |> adjustILName - |> tagEvent - - match e.ArbitraryValRef with - | Some vref -> - tag |> mkNav vref.DefinitionRange - | None -> - tag - - let nameL = eventTag |> wordL - let typL = layoutType denv (e.GetDelegateType(amap, m)) + let staticL = if einfo.IsStatic then WordL.keywordStatic else emptyL + let nameL = ConvertValLogicalNameToDisplayLayout (tagEvent >> tagNavArbValRef einfo.ArbitraryValRef >> wordL) einfo.EventName + let typL = layoutType denv (einfo.GetDelegateType(amap, m)) let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL - layoutXmlDocOfEventInfo denv infoReader e overallL + layoutXmlDocOfEventInfo denv infoReader einfo overallL - let private layoutPropInfo denv (infoReader: InfoReader) m (p: PropInfo) = + let private layoutPropInfo denv (infoReader: InfoReader) m (pinfo: PropInfo) = let amap = infoReader.amap - match p.ArbitraryValRef with + match pinfo.ArbitraryValRef with | Some vref -> PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader vref | None -> let modifierAndMember = - if p.IsStatic then + if pinfo.IsStatic then WordL.keywordStatic ^^ WordL.keywordMember else WordL.keywordMember - let propTag = - p.PropertyName - |> adjustILName - |> tagProperty - - let nameL = propTag |> wordL - - let typL = layoutType denv (p.GetPropertyType(amap, m)) // shouldn't happen + let nameL = ConvertValLogicalNameToDisplayLayout (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName + let typL = layoutType denv (pinfo.GetPropertyType(amap, m)) let overallL = modifierAndMember ^^ (nameL |> addColonL) ^^ typL - layoutXmlDocOfPropInfo denv infoReader p overallL + layoutXmlDocOfPropInfo denv infoReader pinfo overallL let layoutTyconRef (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified typewordL (tcref: TyconRef) = let g = denv.g let amap = infoReader.amap let tycon = tcref.Deref let _, ty = generalizeTyconRef tcref - let start, name = - let n = tycon.DisplayName + + let start, tagger = if isStructTy g ty then if denv.printVerboseSignatures then - Some "struct", tagStruct n + Some "struct", tagStruct else - None, tagStruct n + None, tagStruct elif isInterfaceTy g ty then if denv.printVerboseSignatures then - Some "interface", tagInterface n + Some "interface", tagInterface else - None, tagInterface n + None, tagInterface elif isClassTy g ty then if denv.printVerboseSignatures then - (if simplified then None else Some "class"), tagClass n + (if simplified then None else Some "class"), tagClass else - None, tagClass n + None, tagClass else - None, tagUnknownType n + None, tagUnknownType - let name = mkNav tycon.DefinitionRange name - let nameL = layoutAccessibility denv tycon.Accessibility (wordL name) + let nameL = ConvertDisplayNameToDisplayLayout (tagger >> mkNav tycon.DefinitionRange >> wordL) tycon.DisplayName + + let nameL = layoutAccessibility denv tycon.Accessibility nameL let denv = denv.AddAccessibility tycon.Accessibility let lhsL = @@ -1634,6 +1614,7 @@ module private TastDefinitionPrinting = typewordL ^^ tpsL let start = Option.map tagKeyword start + let sortKey (v: MethInfo) = (not v.IsConstructor, not v.IsInstance, // instance first @@ -1694,6 +1675,11 @@ module private TastDefinitionPrinting = not (impliedNames.Contains m.DisplayName) && not (m.DisplayName.Split('.') |> Array.exists (fun part -> isDiscard part))) + let ilFields = + infoReader.GetILFieldInfosOfType (None, ad, m, ty) + |> List.filter (fun fld -> IsILFieldInfoAccessible g amap m ad fld && not (isDiscard fld.FieldName)) + |> List.filter (fun fld -> typeEquiv g ty fld.ApparentEnclosingType) + let ctorLs = if denv.shrinkOverloads then ctors @@ -1716,8 +1702,7 @@ module private TastDefinitionPrinting = |> List.map snd let fieldLs = - infoReader.GetILFieldInfosOfType (None, ad, m, ty) - |> List.filter (fun fld -> not (isDiscard fld.FieldName)) + ilFields |> List.map (fun x -> (true, x.IsStatic, x.FieldName, 0, 0), layoutILFieldInfo denv amap m x) |> List.sortBy fst |> List.map snd @@ -1893,7 +1878,7 @@ module private TastDefinitionPrinting = | TILObjectRepr _ when tycon.ILTyconRawMetadata.IsEnum -> infoReader.GetILFieldInfosOfType (None, ad, m, ty) |> List.filter (fun x -> x.FieldName <> "value__") - |> List.map (fun x -> PrintIL.layoutILEnumDefParts x.FieldName x.LiteralValue) + |> List.map (fun x -> PrintIL.layoutILEnumCase x.FieldName x.LiteralValue) |> applyMaxMembers denv.maxMembers |> aboveListL |> addLhs @@ -1926,10 +1911,9 @@ module private TastDefinitionPrinting = // Layout: exception definition let layoutExnDefn denv infoReader (exncref: EntityRef) = let exnc = exncref.Deref - let nm = exnc.LogicalName - let nmL = wordL (tagClass nm) - let nmL = layoutAccessibility denv exnc.TypeReprAccessibility nmL - let exnL = wordL (tagKeyword "exception") ^^ nmL // need to tack on the Exception at the right of the name for goto definition + let nameL = ConvertDisplayNameToDisplayLayout (tagClass >> mkNav exncref.DefinitionRange >> wordL) exnc.DisplayName + let nameL = layoutAccessibility denv exnc.TypeReprAccessibility nameL + let exnL = wordL (tagKeyword "exception") ^^ nameL // need to tack on the Exception at the right of the name for goto definition let reprL = match exnc.ExceptionInfo with | TExnAbbrevRepr ecref -> WordL.equals --- layoutTyconRefImpl denv ecref @@ -1979,14 +1963,17 @@ module private TastDefinitionPrinting = wordL (tagKeyword "namespace") ^^ sepListL SepL.dot (List.map (tagNamespace >> wordL) path) else // This is a module - let nmL = + let name = path |> List.last + let nameL = ConvertDisplayNameToDisplayLayout (tagModule >> mkNav mspec.DefinitionRange >> wordL) name + let nameL = match path with - | [nm] -> wordL (tagModule nm) + | [_] -> + nameL | _ -> - let nm = path |> List.last let innerPath = path.[..path.Length - 2] - sepListL SepL.dot (List.map (tagNamespace >> wordL) innerPath) ^^ SepL.dot ^^ wordL (tagModule nm) - let modNameL = wordL (tagKeyword "module") ^^ nmL + sepListL SepL.dot (List.map (tagNamespace >> wordL) innerPath) ^^ SepL.dot ^^ nameL + + let modNameL = wordL (tagKeyword "module") ^^ nameL let modNameEqualsL = modNameL ^^ WordL.equals let modIsEmpty = mspec.ModuleOrNamespaceType.AllEntities |> Seq.isEmpty && diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index bb15293a337..cb636729b4e 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -119,16 +119,157 @@ let private opCharSet = t.Add(c) |> ignore t -/// Returns `true` if given string is an operator or double backticked name, e.g. ( |>> ) or ( long identifier ). -/// (where ( long identifier ) is the display name for ``long identifier``). -let IsOperatorOrBacktickedName (name: string) = +/// The characters that are allowed to be the first character of an identifier. +let IsIdentifierFirstCharacter c = + if c = '_' then true + else + match Char.GetUnicodeCategory c with + // Letters + | UnicodeCategory.UppercaseLetter + | UnicodeCategory.LowercaseLetter + | UnicodeCategory.TitlecaseLetter + | UnicodeCategory.ModifierLetter + | UnicodeCategory.OtherLetter + | UnicodeCategory.LetterNumber -> true + | _ -> false + +/// The characters that are allowed to be in an identifier. +let IsIdentifierPartCharacter c = + if c = '\'' then true // Tick + else + match Char.GetUnicodeCategory c with + // Letters + | UnicodeCategory.UppercaseLetter + | UnicodeCategory.LowercaseLetter + | UnicodeCategory.TitlecaseLetter + | UnicodeCategory.ModifierLetter + | UnicodeCategory.OtherLetter + | UnicodeCategory.LetterNumber + // Numbers + | UnicodeCategory.DecimalDigitNumber + // Connectors + | UnicodeCategory.ConnectorPunctuation + // Combiners + | UnicodeCategory.NonSpacingMark + | UnicodeCategory.SpacingCombiningMark -> true + | _ -> false + +/// Keywords paired with their descriptions. Used in completion and quick info. +let keywordsWithDescription : (string * string) list = + [ "abstract", FSComp.SR.keywordDescriptionAbstract() + "and", FSComp.SR.keyworkDescriptionAnd() + "as", FSComp.SR.keywordDescriptionAs() + "assert", FSComp.SR.keywordDescriptionAssert() + "base", FSComp.SR.keywordDescriptionBase() + "begin", FSComp.SR.keywordDescriptionBegin() + "class", FSComp.SR.keywordDescriptionClass() + "const", FSComp.SR.keywordDescriptionConst() + "default", FSComp.SR.keywordDescriptionDefault() + "delegate", FSComp.SR.keywordDescriptionDelegate() + "do", FSComp.SR.keywordDescriptionDo() + "done", FSComp.SR.keywordDescriptionDone() + "downcast", FSComp.SR.keywordDescriptionDowncast() + "downto", FSComp.SR.keywordDescriptionDownto() + "elif", FSComp.SR.keywordDescriptionElif() + "else", FSComp.SR.keywordDescriptionElse() + "end", FSComp.SR.keywordDescriptionEnd() + "exception", FSComp.SR.keywordDescriptionException() + "extern", FSComp.SR.keywordDescriptionExtern() + "false", FSComp.SR.keywordDescriptionTrueFalse() + "finally", FSComp.SR.keywordDescriptionFinally() + "for", FSComp.SR.keywordDescriptionFor() + "fun", FSComp.SR.keywordDescriptionFun() + "function", FSComp.SR.keywordDescriptionFunction() + "global", FSComp.SR.keywordDescriptionGlobal() + "if", FSComp.SR.keywordDescriptionIf() + "in", FSComp.SR.keywordDescriptionIn() + "inherit", FSComp.SR.keywordDescriptionInherit() + "inline", FSComp.SR.keywordDescriptionInline() + "interface", FSComp.SR.keywordDescriptionInterface() + "internal", FSComp.SR.keywordDescriptionInternal() + "lazy", FSComp.SR.keywordDescriptionLazy() + "let", FSComp.SR.keywordDescriptionLet() + "let!", FSComp.SR.keywordDescriptionLetBang() + "match", FSComp.SR.keywordDescriptionMatch() + "match!", FSComp.SR.keywordDescriptionMatchBang() + "member", FSComp.SR.keywordDescriptionMember() + "module", FSComp.SR.keywordDescriptionModule() + "mutable", FSComp.SR.keywordDescriptionMutable() + "namespace", FSComp.SR.keywordDescriptionNamespace() + "new", FSComp.SR.keywordDescriptionNew() + "not", FSComp.SR.keywordDescriptionNot() + "null", FSComp.SR.keywordDescriptionNull() + "of", FSComp.SR.keywordDescriptionOf() + "open", FSComp.SR.keywordDescriptionOpen() + "or", FSComp.SR.keywordDescriptionOr() + "override", FSComp.SR.keywordDescriptionOverride() + "private", FSComp.SR.keywordDescriptionPrivate() + "public", FSComp.SR.keywordDescriptionPublic() + "rec", FSComp.SR.keywordDescriptionRec() + "return", FSComp.SR.keywordDescriptionReturn() + "return!", FSComp.SR.keywordDescriptionReturnBang() + "select", FSComp.SR.keywordDescriptionSelect() + "static", FSComp.SR.keywordDescriptionStatic() + "struct", FSComp.SR.keywordDescriptionStruct() + "then", FSComp.SR.keywordDescriptionThen() + "to", FSComp.SR.keywordDescriptionTo() + "true", FSComp.SR.keywordDescriptionTrueFalse() + "try", FSComp.SR.keywordDescriptionTry() + "type", FSComp.SR.keywordDescriptionType() + "upcast", FSComp.SR.keywordDescriptionUpcast() + "use", FSComp.SR.keywordDescriptionUse() + "use!", FSComp.SR.keywordDescriptionUseBang() + "val", FSComp.SR.keywordDescriptionVal() + "void", FSComp.SR.keywordDescriptionVoid() + "when", FSComp.SR.keywordDescriptionWhen() + "while", FSComp.SR.keywordDescriptionWhile() + "with", FSComp.SR.keywordDescriptionWith() + "yield", FSComp.SR.keywordDescriptionYield() + "yield!", FSComp.SR.keywordDescriptionYieldBang() + "->", FSComp.SR.keywordDescriptionRightArrow() + "<-", FSComp.SR.keywordDescriptionLeftArrow() + ":>", FSComp.SR.keywordDescriptionCast() + ":?>", FSComp.SR.keywordDescriptionDynamicCast() + "<@", FSComp.SR.keywordDescriptionTypedQuotation() + "@>", FSComp.SR.keywordDescriptionTypedQuotation() + "<@@", FSComp.SR.keywordDescriptionUntypedQuotation() + "@@>", FSComp.SR.keywordDescriptionUntypedQuotation() ] + +let keywordLookup = set (List.map fst keywordsWithDescription) + +let IsIdentifierName (name: string) = let nameLen = name.Length - let rec loop i = (i < nameLen && (opCharSet.Contains(name.[i]) || loop (i+1))) - loop 0 + nameLen > 0 && + IsIdentifierFirstCharacter name.[0] && + not (keywordLookup.Contains name) && + let rec loop i = (i >= nameLen || (IsIdentifierPartCharacter(name.[i]) && loop (i+1))) + loop 1 -/// Returns `true` if given string is an operator display name, e.g. ( |>> ) -let IsOperatorName (name: string) = - let rec isOperatorName (name: string) idx endIndex = +/// Determines if the specified name is a valid name for an active pattern. +let IsActivePatternName (name: string) = + // The name must contain at least one character between the starting and ending delimiters. + let nameLen = name.Length + if nameLen < 3 || name.[0] <> '|' || name.[nameLen - 1] <> '|' then + false + else + let rec isCoreActivePatternName (name: string) idx seenNonOpChar = + if idx = name.Length - 1 then + seenNonOpChar + else + let c = name.[idx] + if opCharSet.Contains(c) && c <> '|' && c <> ' ' then + false + else + isCoreActivePatternName name (idx + 1) (seenNonOpChar || c <> '|') + + isCoreActivePatternName name 1 false + +/// Returns `true` if given string is an operator display name, e.g. +/// ( |>> ) +/// |>> +/// .. +let IsOperatorDisplayName (name: string) = + let rec loop (name: string) idx endIndex = if idx = endIndex then true else @@ -136,16 +277,32 @@ let IsOperatorName (name: string) = if not (opCharSet.Contains(c)) || c = ' ' then false else - isOperatorName name (idx + 1) endIndex + loop name (idx + 1) endIndex let skipParens = name.StartsWithOrdinal("( ") && name.EndsWithOrdinal(" )") let startIndex = if skipParens then 2 else 0 let endIndex = if skipParens then name.Length - 2 else name.Length - isOperatorName name startIndex endIndex || name = ".. .." + loop name startIndex endIndex || name = ".. .." + +let IsMangledOpName (name: string) = + name.StartsWithOrdinal(opNamePrefix) + +let DoesIdentifierNeedBackticks (name : string) : bool = + not (IsIdentifierName name) && + not (IsActivePatternName name) -let IsMangledOpName (n: string) = - n.StartsWithOrdinal(opNamePrefix) +/// A utility to help determine if an identifier needs to be quoted +let AddBackticksToIdentifierIfNeeded (name : string) : string = + if DoesIdentifierNeedBackticks name then "``" + name + "``" else name + +/// Quote identifier with double backticks if needed, remove unnecessary double backticks quotation. +let NormalizeIdentifierBackticks (name : string) : string = + let s = + if name.StartsWithOrdinal("``") && name.EndsWithOrdinal("``") then + name.[2..name.Length - 3] + else name + AddBackticksToIdentifierIfNeeded s /// Compiles a custom operator into a mangled operator name. /// For example, "!%" becomes "op_DereferencePercent". @@ -196,16 +353,14 @@ let standardOpNames = opNames.Add (x, y) opNames -/// Compiles an operator into a mangled operator name. -/// For example, "!%" becomes "op_DereferencePercent". -/// This function accepts both built-in and custom operators. let CompileOpName op = - match standardOpNames.TryGetValue op with - | true, x -> x - | false, _ -> - if IsOperatorOrBacktickedName op then - compileCustomOpName op - else op + match standardOpNames.TryGetValue op with + | true, x -> x + | false, _ -> + if IsIdentifierName op then + op + else + compileCustomOpName op /// Decompiles the mangled name of a custom operator back into an operator. /// For example, "op_DereferencePercent" becomes "!%". @@ -284,27 +439,44 @@ let standardOpsDecompile = ops.Add(y, x) ops -/// Decompiles a mangled operator name back into an operator. -/// For example, "op_DereferencePercent" becomes "!%". -/// This function accepts mangled names for both built-in and custom operators. let DecompileOpName opName = - match standardOpsDecompile.TryGetValue opName with - | true, res -> res - | false, _ -> - if IsMangledOpName opName then - decompileCustomOpName opName - else - opName + match standardOpsDecompile.TryGetValue opName with + | true, res -> res + | false, _ -> + if IsMangledOpName opName then + decompileCustomOpName opName + else + opName -let DemangleOperatorName nm = - let nm = DecompileOpName nm - if IsOperatorOrBacktickedName nm then "( " + nm + " )" - else nm +let ConvertLogicalNameToDisplayText name = + if IsMangledOpName name || IsActivePatternName name then + let nm = DecompileOpName name + if nm.StartsWith "*" || nm.EndsWith "*" then + "( " + nm + " )" + else + "(" + nm + ")" + elif DoesIdentifierNeedBackticks name then + AddBackticksToIdentifierIfNeeded name + else + name -let DemangleOperatorNameAsLayout nonOpTagged nm = - let nm = DecompileOpName nm - if IsOperatorOrBacktickedName nm then wordL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ wordL (TaggedText.tagPunctuation ")") - else wordL (nonOpTagged nm) +let ConvertValLogicalNameToDisplayLayout nonOpLayout nm = + if (IsMangledOpName nm || IsActivePatternName nm) then + let nm = DecompileOpName nm + if nm.StartsWith "*" || nm.EndsWith "*" then + wordL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ wordL (TaggedText.tagPunctuation ")") + else + leftL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation ")") + elif DoesIdentifierNeedBackticks nm then + leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation "``") + else + nonOpLayout nm + +let ConvertDisplayNameToDisplayLayout nonOpLayout nm = + if DoesIdentifierNeedBackticks nm then + leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation "``") + else + nonOpLayout nm let opNameCons = CompileOpName "::" @@ -318,41 +490,6 @@ let opNameNullableEquals = CompileOpName "?=" let opNameNullableEqualsNullable = CompileOpName "?=?" -/// The characters that are allowed to be the first character of an identifier. -let IsIdentifierFirstCharacter c = - if c = '_' then true - else - match Char.GetUnicodeCategory c with - // Letters - | UnicodeCategory.UppercaseLetter - | UnicodeCategory.LowercaseLetter - | UnicodeCategory.TitlecaseLetter - | UnicodeCategory.ModifierLetter - | UnicodeCategory.OtherLetter - | UnicodeCategory.LetterNumber -> true - | _ -> false - -/// The characters that are allowed to be in an identifier. -let IsIdentifierPartCharacter c = - if c = '\'' then true // Tick - else - match Char.GetUnicodeCategory c with - // Letters - | UnicodeCategory.UppercaseLetter - | UnicodeCategory.LowercaseLetter - | UnicodeCategory.TitlecaseLetter - | UnicodeCategory.ModifierLetter - | UnicodeCategory.OtherLetter - | UnicodeCategory.LetterNumber - // Numbers - | UnicodeCategory.DecimalDigitNumber - // Connectors - | UnicodeCategory.ConnectorPunctuation - // Combiners - | UnicodeCategory.NonSpacingMark - | UnicodeCategory.SpacingCombiningMark -> true - | _ -> false - /// Is this character a part of a long identifier? let IsLongIdentifierPartCharacter c = c = '.' @@ -601,25 +738,6 @@ let [] MangledGlobalName = "`global`" let IllegalCharactersInTypeAndNamespaceNames = [| '.'; '+'; '$'; '&'; '['; ']'; '/'; '\\'; '*'; '\"'; '`' |] -/// Determines if the specified name is a valid name for an active pattern. -let IsActivePatternName (name: string) = - // The name must contain at least one character between the starting and ending delimiters. - let nameLen = name.Length - if nameLen < 3 || name.[0] <> '|' || name.[nameLen - 1] <> '|' then - false - else - let rec isCoreActivePatternName (name: string) idx seenNonOpChar = - if idx = name.Length - 1 then - seenNonOpChar - else - let c = name.[idx] - if opCharSet.Contains(c) && c <> '|' && c <> ' ' then - false - else - isCoreActivePatternName name (idx + 1) (seenNonOpChar || c <> '|') - - isCoreActivePatternName name 1 false - type ActivePatternInfo = | APInfo of bool * (string * range) list * range diff --git a/src/fsharp/PrettyNaming.fsi b/src/fsharp/PrettyNaming.fsi index db94f7610a9..7fb1429f1e0 100644 --- a/src/fsharp/PrettyNaming.fsi +++ b/src/fsharp/PrettyNaming.fsi @@ -22,28 +22,89 @@ val internal qmarkSet: string = "?<-" [] val internal opNamePrefix: string = "op_" -/// Returns `true` if given string is an operator or double backticked name, e.g. ( |>> ) or ( long identifier ). -/// (where ( long identifier ) is the display name for ``long identifier``). -val IsOperatorOrBacktickedName: name:string -> bool +/// Returns `true` if given string is an operator display name, e.g. +/// ( |>> ) +/// |>> +/// .. +val IsOperatorDisplayName: name:string -> bool + +/// Is the name a valid F# identifier +/// A --> true +/// A' --> true +/// _A --> true +/// A0 --> true +/// |A|B| --> false +/// op_Addition --> true +/// + --> false +val IsIdentifierName: name:string -> bool -/// Returns `true` if given string is an operator display name, e.g. ( |>> ) -val IsOperatorName: name:string -> bool - -val IsMangledOpName: n:string -> bool +/// Determines if the specified name is a valid name for an active pattern. +/// |A|_| --> true +/// |A|B| --> true +/// |A| --> true +/// | --> false +/// || --> false +/// op_Addition --> false +val IsActivePatternName: name:string -> bool -/// Compiles an operator into a mangled operator name. -/// For example, "!%" becomes "op_DereferencePercent". -/// This function accepts both built-in and custom operators. +/// Returns `true` if given string requires double backticks to be a valid identifier, e.g. +/// + true, e.g. ``+`` (this is not op_Addition) +/// |>> true, e.g. ``|>>`` (this is not op_Addition) +/// A-B true, e.g. ``A-B`` +/// AB false, e.g. AB +/// |A|_| false // this is an active pattern name, needs parens not backticks +val DoesIdentifierNeedBackticks: name: string -> bool + +/// Adds double backticks if necessary to make a valid identifier, e.g. +/// op_Addition --> op_Addition +/// + --> ``+`` (this is not op_Addition) +/// |>> --> ``|>>`` (this is not an op_) +/// A-B --> ``A-B`` +/// AB --> AB +/// |A|_| --> |A|_| this is an active pattern name, needs parens not backticks +val AddBackticksToIdentifierIfNeeded: name: string -> string + +/// Removes double backticks if not necessary to make a valid identifier, e.g. +/// ``A`` --> A +/// ``A-B`` --> ``A-B`` +val NormalizeIdentifierBackticks: name: string -> string + +/// Is the name a mangled operator name (approximate) +/// op_Addition - yes +/// op_Quack - yes +val IsMangledOpName: name:string -> bool + +/// Compiles an operator into a mangled operator name. For example, +/// + --> op_Addition +/// !% --> op_DereferencePercent +/// Only used on actual operator names val CompileOpName: string -> string -/// Decompiles a mangled operator name back into an operator. -/// For example, "op_DereferencePercent" becomes "!%". -/// This function accepts mangled names for both built-in and custom operators. +/// Decompiles a potentially-mangled operator name back into a display name. For example: +/// Foo --> Foo +/// + --> + +/// op_Addition --> + +/// op_DereferencePercent --> !% +/// A-B --> A-B +/// |A|_| --> |A|_| +/// Used on names of all kinds val DecompileOpName: string -> string -val DemangleOperatorName: nm:string -> string +/// Take a core display name (e.g. op_Addition or PropertyName) and convert it to display text +/// Foo --> Foo +/// + --> ``+`` +/// op_Addition --> (+) +/// op_Multiply --> ( * ) +/// op_DereferencePercent --> (!%) +/// A-B --> ``A-B`` +/// |A|_| --> (|A|_|) +val internal ConvertLogicalNameToDisplayText: name: string -> string + +/// Like ConvertLogicalNameToDisplayText but produces a tagged layout +val internal ConvertValLogicalNameToDisplayLayout: nonOpLayout:(string -> Layout) -> nm:string -> Layout -val internal DemangleOperatorNameAsLayout: nonOpTagged:(string -> #TaggedText) -> nm:string -> Layout +/// Used for type names, module names etc. +val internal ConvertDisplayNameToDisplayLayout: nonOpLayout:(string -> Layout) -> nm:string -> Layout val internal opNameCons: string @@ -120,9 +181,6 @@ val internal MangledGlobalName: string = "`global`" val internal IllegalCharactersInTypeAndNamespaceNames: char [] -/// Determines if the specified name is a valid name for an active pattern. -val IsActivePatternName: name:string -> bool - type internal ActivePatternInfo = | APInfo of bool * (string * range) list * range member ActiveTags: string list @@ -192,3 +250,6 @@ val internal suffixForTupleElementAssignmentTarget : string = "$tupleElem" [] val internal stackVarPrefix : string = "__stack_" +/// Keywords paired with their descriptions. Used in completion and quick info. +val internal keywordsWithDescription: (string * string) list + diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index de6b345d11d..920a2c44e97 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -2881,9 +2881,11 @@ type Val = ChopPropertyName logicalName /// The name of the method. - /// - If this is a property then this is 'Foo' + /// - If this is a property --> Foo /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot - /// - If this is an operator then this is 'op_Addition' + /// - If this is an active pattern --> |A|_| + /// - If this is an operator --> op_Addition + /// - If this is an identifier needing backticks --> A-B member x.CoreDisplayName = match x.MemberInfo with | Some membInfo -> @@ -2896,11 +2898,13 @@ type Val = | SynMemberKind.PropertyGet -> x.PropertyName | None -> x.LogicalName - /// - If this is a property then this is 'Foo' + /// - If this is a property --> Foo /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot - /// - If this is an operator then this is '(+)' + /// - If this is an active pattern --> (|A|_|) + /// - If this is an operator --> (+) + /// - If this is an identifier needing backticks --> ``A-B`` member x.DisplayName = - DemangleOperatorName x.CoreDisplayName + ConvertLogicalNameToDisplayText x.CoreDisplayName member x.SetValRec b = x.val_flags <- x.val_flags.WithRecursiveValInfo b diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index b2e5374fd87..bbe3fc3170c 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -3826,7 +3826,7 @@ module DebugPrint = let layoutUnionCaseArgTypes argtys = sepListL (wordL(tagText "*")) (List.map typeL argtys) let ucaseL prefixL (ucase: UnionCase) = - let nmL = wordL (tagText (DemangleOperatorName ucase.Id.idText)) + let nmL = wordL (tagText (ConvertLogicalNameToDisplayText ucase.Id.idText)) match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL(tagText "of")) --- layoutUnionCaseArgTypes argtys @@ -8646,9 +8646,8 @@ let GetMemberCallInfo g (vref: ValRef, vFlags) = // Active pattern name helpers //--------------------------------------------------------------------------- - let TryGetActivePatternInfo (vref: ValRef) = - // First is an optimization to prevent calls to CoreDisplayName, which calls DemangleOperatorName + // First is an optimization to prevent calls to CoreDisplayName, which calls ConvertLogicalNameToDisplayText let logicalName = vref.LogicalName if logicalName.Length = 0 || logicalName.[0] <> '|' then None diff --git a/src/fsharp/lexhelp.fs b/src/fsharp/lexhelp.fs index 929bd383f47..bfc5d698016 100644 --- a/src/fsharp/lexhelp.fs +++ b/src/fsharp/lexhelp.fs @@ -403,101 +403,3 @@ module Keywords = | _ -> IdentifierToken args lexbuf s - let DoesIdentifierNeedQuotation (s : string) : bool = - not (String.forall IsIdentifierPartCharacter s) // if it has funky chars - || s.Length > 0 && (not(IsIdentifierFirstCharacter s.[0])) // or if it starts with a non-(letter-or-underscore) - || keywordTable.ContainsKey s // or if it's a language keyword like "type" - - /// A utility to help determine if an identifier needs to be quoted - let QuoteIdentifierIfNeeded (s : string) : string = - if DoesIdentifierNeedQuotation s then "``" + s + "``" else s - - /// Quote identifier with double backticks if needed, remove unnecessary double backticks quotation. - let NormalizeIdentifierBackticks (s : string) : string = - let s = - if s.StartsWithOrdinal("``") && s.EndsWithOrdinal("``") then - s.[2..s.Length - 3] - else s - QuoteIdentifierIfNeeded s - - /// Keywords paired with their descriptions. Used in completion and quick info. - let keywordsWithDescription : (string * string) list = - [ "abstract", FSComp.SR.keywordDescriptionAbstract() - "and", FSComp.SR.keyworkDescriptionAnd() - "as", FSComp.SR.keywordDescriptionAs() - "assert", FSComp.SR.keywordDescriptionAssert() - "base", FSComp.SR.keywordDescriptionBase() - "begin", FSComp.SR.keywordDescriptionBegin() - "class", FSComp.SR.keywordDescriptionClass() - "const", FSComp.SR.keywordDescriptionConst() - "default", FSComp.SR.keywordDescriptionDefault() - "delegate", FSComp.SR.keywordDescriptionDelegate() - "do", FSComp.SR.keywordDescriptionDo() - "done", FSComp.SR.keywordDescriptionDone() - "downcast", FSComp.SR.keywordDescriptionDowncast() - "downto", FSComp.SR.keywordDescriptionDownto() - "elif", FSComp.SR.keywordDescriptionElif() - "else", FSComp.SR.keywordDescriptionElse() - "end", FSComp.SR.keywordDescriptionEnd() - "exception", FSComp.SR.keywordDescriptionException() - "extern", FSComp.SR.keywordDescriptionExtern() - "false", FSComp.SR.keywordDescriptionTrueFalse() - "finally", FSComp.SR.keywordDescriptionFinally() - "for", FSComp.SR.keywordDescriptionFor() - "fun", FSComp.SR.keywordDescriptionFun() - "function", FSComp.SR.keywordDescriptionFunction() - "global", FSComp.SR.keywordDescriptionGlobal() - "if", FSComp.SR.keywordDescriptionIf() - "in", FSComp.SR.keywordDescriptionIn() - "inherit", FSComp.SR.keywordDescriptionInherit() - "inline", FSComp.SR.keywordDescriptionInline() - "interface", FSComp.SR.keywordDescriptionInterface() - "internal", FSComp.SR.keywordDescriptionInternal() - "lazy", FSComp.SR.keywordDescriptionLazy() - "let", FSComp.SR.keywordDescriptionLet() - "let!", FSComp.SR.keywordDescriptionLetBang() - "match", FSComp.SR.keywordDescriptionMatch() - "match!", FSComp.SR.keywordDescriptionMatchBang() - "member", FSComp.SR.keywordDescriptionMember() - "module", FSComp.SR.keywordDescriptionModule() - "mutable", FSComp.SR.keywordDescriptionMutable() - "namespace", FSComp.SR.keywordDescriptionNamespace() - "new", FSComp.SR.keywordDescriptionNew() - "not", FSComp.SR.keywordDescriptionNot() - "null", FSComp.SR.keywordDescriptionNull() - "of", FSComp.SR.keywordDescriptionOf() - "open", FSComp.SR.keywordDescriptionOpen() - "or", FSComp.SR.keywordDescriptionOr() - "override", FSComp.SR.keywordDescriptionOverride() - "private", FSComp.SR.keywordDescriptionPrivate() - "public", FSComp.SR.keywordDescriptionPublic() - "rec", FSComp.SR.keywordDescriptionRec() - "return", FSComp.SR.keywordDescriptionReturn() - "return!", FSComp.SR.keywordDescriptionReturnBang() - "select", FSComp.SR.keywordDescriptionSelect() - "static", FSComp.SR.keywordDescriptionStatic() - "struct", FSComp.SR.keywordDescriptionStruct() - "then", FSComp.SR.keywordDescriptionThen() - "to", FSComp.SR.keywordDescriptionTo() - "true", FSComp.SR.keywordDescriptionTrueFalse() - "try", FSComp.SR.keywordDescriptionTry() - "type", FSComp.SR.keywordDescriptionType() - "upcast", FSComp.SR.keywordDescriptionUpcast() - "use", FSComp.SR.keywordDescriptionUse() - "use!", FSComp.SR.keywordDescriptionUseBang() - "val", FSComp.SR.keywordDescriptionVal() - "void", FSComp.SR.keywordDescriptionVoid() - "when", FSComp.SR.keywordDescriptionWhen() - "while", FSComp.SR.keywordDescriptionWhile() - "with", FSComp.SR.keywordDescriptionWith() - "yield", FSComp.SR.keywordDescriptionYield() - "yield!", FSComp.SR.keywordDescriptionYieldBang() - "->", FSComp.SR.keywordDescriptionRightArrow() - "<-", FSComp.SR.keywordDescriptionLeftArrow() - ":>", FSComp.SR.keywordDescriptionCast() - ":?>", FSComp.SR.keywordDescriptionDynamicCast() - "<@", FSComp.SR.keywordDescriptionTypedQuotation() - "@>", FSComp.SR.keywordDescriptionTypedQuotation() - "<@@", FSComp.SR.keywordDescriptionUntypedQuotation() - "@@>", FSComp.SR.keywordDescriptionUntypedQuotation() ] - diff --git a/src/fsharp/lexhelp.fsi b/src/fsharp/lexhelp.fsi index d873735f248..9f6981610b8 100644 --- a/src/fsharp/lexhelp.fsi +++ b/src/fsharp/lexhelp.fsi @@ -104,14 +104,5 @@ module Keywords = val IdentifierToken: LexArgs -> Lexbuf -> string -> token - val DoesIdentifierNeedQuotation: string -> bool - - val QuoteIdentifierIfNeeded: string -> string - - val NormalizeIdentifierBackticks: string -> string - val keywordNames: string list - /// Keywords paired with their descriptions. Used in completion and quick info. - val keywordsWithDescription: (string * string) list - diff --git a/src/fsharp/service/FSharpCheckerResults.fs b/src/fsharp/service/FSharpCheckerResults.fs index 25cd2b33a87..4f64b395220 100644 --- a/src/fsharp/service/FSharpCheckerResults.fs +++ b/src/fsharp/service/FSharpCheckerResults.fs @@ -1167,8 +1167,8 @@ type internal TypeCheckInfo let isOpItem(nm, item: CompletionItem list) = match item |> List.map (fun x -> x.Item) with | [Item.Value _] - | [Item.MethodGroup(_,[_],_)] -> IsOperatorName nm - | [Item.UnionCase _] -> IsOperatorName nm + | [Item.MethodGroup(_,[_],_)] -> IsOperatorDisplayName nm + | [Item.UnionCase _] -> IsOperatorDisplayName nm | _ -> false let isFSharpList nm = (nm = "[]") // list shows up as a Type and a UnionCase, only such entity with a symbolic name, but want to filter out of intellisense diff --git a/src/fsharp/service/SemanticClassification.fs b/src/fsharp/service/SemanticClassification.fs index e6c22215508..917f7eda9bd 100644 --- a/src/fsharp/service/SemanticClassification.fs +++ b/src/fsharp/service/SemanticClassification.fs @@ -180,7 +180,7 @@ module TcResolutionsExtensions = add m SemanticClassificationType.Property elif vref.IsMember then add m SemanticClassificationType.Method - elif IsOperatorName vref.DisplayName then + elif IsOperatorDisplayName vref.DisplayName then add m SemanticClassificationType.Operator else add m SemanticClassificationType.Function diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index b7598b7953f..ecee790d880 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -1021,7 +1021,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i match items with | [item] -> match item.Item with - | Item.Value _ | Item.MethodGroup _ | Item.UnionCase _ -> IsOperatorName name + | Item.Value _ | Item.MethodGroup _ | Item.UnionCase _ -> IsOperatorDisplayName name | _ -> false | _ -> false @@ -1057,12 +1057,12 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i if displayName.StartsWithOrdinal("( ") && displayName.EndsWithOrdinal(" )") then let cleanName = displayName.[2..displayName.Length - 3] cleanName, - if IsOperatorName displayName then cleanName else "``" + cleanName + "``" + if IsOperatorDisplayName displayName then cleanName else "``" + cleanName + "``" else displayName, match item.Unresolved with | Some _ -> displayName - | None -> Lexhelp.Keywords.QuoteIdentifierIfNeeded displayName + | None -> AddBackticksToIdentifierIfNeeded displayName let isAttributeItem = lazy (IsAttribute infoReader item.Item) diff --git a/src/fsharp/service/ServiceLexing.fs b/src/fsharp/service/ServiceLexing.fs index 55dda1c380d..2965ad0f3a1 100644 --- a/src/fsharp/service/ServiceLexing.fs +++ b/src/fsharp/service/ServiceLexing.fs @@ -940,17 +940,16 @@ type FSharpSourceTokenizer(conditionalDefines: string list, filename: string opt FSharpLineTokenizer(lexbuf, None, filename, lexargs) module FSharpKeywords = - open FSharp.Compiler.Lexhelp.Keywords - let DoesIdentifierNeedQuotation s = DoesIdentifierNeedQuotation s + let DoesIdentifierNeedBackticks s = PrettyNaming.DoesIdentifierNeedBackticks s - let QuoteIdentifierIfNeeded s = QuoteIdentifierIfNeeded s + let AddBackticksToIdentifierIfNeeded s = PrettyNaming.AddBackticksToIdentifierIfNeeded s - let NormalizeIdentifierBackticks s = NormalizeIdentifierBackticks s + let NormalizeIdentifierBackticks s = PrettyNaming.NormalizeIdentifierBackticks s - let KeywordsWithDescription = keywordsWithDescription + let KeywordsWithDescription = PrettyNaming.keywordsWithDescription - let KeywordNames = keywordNames + let KeywordNames = Lexhelp.Keywords.keywordNames [] type FSharpLexerFlags = diff --git a/src/fsharp/service/ServiceLexing.fsi b/src/fsharp/service/ServiceLexing.fsi index 1121bac70c3..49f1e6cc177 100755 --- a/src/fsharp/service/ServiceLexing.fsi +++ b/src/fsharp/service/ServiceLexing.fsi @@ -337,11 +337,11 @@ module internal TestExpose = module FSharpKeywords = /// Checks if adding backticks to identifier is needed. - val DoesIdentifierNeedQuotation : string -> bool + val DoesIdentifierNeedBackticks : string -> bool /// Add backticks if the identifier is a keyword. /// A utility to help determine if an identifier needs to be quoted, this doesn't quote F# keywords. - val QuoteIdentifierIfNeeded : string -> string + val AddBackticksToIdentifierIfNeeded : string -> string /// Remove backticks if present. val NormalizeIdentifierBackticks : string -> string diff --git a/src/fsharp/symbols/SymbolPatterns.fs b/src/fsharp/symbols/SymbolPatterns.fs index fe4c8f32c57..bd24f85c4e6 100644 --- a/src/fsharp/symbols/SymbolPatterns.fs +++ b/src/fsharp/symbols/SymbolPatterns.fs @@ -29,12 +29,8 @@ module FSharpSymbolPatterns = res))) |> Option.isSome - let isOperator (name: string) = PrettyNaming.IsOperatorName name - let UnnamedUnionFieldRegex = Regex("^Item(\d+)?$", RegexOptions.Compiled) - let isUnnamedUnionCaseField (field: FSharpField) = UnnamedUnionFieldRegex.IsMatch(field.Name) - let (|AbbreviatedType|_|) (entity: FSharpEntity) = if entity.IsFSharpAbbreviation then Some entity.AbbreviatedType else None @@ -204,7 +200,7 @@ module FSharpSymbolPatterns = && not func.IsPropertyGetterMethod && not func.IsPropertySetterMethod && not excluded - && not (isOperator func.DisplayName) then Some() + && not (PrettyNaming.IsOperatorDisplayName func.DisplayName) then Some() else None with _ -> None diff --git a/src/fsharp/symbols/SymbolPatterns.fsi b/src/fsharp/symbols/SymbolPatterns.fsi index c76537e7fec..2687ff47eef 100644 --- a/src/fsharp/symbols/SymbolPatterns.fsi +++ b/src/fsharp/symbols/SymbolPatterns.fsi @@ -83,9 +83,3 @@ module public FSharpSymbolPatterns = val internal hasModuleSuffixAttribute: FSharpEntity -> bool - val internal isOperator: name: string -> bool - - val internal isUnnamedUnionCaseField: FSharpField -> bool - - val internal getEntityAbbreviatedType: FSharpEntity -> FSharpEntity * FSharpType option - diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs index 48560ecd2b8..3ba63c00dc1 100644 --- a/src/fsharp/symbols/Symbols.fs +++ b/src/fsharp/symbols/Symbols.fs @@ -2274,7 +2274,7 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = member x.TryGetFullCompiledOperatorNameIdents() : string[] option = // For operator ++ displayName is ( ++ ) compiledName is op_PlusPlus - if IsOperatorName x.DisplayName && x.DisplayName <> x.CompiledName then + if IsOperatorDisplayName x.DisplayName && x.DisplayName <> x.CompiledName then x.DeclaringEntity |> Option.bind (fun e -> e.TryGetFullName()) |> Option.map (fun enclosingEntityFullName -> diff --git a/tests/fsharp/core/printing/test.fsx b/tests/fsharp/core/printing/test.fsx index 1f0593050a9..0953c55117c 100644 --- a/tests/fsharp/core/printing/test.fsx +++ b/tests/fsharp/core/printing/test.fsx @@ -1,5 +1,4 @@ // #Regression #Conformance #Printing #FSI #Regression -#light;; let repeatId = "A";; let repeatId = "B";; @@ -965,6 +964,59 @@ type System.Int32 with member a.ExtrinsicExtensionMethod() = 2 ;; +let ``value with spaces in name`` = true;; +;; + + +let f (``parameter with spaces in name``: int) = 1;; +;; + +let functionWhichTakesAParameterPeeciselyPlusButNotOpAddition (``+``: int -> int -> int) = ``+`` 1 2;; +;; + +let functionWhichTakesAParameterOpAddition ((+): int -> int -> int) = 1 + 1;; +;; + +type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition : obj + ``+`` : obj + } +;; + +type UnionWithSpacesInNamesOfCases = + | ``Funky name`` // Check this gets double ticks + | ``Funky name 2`` // Check this gets double ticks + | op_Addition // Check this doesn't go to (+) for types + | ``+`` // Check this gets double ticks +;; + +type ``Type with spaces in name`` = // Check this gets double ticks + | A + | B +;; + +type op_Addition = // Check this doesn't go to (+) for types + | A + | B +;; + +module ``Module with spaces in name`` = // Check this gets double ticks + let x = 1 +;; + +module op_Addition = // Check this doesn't go to (+) for modules + let x = 1 +;; + +let ``+`` x y = 1 // This is not op_Addition but a function called '+' +;; + + +let (+) x y = x + y + 1 // This is op_Addition not a function called '+' +;; + ;; (* ;; needed, to isolate error regressions *) ;;exit 0;; (* piped in to enable error regressions *) \ No newline at end of file diff --git a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl index 6c1b34b3d03..06a37a289aa 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl @@ -2,335 +2,341 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(220,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(571,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(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(572,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(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(573,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(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(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_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -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) = ... +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_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument 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(578,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(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(578,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(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] 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(579,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(581,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_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,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) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(585,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(584,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(585,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(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 static member (&) = "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(588,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(589,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(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. static member (&^) = "AMP_AMP" -------------------^^ -stdin(590,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(589,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(591,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 (=) = "EQUALS" -------------------^ -stdin(591,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(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. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(593,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 (...=) = "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(596,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(597,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(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(600,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 ($) = "DOLLAR" -------------------^ -stdin(602,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 (<) = "LESS" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(602,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(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_LessThan' instead. +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. static member (>) = "GREATER" -------------------^ -stdin(604,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 (>) = "GREATER" -------------------^ -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_GreaterThan' instead. +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. 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(604,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(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 static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(606,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 (^) = "INFIX_AT_HAT_OP" -------------------^ -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 +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 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(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" // with $. prefix -------------------^^^^ -stdin(608,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 (%) = "PERCENT_OP" -------------------^ -stdin(609,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 (-) = "MINUS" -------------------^ -stdin(611,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 ( * ) = "STAR" --------------------^ -stdin(612,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(611,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(614,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,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(616,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,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(616,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(618,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_STAR_OP" --------------------^^ -stdin(619,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) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(623,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(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(764,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(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(771,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(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(778,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(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(783,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(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(792,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(825,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(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' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(833,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(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' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(836,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(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' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(839,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(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' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function + + + | op_Addition // Check this doesn't go to (+) for types + ------^^^^^^^^^^^ + +stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index 392e038edee..652a5e977f4 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -1,7 +1,7 @@ > val it: unit = () -> > val repeatId: string = "A" +> val repeatId: string = "A" > val repeatId: string = "B" @@ -1045,7 +1045,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -1055,20 +1055,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -1076,7 +1076,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] @@ -1170,9 +1170,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -1488,14 +1488,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> 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]) - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -1540,7 +1540,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -1588,82 +1588,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -2494,19 +2494,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -2516,16 +2516,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -2553,7 +2553,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU = Case1 (5, "") val namedFieldVar2: MyDU = Case7 25 @@ -2563,7 +2563,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn = MyNamedException1 (5, "") val namedEx2: exn = MyNamedException7 25 @@ -2611,4 +2611,38 @@ val x: optionRecord = { x = null } type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool = true + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int = 1 + +> module op_Addition = + val x: int = 1 + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index 3d1b7dcfef8..58d3b3cc3e6 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -1,7 +1,7 @@ > val it: unit = () -> > val repeatId: string = "A" +> val repeatId: string = "A" > val repeatId: string = "B" @@ -1045,7 +1045,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -1055,20 +1055,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -1076,7 +1076,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] @@ -1172,9 +1172,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -1490,14 +1490,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> 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]) - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -1542,7 +1542,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -1590,82 +1590,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -2496,19 +2496,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -2518,16 +2518,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -2555,7 +2555,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU = Case1 (5, "") val namedFieldVar2: MyDU = Case7 25 @@ -2565,7 +2565,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn = MyNamedException1 (5, "") val namedEx2: exn = MyNamedException7 25 @@ -2613,4 +2613,38 @@ val x: optionRecord = { x = null } type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool = true + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int = 1 + +> module op_Addition = + val x: int = 1 + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl index 6c1b34b3d03..06a37a289aa 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl @@ -2,335 +2,341 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(220,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(571,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(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(572,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(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(573,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(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(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_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -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) = ... +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_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument 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(578,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(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(578,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(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] 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(579,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(581,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_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,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) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(585,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(584,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(585,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(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 static member (&) = "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(588,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(589,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(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. static member (&^) = "AMP_AMP" -------------------^^ -stdin(590,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(589,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(591,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 (=) = "EQUALS" -------------------^ -stdin(591,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(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. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(593,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 (...=) = "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(596,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(597,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(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(600,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 ($) = "DOLLAR" -------------------^ -stdin(602,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 (<) = "LESS" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(602,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(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_LessThan' instead. +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. static member (>) = "GREATER" -------------------^ -stdin(604,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 (>) = "GREATER" -------------------^ -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_GreaterThan' instead. +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. 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(604,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(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 static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(606,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 (^) = "INFIX_AT_HAT_OP" -------------------^ -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 +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 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(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" // with $. prefix -------------------^^^^ -stdin(608,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 (%) = "PERCENT_OP" -------------------^ -stdin(609,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 (-) = "MINUS" -------------------^ -stdin(611,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 ( * ) = "STAR" --------------------^ -stdin(612,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(611,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(614,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,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(616,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,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(616,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(618,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_STAR_OP" --------------------^^ -stdin(619,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) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(623,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(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(764,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(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(771,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(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(778,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(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(783,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(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(792,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(825,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(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' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(833,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(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' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(836,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(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' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(839,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(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' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function + + + | op_Addition // Check this doesn't go to (+) for types + ------^^^^^^^^^^^ + +stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index 63128735b3f..280014ddc73 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -1,7 +1,7 @@ > val it: unit = () -> > val repeatId: string = "A" +> val repeatId: string = "A" > val repeatId: string = "B" @@ -365,7 +365,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -375,20 +375,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -396,7 +396,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] @@ -490,9 +490,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -733,14 +733,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> 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]) - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -785,7 +785,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -833,82 +833,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -1739,19 +1739,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1761,16 +1761,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1798,7 +1798,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU = Case1 (5, "") val namedFieldVar2: MyDU = Case7 25 @@ -1808,7 +1808,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn = MyNamedException1 (5, "") val namedEx2: exn = MyNamedException7 25 @@ -1856,4 +1856,38 @@ val x: optionRecord = { x = null } type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool = true + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int = 1 + +> module op_Addition = + val x: int = 1 + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index 0a662a939fc..431193468cd 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -1,7 +1,7 @@ > val it: unit = () -> > val repeatId: string = "A" +> val repeatId: string = "A" > val repeatId: string = "B" @@ -365,7 +365,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -375,20 +375,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -396,7 +396,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] @@ -492,9 +492,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -735,14 +735,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> 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]) - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -787,7 +787,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -835,82 +835,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -1741,19 +1741,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1763,16 +1763,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1800,7 +1800,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU = Case1 (5, "") val namedFieldVar2: MyDU = Case7 25 @@ -1810,7 +1810,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn = MyNamedException1 (5, "") val namedEx2: exn = MyNamedException7 25 @@ -1858,4 +1858,38 @@ val x: optionRecord = { x = null } type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool = true + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int = 1 + +> module op_Addition = + val x: int = 1 + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl index 6c1b34b3d03..06a37a289aa 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl @@ -2,335 +2,341 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(220,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(571,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(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(572,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(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(573,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(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(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_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -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) = ... +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_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument 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(578,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(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(578,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(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] 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(579,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(581,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_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,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) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(585,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(584,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(585,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(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 static member (&) = "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(588,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(589,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(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. static member (&^) = "AMP_AMP" -------------------^^ -stdin(590,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(589,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(591,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 (=) = "EQUALS" -------------------^ -stdin(591,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(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. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(593,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 (...=) = "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(596,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(597,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(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(600,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 ($) = "DOLLAR" -------------------^ -stdin(602,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 (<) = "LESS" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(602,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(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_LessThan' instead. +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. static member (>) = "GREATER" -------------------^ -stdin(604,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 (>) = "GREATER" -------------------^ -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_GreaterThan' instead. +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. 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(604,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(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 static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(606,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 (^) = "INFIX_AT_HAT_OP" -------------------^ -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 +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 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(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" // with $. prefix -------------------^^^^ -stdin(608,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 (%) = "PERCENT_OP" -------------------^ -stdin(609,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 (-) = "MINUS" -------------------^ -stdin(611,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 ( * ) = "STAR" --------------------^ -stdin(612,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(611,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(614,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,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(616,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,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(616,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(618,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_STAR_OP" --------------------^^ -stdin(619,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) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(623,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(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(764,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(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(771,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(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(778,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(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(783,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(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(792,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(825,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(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' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(833,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(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' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(836,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(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' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(839,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(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' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function + + + | op_Addition // Check this doesn't go to (+) for types + ------^^^^^^^^^^^ + +stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index 8f4ee5e5a69..0a85fa6e54d 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -1,5 +1,5 @@ -> > val repeatId: string = "A" +> val repeatId: string = "A" > val repeatId: string = "B" @@ -4004,7 +4004,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -4014,20 +4014,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -4035,7 +4035,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] @@ -4129,9 +4129,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -5035,14 +5035,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> 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]) - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -5087,7 +5087,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -5135,82 +5135,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -6041,19 +6041,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -6063,16 +6063,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -6100,7 +6100,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU = Case1 (5, "") val namedFieldVar2: MyDU = Case7 25 @@ -6110,7 +6110,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn = MyNamedException1 (5, "") val namedEx2: exn = MyNamedException7 25 @@ -6158,4 +6158,38 @@ val x: optionRecord = { x = null } type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool = true + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int = 1 + +> module op_Addition = + val x: int = 1 + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index d9a0a92576d..299485ac4a1 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -1,5 +1,5 @@ -> > val repeatId: string = "A" +> val repeatId: string = "A" > val repeatId: string = "B" @@ -4004,7 +4004,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -4014,20 +4014,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -4035,7 +4035,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] = [|12uy; 13uy; 14uy|] @@ -4131,9 +4131,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -5037,14 +5037,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> 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]) - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -5089,7 +5089,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -5137,82 +5137,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -6043,19 +6043,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -6065,16 +6065,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -6102,7 +6102,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU = Case1 (5, "") val namedFieldVar2: MyDU = Case7 25 @@ -6112,7 +6112,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn = MyNamedException1 (5, "") val namedEx2: exn = MyNamedException7 25 @@ -6160,4 +6160,38 @@ val x: optionRecord = { x = null } type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool = true + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int = 1 + +> module op_Addition = + val x: int = 1 + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl index 6c1b34b3d03..06a37a289aa 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl @@ -2,335 +2,341 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(220,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(571,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(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(572,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(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(573,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(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(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_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -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) = ... +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_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument 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(578,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(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(578,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(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] 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(579,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(581,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_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,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) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(585,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(584,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(585,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(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 static member (&) = "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(588,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(589,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(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. static member (&^) = "AMP_AMP" -------------------^^ -stdin(590,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(589,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(591,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 (=) = "EQUALS" -------------------^ -stdin(591,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(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. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(593,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 (...=) = "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(596,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(597,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(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(600,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 ($) = "DOLLAR" -------------------^ -stdin(602,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 (<) = "LESS" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(602,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(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_LessThan' instead. +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. static member (>) = "GREATER" -------------------^ -stdin(604,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 (>) = "GREATER" -------------------^ -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_GreaterThan' instead. +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. 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(604,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(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 static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(606,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 (^) = "INFIX_AT_HAT_OP" -------------------^ -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 +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 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(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" // with $. prefix -------------------^^^^ -stdin(608,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 (%) = "PERCENT_OP" -------------------^ -stdin(609,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 (-) = "MINUS" -------------------^ -stdin(611,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 ( * ) = "STAR" --------------------^ -stdin(612,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(611,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(614,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,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(616,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,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(616,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(618,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_STAR_OP" --------------------^^ -stdin(619,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) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(623,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(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(764,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(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(771,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(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(778,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(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(783,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(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(792,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(825,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(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' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(833,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(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' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(836,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(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' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(839,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(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' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function + + + | op_Addition // Check this doesn't go to (+) for types + ------^^^^^^^^^^^ + +stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index 6cef5ef7618..a4800f8e92a 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -1,7 +1,7 @@ > val it: unit = () -> > val repeatId: string +> val repeatId: string > val repeatId: string @@ -192,7 +192,7 @@ val exU: exn val exUs: exn val exUSome: exn val exUNone: exn -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 @@ -202,20 +202,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -223,7 +223,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] @@ -317,9 +317,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -521,12 +521,12 @@ module Test4343e = val dB: D val dAB: D * D * D list module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> val cA: C val cB: C val cAB: C * C * C list - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D @@ -571,7 +571,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -605,82 +605,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -1509,19 +1509,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1531,16 +1531,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1568,7 +1568,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU val namedFieldVar2: MyDU @@ -1578,7 +1578,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn val namedEx2: exn @@ -1626,4 +1626,38 @@ val x: optionRecord type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int + +> module op_Addition = + val x: int + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index 4ea172ee383..94368dd4aad 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -1,7 +1,7 @@ > val it: unit = () -> > val repeatId: string +> val repeatId: string > val repeatId: string @@ -192,7 +192,7 @@ val exU: exn val exUs: exn val exUSome: exn val exUNone: exn -type 'a T4063 = | AT4063 of 'a +type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_12: int T4063 @@ -202,20 +202,20 @@ type 'a T4063 = | AT4063 of 'a > val valAT3063_null: System.Object T4063 -> type M4063<'a> = +> type ``M4063`1``<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type Taaaaa<'a> = +> type ``Taaaaa`1``<'a> = new: unit -> Taaaaa<'a> -> type Taaaaa2<'a> = +> type ``Taaaaa2`1``<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type Tbbbbb<'a> = +> type ``Tbbbbb`1``<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -223,7 +223,7 @@ type 'a T4063 = | AT4063 of 'a inherit Tbbbbb new: x: string -> Tbbbbb2 -> val it: (unit -> string) = +> val it: (unit -> string) = > module RepeatedModule = val repeatedByteLiteral: byte[] @@ -319,9 +319,9 @@ type 'a T4063 = | AT4063 of 'a > type T0 = new: unit -> T0 -type T1Post<'a> = +type ``T1Post`1``<'a> = new: unit -> T1Post<'a> -type 'a T1Pre = +type 'a ``T1Pre`1`` = new: unit -> 'a T1Pre > type T0 with @@ -523,12 +523,12 @@ module Test4343e = val dB: D val dAB: D * D * D list module Generic = - type CGeneric<'a> = + type ``CGeneric`1``<'a> = new: x: 'a -> CGeneric<'a> val cA: C val cB: C val cAB: C * C * C list - type D<'a> = + type ``D`1``<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D @@ -573,7 +573,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type Either<'a,'b> = +type ``Either`2``<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -607,82 +607,82 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = + type ``C`1``<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type Writer<'a> = + type ``Writer`1``<'a> = abstract get_path: unit -> string type MyClass = interface Writer val path: string > type Regression4319_T2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> string + static member (+-+-+) : x: 'a * y: 'b -> string > type Regression4319_T0 = - static member ( +-+-+ ) : string + static member (+-+-+) : string > type Regression4319_T1 = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1b = - static member ( +-+-+ ) : x: 'a -> string + static member (+-+-+) : x: 'a -> string > type Regression4319_T1c = - static member ( +-+-+ ) : x: ('a * 'b) -> string + static member (+-+-+) : x: ('a * 'b) -> string > type Regression4319_T1d = - static member ( +-+-+ ) : x: (int * int) -> string + static member (+-+-+) : x: (int * int) -> string > type Regression4319_T3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string > type Regression4319_U1 = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U1b = - static member ( +-+-+ ) : x: 'a -> moreArgs: 'b -> string + static member (+-+-+) : x: 'a -> moreArgs: 'b -> string > type Regression4319_U2 = - static member ( +-+-+ ) : x: 'a * y: 'b -> moreArgs: 'c -> string + static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string > type Regression4319_U3 = - static member ( +-+-+ ) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string + static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string > type Regression4319_check = - static member ( & ) : string - static member ( &^ ) : string - static member ( @ ) : string - static member ( != ) : string - static member ( := ) : string - static member ( ^ ) : string - static member ( / ) : string - static member ( $ ) : string - static member ( ...@ ) : string - static member ( ...!= ) : string - static member ( .../ ) : string - static member ( ...= ) : string - static member ( ...> ) : string - static member ( ...^ ) : string - static member ( ...< ) : string + static member (&) : string + static member (&^) : string + static member (@) : string + static member (!=) : string + static member (:=) : string + static member (^) : string + static member (/) : string + static member ($) : string + static member (...@) : string + static member (...!=) : string + static member (.../) : string + static member (...=) : string + static member (...>) : string + static member (...^) : string + static member (...<) : string static member ( ...* ) : string - static member ( ...% ) : string - static member ( = ) : string + static member (...%) : string + static member (=) : string static member ( ** ) : string - static member ( > ) : string - static member ( < ) : string - static member ( % ) : string + static member (>) : string + static member (<) : string + static member (%) : string static member ( * ) : string - static member ( - ) : string + static member (-) : string > Expect ABC = ABC type Regression4469 = @@ -1511,19 +1511,19 @@ val f: (unit -> int) > > val it: string = "** Expect OK, since error message says constraint should work!" -> val ( |A|B| ) : x: int -> Choice +> val (|A|B|) : x: int -> Choice > val it: string = "** Expect error since active pattern is not a function!" > > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on match val" -> val ( |A|B| ) : p: bool -> 'a * 'b -> Choice<'a,'b> +> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is not too generic, typars depend on parameters" -> val ( |A|B| ) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> +> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> > val it: string = "** Expect OK since active pattern result is generic, but it typar from closure, so OK" @@ -1533,16 +1533,16 @@ val f: (unit -> int) > val it: string = "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" -> val ( |Check1| ) : a: int -> int * 'a option +> val (|Check1|) : a: int -> int * 'a option > > module ReflectionEmit = type IA = abstract M: #IB -> int and IB = abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1570,7 +1570,7 @@ type T = | Case4 of Item1: bool | Case5 of bool * string | Case6 of Val1: int * bool * string - | Case7 of Big Name: int + | Case7 of ``Big Name`` : int val namedFieldVar1: MyDU val namedFieldVar2: MyDU @@ -1580,7 +1580,7 @@ exception MyNamedException3 of Data: int exception MyNamedException4 of bool exception MyNamedException5 of int * string exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of Big Named Field: int +exception MyNamedException7 of ``Big Named Field`` : int val namedEx1: exn val namedEx2: exn @@ -1628,4 +1628,38 @@ val x: optionRecord type Int32 with member ExtrinsicExtensionMethod: unit -> int +> val ``value with spaces in name`` : bool + +> > val f: ``parameter with spaces in name`` : int -> int + +> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: + ``+`` : (int -> int -> int) -> int + +> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> > type RecordWithSpacesInNamesOfFields = + { + ``funky name`` : obj + op_Addition: obj + ``+`` : obj + } + +> > type ``Type with spaces in name`` = + | A + | B + +> type op_Addition = + | A + | B + +> module Module with spaces in name = + val x: int + +> module op_Addition = + val x: int + +> val ``+`` : x: 'a -> y: 'b -> int + +> val (+) : x: int -> y: int -> int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl index 6c1b34b3d03..06a37a289aa 100644 --- a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl @@ -2,335 +2,341 @@ #blaaaaaa // blaaaaaa is not a known command;; ^^^^^^^^^ -stdin(220,1): warning FS3353: Invalid directive '#blaaaaaa ' +stdin(219,1): warning FS3353: Invalid directive '#blaaaaaa ' type Regression4319_T0 = static member (+-+-+) = "0 arguments";; -----------------------------------------^^^^^ -stdin(572,42): warning FS1172: Infix operator member '+-+-+' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(571,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(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(572,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(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(573,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(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(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_T1d = static member (+-+-+) (x:int*int) = "1 argument, tuple typed from LHS. Still not OK";; -----------------------------------------^^^^^ -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) = ... +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_T3 = static member (+-+-+) (x,y,z) = "3 arguments";; -----------------------------------------^^^^^ -stdin(578,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1 = static member (+-+-+) x moreArgs = "1 argument 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(578,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(579,42): warning FS1174: Infix operator member '+-+-+' has extra curried arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(578,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(580,42): warning FS1173: Infix operator member '+-+-+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U1b = static member (+-+-+) (x) moreArgs = "1 (argument) [brackets make no diff] 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(579,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(581,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_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,42): warning FS1173: Infix operator member '+-+-+' has 3 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +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) = ... type Regression4319_U3 = static member (+-+-+) (x,y,z) moreArgs = "1 argument and further args";; -----------------------------------------^^^^^ -stdin(582,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) = ... static member (:=) = "COLON_EQUALS" -------------------^^ -stdin(585,20): warning FS1172: Infix operator member ':=' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(584,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(585,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(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 static member (&) = "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(588,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(589,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(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. static member (&^) = "AMP_AMP" -------------------^^ -stdin(590,20): warning FS1172: Infix operator member '&^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(589,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(591,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 (=) = "EQUALS" -------------------^ -stdin(591,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(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. static member (!=) = "INFIX_COMPARE_OP" -------------------^^ -stdin(593,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 (...=) = "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(596,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(597,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(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(600,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 ($) = "DOLLAR" -------------------^ -stdin(602,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 (<) = "LESS" -------------------^ -stdin(603,20): warning FS1172: Infix operator member '<' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(602,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(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_LessThan' instead. +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. static member (>) = "GREATER" -------------------^ -stdin(604,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 (>) = "GREATER" -------------------^ -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_GreaterThan' instead. +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. 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(604,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(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 static member (^) = "INFIX_AT_HAT_OP" -------------------^ -stdin(606,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 (^) = "INFIX_AT_HAT_OP" -------------------^ -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 +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 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(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" // with $. prefix -------------------^^^^ -stdin(608,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 (%) = "PERCENT_OP" -------------------^ -stdin(609,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 (-) = "MINUS" -------------------^ -stdin(611,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 ( * ) = "STAR" --------------------^ -stdin(612,21): warning FS1172: Infix operator member '*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(611,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(614,20): warning FS1172: Infix operator member '/' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(613,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(616,21): warning FS1172: Infix operator member '...*' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... +stdin(615,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(616,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(618,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_STAR_OP" --------------------^^ -stdin(619,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) = ... member this.ToString() = "ABC" ----------------^^^^^^^^ -stdin(624,17): warning FS0864: This new member hides the abstract member 'System.Object.ToString() : string'. Rename the member or use 'override' instead. +stdin(623,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(765,17): error FS0438: Duplicate method. The method 'M' has the same name and signature as another method in type 'ExpectDupMethod'. +stdin(764,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(772,17): error FS0438: Duplicate method. The method 'get_P' has the same name and signature as another method in type 'ExpectDupProperty'. +stdin(771,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(779,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(778,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(784,19): error FS0410: The type 'IAPrivate' is less accessible than the value, member or type 'IBInternal' it is used in. +stdin(783,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(793,19): error FS0410: The type 'IAInternal' is less accessible than the value, member or type 'IBPublic' it is used in. +stdin(792,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(825,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(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' let (|A|B|) (x:int) = A x;; -----^^^^^ -stdin(833,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(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' let (|A|B|) (x:'a) = A x;; -----^^^^^ -stdin(836,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(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' let (|A|B|) (p:'a) (x:int) = A p;; -----^^^^^ -stdin(839,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(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' let (|A|B|) = failwith "" : Choice;; -----^^^^^ -stdin(845,6): error FS1209: Active pattern '|A|B|' is not a function +stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function + + + | op_Addition // Check this doesn't go to (+) for types + ------^^^^^^^^^^^ + +stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers diff --git a/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs b/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs index 64632f5bbf4..1e1d7fd58dc 100644 --- a/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs +++ b/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs @@ -11,6 +11,7 @@ open Microsoft.CodeAnalysis.CodeFixes open Microsoft.VisualStudio.FSharp.Editor.SymbolHelpers open FSharp.Compiler.Diagnostics +open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.Tokenization.FSharpKeywords [] @@ -36,7 +37,7 @@ type internal FSharpRenameParamToMatchSignature let diagnostics = ImmutableArray.Create diagnostic let suggestion = parts.Groups.[1].Value - let replacement = QuoteIdentifierIfNeeded suggestion + let replacement = AddBackticksToIdentifierIfNeeded suggestion let computeChanges() = asyncMaybe { let document = context.Document diff --git a/vsintegration/src/FSharp.Editor/CodeFix/RenameUnusedValue.fs b/vsintegration/src/FSharp.Editor/CodeFix/RenameUnusedValue.fs index 9f44097b25b..4da45f8b9bc 100644 --- a/vsintegration/src/FSharp.Editor/CodeFix/RenameUnusedValue.fs +++ b/vsintegration/src/FSharp.Editor/CodeFix/RenameUnusedValue.fs @@ -34,10 +34,10 @@ type internal FSharpRenameUnusedValueCodeFixProvider let document = context.Document let! sourceText = document.GetTextAsync(context.CancellationToken) let ident = sourceText.ToString(context.Span) + // Prefixing operators and backticked identifiers does not make sense. - // We have to use the additional check for backtickes because `IsOperatorOrBacktickedName` operates on display names - // where backtickes are replaced with parens. - if not (PrettyNaming.IsOperatorOrBacktickedName ident) && not (ident.StartsWith "``") then + // We have to use the additional check for backtickes + if PrettyNaming.IsIdentifierName ident then let! lexerSymbol = document.TryFindFSharpLexerSymbolAsync(context.Span.Start, SymbolLookupKind.Greedy, false, false, nameof(FSharpRenameUnusedValueCodeFixProvider)) let m = RoslynHelpers.TextSpanToFSharpRange(document.FilePath, context.Span, sourceText) let lineText = (sourceText.Lines.GetLineFromPosition context.Span.Start).ToString() diff --git a/vsintegration/src/FSharp.Editor/CodeFix/ReplaceWithSuggestion.fs b/vsintegration/src/FSharp.Editor/CodeFix/ReplaceWithSuggestion.fs index 8fb23402339..3e4a6e1c57a 100644 --- a/vsintegration/src/FSharp.Editor/CodeFix/ReplaceWithSuggestion.fs +++ b/vsintegration/src/FSharp.Editor/CodeFix/ReplaceWithSuggestion.fs @@ -10,6 +10,7 @@ open Microsoft.CodeAnalysis.CodeFixes open FSharp.Compiler.Diagnostics open FSharp.Compiler.EditorServices +open FSharp.Compiler.Syntax open FSharp.Compiler.Text open FSharp.Compiler.Tokenization @@ -53,7 +54,7 @@ type internal FSharpReplaceWithSuggestionCodeFixProvider |> Seq.toImmutableArray for suggestion in CompilerDiagnostics.GetSuggestedNames addNames unresolvedIdentifierText do - let replacement = FSharpKeywords.QuoteIdentifierIfNeeded suggestion + let replacement = PrettyNaming.AddBackticksToIdentifierIfNeeded suggestion let codeFix = CodeFixHelpers.createTextChangeCodeFix( CompilerDiagnostics.GetErrorMessage (FSharpDiagnosticKind.ReplaceWithSuggestion suggestion), diff --git a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs index 8cf74d0d665..353f9e4f39d 100644 --- a/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs +++ b/vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs @@ -45,7 +45,7 @@ type internal FSharpCompletionProvider static let keywordCompletionItems = FSharpKeywords.KeywordsWithDescription - |> List.filter (fun (keyword, _) -> not (PrettyNaming.IsOperatorName keyword)) + |> List.filter (fun (keyword, _) -> not (PrettyNaming.IsOperatorDisplayName keyword)) |> List.sortBy (fun (keyword, _) -> keyword) |> List.mapi (fun n (keyword, description) -> FSharpCommonCompletionItem.Create( @@ -117,7 +117,7 @@ type internal FSharpCompletionProvider let getAllSymbols() = getAllSymbols checkFileResults |> List.filter (fun assemblySymbol -> - assemblySymbol.FullName.Contains "." && not (PrettyNaming.IsOperatorName assemblySymbol.Symbol.DisplayName)) + assemblySymbol.FullName.Contains "." && not (PrettyNaming.IsOperatorDisplayName assemblySymbol.Symbol.DisplayName)) let declarations = checkFileResults.GetDeclarationListInfo(Some(parseResults), fcsCaretLineNumber, line, partialName, getAllSymbols) let results = List() diff --git a/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs b/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs index 8bc06631418..c7c521400eb 100644 --- a/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs +++ b/vsintegration/src/FSharp.Editor/Completion/SignatureHelp.fs @@ -259,7 +259,7 @@ type internal FSharpSignatureHelpProvider let! symbolUse = checkFileResults.GetSymbolUseAtLocation(fcsTextLineNumber, lexerSymbol.Ident.idRange.EndColumn, textLineText, lexerSymbol.FullIsland) let isValid (mfv: FSharpMemberOrFunctionOrValue) = - not (PrettyNaming.IsOperatorName mfv.DisplayName) && + not (PrettyNaming.IsOperatorDisplayName mfv.DisplayName) && not mfv.IsProperty && mfv.CurriedParameterGroups.Count > 0 diff --git a/vsintegration/src/FSharp.Editor/LanguageService/Tokenizer.fs b/vsintegration/src/FSharp.Editor/LanguageService/Tokenizer.fs index 722360d76f2..35bde0fd334 100644 --- a/vsintegration/src/FSharp.Editor/LanguageService/Tokenizer.fs +++ b/vsintegration/src/FSharp.Editor/LanguageService/Tokenizer.fs @@ -848,7 +848,7 @@ module internal Tokenizer = | _, :? FSharpActivePatternCase -> // Different from union cases, active patterns don't accept double-backtick identifiers isFixableIdentifier name && not (String.IsNullOrEmpty name) && Char.IsUpper(name.[0]) - | LexerSymbolKind.Operator, _ -> PrettyNaming.IsOperatorName name + | LexerSymbolKind.Operator, _ -> PrettyNaming.IsOperatorDisplayName name | LexerSymbolKind.Punctuation, _ -> PrettyNaming.IsPunctuation name | LexerSymbolKind.GenericTypeParameter, _ -> isGenericTypeParameter name | LexerSymbolKind.StaticallyResolvedTypeParameter, _ -> isStaticallyResolvedTypeParameter name diff --git a/vsintegration/src/FSharp.Editor/Refactor/AddExplicitTypeToParameter.fs b/vsintegration/src/FSharp.Editor/Refactor/AddExplicitTypeToParameter.fs index 6eea90f188d..44d738616ed 100644 --- a/vsintegration/src/FSharp.Editor/Refactor/AddExplicitTypeToParameter.fs +++ b/vsintegration/src/FSharp.Editor/Refactor/AddExplicitTypeToParameter.fs @@ -47,7 +47,7 @@ type internal FSharpAddExplicitTypeToParameterRefactoring not funcOrValue.IsMember && not funcOrValue.IsMemberThisValue && not funcOrValue.IsConstructorThisValue && - not (PrettyNaming.IsOperatorName funcOrValue.DisplayName) + not (PrettyNaming.IsOperatorDisplayName funcOrValue.DisplayName) match symbolUse.Symbol with | :? FSharpMemberOrFunctionOrValue as v when isValidParameterWithoutTypeAnnotation v symbolUse -> diff --git a/vsintegration/src/FSharp.LanguageService/Intellisense.fs b/vsintegration/src/FSharp.LanguageService/Intellisense.fs index 6eeffd1695d..82e48f7a9db 100644 --- a/vsintegration/src/FSharp.LanguageService/Intellisense.fs +++ b/vsintegration/src/FSharp.LanguageService/Intellisense.fs @@ -230,7 +230,7 @@ type internal FSharpDeclarations_DEPRECATED(documentationBuilder, declarations: // We intercept this call only to get the initial extent // of what was committed to the source buffer. let result = decl.GetName(filterText, index) - FSharpKeywords.QuoteIdentifierIfNeeded result + PrettyNaming.AddBackticksToIdentifierIfNeeded result override decl.IsCommitChar(commitCharacter) = // Usual language identifier rules... diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs index efefaaab1c1..9404ca301e4 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.ParameterInfo.fs @@ -302,7 +302,7 @@ type UsingMSBuild() = this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark1*)",[["int"; "string"]]) this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark2*)",[["V1: int"; "string"; "V3: bool"]]) - this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark3*)",[["Long Name: int"; "string"]]) + this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark3*)",[["``Long Name`` : int"; "string"]]) this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark4*)",[["int"]]) [] @@ -319,7 +319,7 @@ type UsingMSBuild() = this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark1*)",[["int"; "string"]]) this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark2*)",[["V1: int"; "string"; "V3: bool" ]]) - this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark3*)",[["Long Name: int"; "string" ]]) + this.VerifyParameterInfoAtStartOfMarker(fileContent,"(*Mark3*)",[["``Long Name`` : int"; "string" ]]) [] [] diff --git a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs index f315c4acbc7..c146c311c05 100644 --- a/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs +++ b/vsintegration/tests/UnitTests/LegacyLanguageService/Tests.LanguageService.QuickInfo.fs @@ -813,9 +813,9 @@ Full name: Microsoft.FSharp.Control.Async""".TrimStart().Replace("\r\n", "\n") exception NamedExn(*MarkerException*) of int * V2 : string * bool * Data9 : float """ //Verify the quick info as expected - let expectedquickinfoType = "type NamedFieldDU = | Case1 of V1: int * bool * V3: float | Case2 of Big Name: int * bool | Case3 of int" + let expectedquickinfoType = "type NamedFieldDU = | Case1 of V1: int * bool * V3: float | Case2 of ``Big Name`` : int * bool | Case3 of int" let expectedquickinfoCase1 = "union case NamedFieldDU.Case1: V1: int * bool * V3: float -> NamedFieldDU" - let expectedquickinfoCase2 = "union case NamedFieldDU.Case2: Big Name: int * bool -> NamedFieldDU" + let expectedquickinfoCase2 = "union case NamedFieldDU.Case2: ``Big Name`` : int * bool -> NamedFieldDU" let expectedquickinfoCase3 = "union case NamedFieldDU.Case3: int -> NamedFieldDU" let expectedquickinfoException = "exception NamedExn of int * V2: string * bool * Data9: float" @@ -1793,7 +1793,8 @@ let f (tp:ITypeProvider(*$$$*)) = tp.Invalidate "Union", (* expect to see in order... *) [ - "type Union = | Case of int"; + "type Union ="; + " | Case of int"; //"Full name:"; "Module.Union"; "Union comment"; ] diff --git a/vsintegration/tests/UnitTests/QuickInfoTests.fs b/vsintegration/tests/UnitTests/QuickInfoTests.fs index 6abbd809aa3..be0e18f0412 100644 --- a/vsintegration/tests/UnitTests/QuickInfoTests.fs +++ b/vsintegration/tests/UnitTests/QuickInfoTests.fs @@ -153,9 +153,11 @@ module Test = let quickInfo = GetQuickInfoTextFromCode code let expected = expectedLines [ "type MyEmployee =" - " { mutable Name: string" + " {" + " mutable Name: string" " mutable Age: int" - " mutable IsFTE: bool }" + " mutable IsFTE: bool" + " }" "Full name: FsTest.MyEmployee" ] Assert.AreEqual(expected, quickInfo) () From ef96a981d85547ff852a5a64ec08deb04076ab01 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 02:42:20 +0100 Subject: [PATCH 11/25] update tests --- src/fsharp/PrettyNaming.fs | 45 ++- src/fsharp/PrettyNaming.fsi | 4 +- tests/fsharp/core/auto-widen/5.0/test.bsl | 46 +-- .../auto-widen/preview-default-warns/test.bsl | 12 +- tests/fsharp/core/auto-widen/preview/test.bsl | 66 ++-- .../compilation.errors.output.bsl | 146 ++++---- .../core/members/set-only-property/calls.bsl | 4 +- .../tools/fsharp41/net45/providerDesigner.dll | Bin 75264 -> 70144 bytes .../fsharp41/net461/providerDesigner.dll | Bin 75264 -> 70144 bytes .../netstandard2.0/providerDesigner.dll | Bin 75264 -> 70144 bytes .../fsharp41/net45/providerDesigner.dll | Bin 75264 -> 70144 bytes .../fsharp41/net461/providerDesigner.dll | Bin 75264 -> 70144 bytes .../netstandard2.0/providerDesigner.dll | Bin 75264 -> 70144 bytes tests/fsharp/typeProviders/negTests/neg2c.bsl | 2 +- tests/fsharp/typecheck/sigs/neg03.bsl | 4 +- tests/fsharp/typecheck/sigs/neg04.bsl | 2 +- tests/fsharp/typecheck/sigs/neg06.bsl | 6 +- tests/fsharp/typecheck/sigs/neg08.bsl | 2 +- tests/fsharp/typecheck/sigs/neg09.bsl | 2 +- tests/fsharp/typecheck/sigs/neg10.bsl | 6 +- tests/fsharp/typecheck/sigs/neg106.bsl | 12 +- tests/fsharp/typecheck/sigs/neg106.vsbsl | 12 +- tests/fsharp/typecheck/sigs/neg116.bsl | 4 +- tests/fsharp/typecheck/sigs/neg117.bsl | 4 +- tests/fsharp/typecheck/sigs/neg119.bsl | 8 +- tests/fsharp/typecheck/sigs/neg120.bsl | 10 +- tests/fsharp/typecheck/sigs/neg124.bsl | 16 +- tests/fsharp/typecheck/sigs/neg125.bsl | 338 +++++++++--------- tests/fsharp/typecheck/sigs/neg127.bsl | 338 +++++++++--------- tests/fsharp/typecheck/sigs/neg128.bsl | 26 +- tests/fsharp/typecheck/sigs/neg129.bsl | 26 +- tests/fsharp/typecheck/sigs/neg24.bsl | 2 +- tests/fsharp/typecheck/sigs/neg25.bsl | 22 +- tests/fsharp/typecheck/sigs/neg26.bsl | 10 +- tests/fsharp/typecheck/sigs/neg33.bsl | 2 +- tests/fsharp/typecheck/sigs/neg34.bsl | 2 +- tests/fsharp/typecheck/sigs/neg36.bsl | 4 +- tests/fsharp/typecheck/sigs/neg37_a.bsl | 2 +- tests/fsharp/typecheck/sigs/neg45.bsl | 12 +- tests/fsharp/typecheck/sigs/neg56.bsl | 10 +- tests/fsharp/typecheck/sigs/neg56_b.bsl | 8 +- tests/fsharp/typecheck/sigs/neg58.bsl | 4 +- tests/fsharp/typecheck/sigs/neg61.bsl | 6 +- tests/fsharp/typecheck/sigs/neg98.bsl | 2 +- .../fsharp/typecheck/sigs/version46/neg24.bsl | 2 +- .../fsharp/typecheck/sigs/version47/neg24.bsl | 2 +- .../fsharp/typecheck/sigs/version50/neg20.bsl | 40 +-- 47 files changed, 639 insertions(+), 632 deletions(-) diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index cb636729b4e..661bc6ba744 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -288,7 +288,14 @@ let IsOperatorDisplayName (name: string) = let IsMangledOpName (name: string) = name.StartsWithOrdinal(opNamePrefix) +let IsSpecialOpName (name: string) = + match name with + | "or" | "land" | "lor" | "lsl" + | "lsr" | "asr" | "lxor" -> true + | _ -> false + let DoesIdentifierNeedBackticks (name : string) : bool = + not (IsSpecialOpName name) && not (IsIdentifierName name) && not (IsActivePatternName name) @@ -357,7 +364,7 @@ let CompileOpName op = match standardOpNames.TryGetValue op with | true, x -> x | false, _ -> - if IsIdentifierName op then + if IsSpecialOpName op || IsIdentifierName op then op else compileCustomOpName op @@ -449,34 +456,34 @@ let DecompileOpName opName = opName let ConvertLogicalNameToDisplayText name = - if IsMangledOpName name || IsActivePatternName name then + if IsSpecialOpName name || IsMangledOpName name || IsActivePatternName name then let nm = DecompileOpName name - if nm.StartsWith "*" || nm.EndsWith "*" then + if IsMangledOpName name && (nm = name) then + AddBackticksToIdentifierIfNeeded nm // no decompilation, e.g. op_Implicit, op_NotAMangledOpName + elif nm.StartsWith "*" || nm.EndsWith "*" then "( " + nm + " )" else "(" + nm + ")" - elif DoesIdentifierNeedBackticks name then - AddBackticksToIdentifierIfNeeded name else - name + AddBackticksToIdentifierIfNeeded name -let ConvertValLogicalNameToDisplayLayout nonOpLayout nm = - if (IsMangledOpName nm || IsActivePatternName nm) then - let nm = DecompileOpName nm - if nm.StartsWith "*" || nm.EndsWith "*" then +let ConvertDisplayNameToDisplayLayout nonOpLayout name = + if DoesIdentifierNeedBackticks name then + leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator name) ^^ rightL (TaggedText.tagPunctuation "``") + else + nonOpLayout name + +let ConvertValLogicalNameToDisplayLayout nonOpLayout name = + if IsSpecialOpName name || IsMangledOpName name || IsActivePatternName name then + let nm = DecompileOpName name + if IsMangledOpName name && (nm = name) then + ConvertDisplayNameToDisplayLayout nonOpLayout name // no decompilation, e.g. op_Implicit, op_NotAMangledOpName + elif nm.StartsWith "*" || nm.EndsWith "*" then wordL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ wordL (TaggedText.tagPunctuation ")") else leftL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation ")") - elif DoesIdentifierNeedBackticks nm then - leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation "``") - else - nonOpLayout nm - -let ConvertDisplayNameToDisplayLayout nonOpLayout nm = - if DoesIdentifierNeedBackticks nm then - leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation "``") else - nonOpLayout nm + ConvertDisplayNameToDisplayLayout nonOpLayout name let opNameCons = CompileOpName "::" diff --git a/src/fsharp/PrettyNaming.fsi b/src/fsharp/PrettyNaming.fsi index 7fb1429f1e0..15b2721d92f 100644 --- a/src/fsharp/PrettyNaming.fsi +++ b/src/fsharp/PrettyNaming.fsi @@ -101,10 +101,10 @@ val DecompileOpName: string -> string val internal ConvertLogicalNameToDisplayText: name: string -> string /// Like ConvertLogicalNameToDisplayText but produces a tagged layout -val internal ConvertValLogicalNameToDisplayLayout: nonOpLayout:(string -> Layout) -> nm:string -> Layout +val internal ConvertValLogicalNameToDisplayLayout: nonOpLayout: (string -> Layout) -> name: string -> Layout /// Used for type names, module names etc. -val internal ConvertDisplayNameToDisplayLayout: nonOpLayout:(string -> Layout) -> nm:string -> Layout +val internal ConvertDisplayNameToDisplayLayout: nonOpLayout: (string -> Layout) -> name: string -> Layout val internal opNameCons: string diff --git a/tests/fsharp/core/auto-widen/5.0/test.bsl b/tests/fsharp/core/auto-widen/5.0/test.bsl index d7d611dd20d..9aac4fe55fb 100644 --- a/tests/fsharp/core/auto-widen/5.0/test.bsl +++ b/tests/fsharp/core/auto-widen/5.0/test.bsl @@ -169,16 +169,16 @@ test.fsx(93,13,93,20): typecheck error FS0041: No overloads match for method 'M1 Known type of argument: int Available overloads: - - static member C.M1 : x:int64 -> unit // Argument 'x' doesn't match - - static member C.M1 : x:string -> 'a0 // Argument 'x' doesn't match + - static member C.M1: x: int64 -> unit // Argument 'x' doesn't match + - static member C.M1: x: string -> 'a0 // Argument 'x' doesn't match test.fsx(99,13,99,22): typecheck error FS0041: No overloads match for method 'M1'. -Known type of argument: x:int +Known type of argument: x: int Available overloads: - - static member C.M1 : ?x:int64 -> unit // Argument 'x' doesn't match - - static member C.M1 : x:string -> 'a0 // Argument 'x' doesn't match + - static member C.M1: ?x: int64 -> unit // Argument 'x' doesn't match + - static member C.M1: x: string -> 'a0 // Argument 'x' doesn't match test.fsx(116,20,116,21): typecheck error FS0001: This expression was expected to have type 'int64' @@ -190,8 +190,8 @@ test.fsx(121,14,121,21): typecheck error FS0041: No overloads match for method ' Known type of argument: int Available overloads: - - static member C.M1 : [] x:int64 [] -> int64 // Argument 'x' doesn't match - - static member C.M1 : [] x:int64 [] -> int64 // Argument at index 1 doesn't match + - static member C.M1: [] x: int64[] -> int64 // Argument 'x' doesn't match + - static member C.M1: [] x: int64[] -> int64 // Argument at index 1 doesn't match test.fsx(122,19,122,20): typecheck error FS0001: This expression was expected to have type 'int64' @@ -208,8 +208,8 @@ test.fsx(127,14,127,21): typecheck error FS0041: No overloads match for method ' Known type of argument: int Available overloads: - - static member C.M1 : [] x:double [] -> double // Argument 'x' doesn't match - - static member C.M1 : [] x:double [] -> double // Argument at index 1 doesn't match + - static member C.M1: [] x: double[] -> double // Argument 'x' doesn't match + - static member C.M1: [] x: double[] -> double // Argument at index 1 doesn't match test.fsx(128,19,128,20): typecheck error FS0001: This expression was expected to have type 'double' @@ -446,12 +446,12 @@ but here has type test.fsx(256,30,256,39): typecheck error FS0001: This expression was expected to have type 'Array' but here has type - 'uint16 []' + 'uint16[]' test.fsx(258,30,258,38): typecheck error FS0001: This expression was expected to have type 'Array' but here has type - ''a []' + ''a[]' test.fsx(260,36,260,38): typecheck error FS0001: This expression was expected to have type 'IComparable' @@ -801,62 +801,62 @@ but here has type test.fsx(390,28,390,41): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(391,30,392,57): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(393,30,394,56): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(395,30,396,58): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(397,30,398,59): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(399,30,399,59): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(400,30,400,63): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(401,30,402,63): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(403,30,404,64): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(405,31,405,59): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(406,31,407,60): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(408,31,409,61): typecheck error FS0001: This expression was expected to have type 'seq' but here has type - ''a []' + ''a[]' test.fsx(429,10,437,16): typecheck error FS0001: This expression was expected to have type 'seq' diff --git a/tests/fsharp/core/auto-widen/preview-default-warns/test.bsl b/tests/fsharp/core/auto-widen/preview-default-warns/test.bsl index 350f2ca8aa0..fc365207280 100644 --- a/tests/fsharp/core/auto-widen/preview-default-warns/test.bsl +++ b/tests/fsharp/core/auto-widen/preview-default-warns/test.bsl @@ -3,9 +3,9 @@ test.fsx(147,18,147,19): typecheck error FS3391: This expression uses the implic test.fsx(149,39,149,41): typecheck error FS3391: This expression uses the implicit conversion 'Xml.Linq.XNamespace.op_Implicit(namespaceName: string) : Xml.Linq.XNamespace' to convert type 'string' to type 'Xml.Linq.XNamespace'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". -test.fsx(178,20,178,21): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit : x:'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". +test.fsx(178,20,178,21): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit: x: 'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". -test.fsx(180,15,180,16): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit : x:'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". +test.fsx(180,15,180,16): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit: x: 'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". test.fsx(186,27,186,28): typecheck error FS3391: This expression uses the implicit conversion 'Nullable.op_Implicit(value: int) : Nullable' to convert type 'int' to type 'Nullable'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". @@ -19,12 +19,12 @@ but here has type test.fsx(471,18,471,19): typecheck error FS0044: This construct is deprecated. nope test.fsx(482,18,482,21): typecheck error FS3387: This expression has type 'B' and is only made compatible with type 'C' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are: - static member B.op_Implicit : x:B -> C - static member C.op_Implicit : x:B -> C + static member B.op_Implicit: x: B -> C + static member C.op_Implicit: x: B -> C test.fsx(482,18,482,21): typecheck error FS3387: This expression has type 'B' and is only made compatible with type 'C' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are: - static member B.op_Implicit : x:B -> C - static member C.op_Implicit : x:B -> C + static member B.op_Implicit: x: B -> C + static member C.op_Implicit: x: B -> C test.fsx(546,30,546,31): typecheck error FS0001: This expression was expected to have type 'float32' diff --git a/tests/fsharp/core/auto-widen/preview/test.bsl b/tests/fsharp/core/auto-widen/preview/test.bsl index 47bd050732b..1e8383541d0 100644 --- a/tests/fsharp/core/auto-widen/preview/test.bsl +++ b/tests/fsharp/core/auto-widen/preview/test.bsl @@ -133,7 +133,7 @@ test.fsx(128,22,128,23): typecheck error FS3389: This expression uses a built-in test.fsx(128,22,128,23): typecheck error FS3388: This expression implicitly converts type 'int' to type 'double'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(135,18,135,19): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:int -> C' to convert type 'int' to type 'C'. +test.fsx(135,18,135,19): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: int -> C' to convert type 'int' to type 'C'. test.fsx(135,18,135,19): typecheck error FS3388: This expression implicitly converts type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. @@ -161,19 +161,19 @@ test.fsx(159,18,159,21): typecheck error FS3390: This expression uses the implic test.fsx(159,18,159,21): typecheck error FS3388: This expression implicitly converts type 'string' to type 'Xml.Linq.XName'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(165,18,165,19): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:int -> C' to convert type 'int' to type 'C'. +test.fsx(165,18,165,19): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: int -> C' to convert type 'int' to type 'C'. test.fsx(165,18,165,19): typecheck error FS3388: This expression implicitly converts type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(172,18,172,21): typecheck error FS3390: This expression uses the implicit conversion 'static member Y.op_Implicit : y:Y -> X' to convert type 'Y' to type 'X'. +test.fsx(172,18,172,21): typecheck error FS3390: This expression uses the implicit conversion 'static member Y.op_Implicit: y: Y -> X' to convert type 'Y' to type 'X'. -test.fsx(172,18,172,21): typecheck error FS3390: This expression uses the implicit conversion 'static member Y.op_Implicit : y:Y -> X' to convert type 'Y' to type 'X'. +test.fsx(172,18,172,21): typecheck error FS3390: This expression uses the implicit conversion 'static member Y.op_Implicit: y: Y -> X' to convert type 'Y' to type 'X'. -test.fsx(178,20,178,21): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit : x:'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". +test.fsx(178,20,178,21): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit: x: 'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". test.fsx(178,20,178,21): typecheck error FS3388: This expression implicitly converts type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(180,15,180,16): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit : x:'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". +test.fsx(180,15,180,16): typecheck error FS3391: This expression uses the implicit conversion 'static member C.op_Implicit: x: 'T -> C<'T>' to convert type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn "3391". test.fsx(180,15,180,16): typecheck error FS3388: This expression implicitly converts type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. @@ -269,9 +269,9 @@ test.fsx(248,51,248,52): typecheck error FS3388: This expression implicitly conv test.fsx(253,36,253,37): typecheck error FS3388: This expression implicitly converts type 'int' to type 'IComparable'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(256,30,256,39): typecheck error FS3388: This expression implicitly converts type 'uint16 []' to type 'Array'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(256,30,256,39): typecheck error FS3388: This expression implicitly converts type 'uint16[]' to type 'Array'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(258,30,258,38): typecheck error FS3388: This expression implicitly converts type ''a []' to type 'Array'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(258,30,258,38): typecheck error FS3388: This expression implicitly converts type ''a[]' to type 'Array'. See https://aka.ms/fsharp-implicit-convs. test.fsx(260,36,260,38): typecheck error FS3388: This expression implicitly converts type 'Numerics.BigInteger' to type 'IComparable'. See https://aka.ms/fsharp-implicit-convs. @@ -507,69 +507,69 @@ test.fsx(386,40,386,41): typecheck error FS3389: This expression uses a built-in test.fsx(386,40,386,41): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(390,28,390,41): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(390,28,390,41): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(390,37,390,38): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(390,37,390,38): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(391,30,392,57): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(391,30,392,57): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(391,39,391,40): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(391,39,391,40): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(393,30,394,56): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(393,30,394,56): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(394,52,394,53): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(394,52,394,53): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(395,30,396,58): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(395,30,396,58): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(396,54,396,55): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(396,54,396,55): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(397,30,398,59): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(397,30,398,59): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(397,39,397,40): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(397,39,397,40): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(399,30,399,59): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(399,30,399,59): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(400,30,400,63): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(400,30,400,63): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(400,59,400,60): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(400,59,400,60): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(401,30,402,63): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(401,30,402,63): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(402,59,402,60): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(402,59,402,60): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(403,30,404,64): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(403,30,404,64): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(403,39,403,40): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(403,39,403,40): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(405,31,405,59): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(405,31,405,59): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(405,44,405,45): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(405,44,405,45): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(406,31,407,60): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(406,31,407,60): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(407,44,407,45): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. test.fsx(407,44,407,45): typecheck error FS3388: This expression implicitly converts type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. -test.fsx(408,31,409,61): typecheck error FS3388: This expression implicitly converts type 'int64 []' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. +test.fsx(408,31,409,61): typecheck error FS3388: This expression implicitly converts type 'int64[]' to type 'seq'. See https://aka.ms/fsharp-implicit-convs. test.fsx(408,40,408,41): typecheck error FS3389: This expression uses a built-in implicit conversion to convert type 'int' to type 'int64'. See https://aka.ms/fsharp-implicit-convs. @@ -592,35 +592,35 @@ test.fsx(463,18,463,19): typecheck error FS0001: This expression was expected to but here has type 'int' -test.fsx(471,18,471,19): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:int -> C' to convert type 'int' to type 'C'. +test.fsx(471,18,471,19): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: int -> C' to convert type 'int' to type 'C'. test.fsx(471,18,471,19): typecheck error FS3388: This expression implicitly converts type 'int' to type 'C'. See https://aka.ms/fsharp-implicit-convs. test.fsx(471,18,471,19): typecheck error FS0044: This construct is deprecated. nope test.fsx(482,18,482,21): typecheck error FS3387: This expression has type 'B' and is only made compatible with type 'C' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are: - static member B.op_Implicit : x:B -> C - static member C.op_Implicit : x:B -> C + static member B.op_Implicit: x: B -> C + static member C.op_Implicit: x: B -> C -test.fsx(482,18,482,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(482,18,482,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. test.fsx(482,18,482,21): typecheck error FS3387: This expression has type 'B' and is only made compatible with type 'C' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are: - static member B.op_Implicit : x:B -> C - static member C.op_Implicit : x:B -> C + static member B.op_Implicit: x: B -> C + static member C.op_Implicit: x: B -> C -test.fsx(482,18,482,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(482,18,482,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. -test.fsx(507,18,507,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(507,18,507,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. -test.fsx(507,18,507,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(507,18,507,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. -test.fsx(519,18,519,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(519,18,519,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. -test.fsx(519,18,519,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(519,18,519,21): typecheck error FS3390: This expression uses the implicit conversion 'static member B.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. -test.fsx(538,18,538,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(538,18,538,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. -test.fsx(538,18,538,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit : x:B -> C' to convert type 'B' to type 'C'. +test.fsx(538,18,538,21): typecheck error FS3390: This expression uses the implicit conversion 'static member C.op_Implicit: x: B -> C' to convert type 'B' to type 'C'. test.fsx(543,30,543,31): typecheck error FS0001: This expression was expected to have type 'float32' diff --git a/tests/fsharp/core/fsfromfsviacs/compilation.errors.output.bsl b/tests/fsharp/core/fsfromfsviacs/compilation.errors.output.bsl index ace6e9a0de0..8e846a78b70 100644 --- a/tests/fsharp/core/fsfromfsviacs/compilation.errors.output.bsl +++ b/tests/fsharp/core/fsfromfsviacs/compilation.errors.output.bsl @@ -1,208 +1,208 @@ test.fsx(217,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(218,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: x:int +Known type of argument: x: int Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(219,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: y:string +Known type of argument: y: string Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(220,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: x:int option +Known type of argument: x: int option Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(221,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: y:string option +Known type of argument: y: string option Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(222,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: x:'a option +Known type of argument: x: 'a option Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(223,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: y:'a option +Known type of argument: y: 'a option Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(224,34): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:'a option +Known type of argument: d: 'a option Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(227,42): error FS0041: A unique overload for method 'OverloadedMethodTakingOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: 'a0 Candidates: - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float) : int - - SomeClass.OverloadedMethodTakingOptionals(?x: int,?y: string,?d: float32) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float) : int + - SomeClass.OverloadedMethodTakingOptionals(?x: int, ?y: string, ?d: float32) : int test.fsx(229,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(230,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: y:string +Known type of argument: y: string Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(231,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:Nullable +Known type of argument: d: Nullable Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(232,36): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:float +Known type of argument: d: float Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(233,36): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:float option +Known type of argument: d: float option Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(234,36): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: x:'a option +Known type of argument: x: 'a option Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(235,36): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:'a option +Known type of argument: d: 'a option Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(237,43): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionalsWithDefaults' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: 'a0 Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionalsWithDefaults(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(239,34): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(240,34): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: y:string +Known type of argument: y: string Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(241,33): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:float +Known type of argument: d: float Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(242,34): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:Nullable +Known type of argument: d: Nullable Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(243,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:float +Known type of argument: d: float Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(244,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:float option +Known type of argument: d: float option Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(245,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: x:'a option +Known type of argument: x: 'a option Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(246,35): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: d:'a option +Known type of argument: d: 'a option Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(247,42): error FS0041: A unique overload for method 'OverloadedMethodTakingNullableOptionals' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: 'a0 Candidates: - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int - - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable,?y: string,?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int + - SomeClass.OverloadedMethodTakingNullableOptionals(?x: Nullable, ?y: string, ?d: Nullable) : int test.fsx(249,93): error FS0691: Named arguments must appear after all other arguments test.fsx(250,88): error FS0041: A unique overload for method 'OverloadedMethodTakingNullables' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known types of arguments: Nullable<'a> * string * Nullable<'b> when 'a : (new : unit -> 'a) and 'a : struct and 'a :> ValueType and 'b : (new : unit -> 'b) and 'b : struct and 'b :> ValueType +Known types of arguments: Nullable<'a> * string * Nullable<'b> when 'a: (new: unit -> 'a) and 'a: struct and 'a :> ValueType and 'b: (new: unit -> 'b) and 'b: struct and 'b :> ValueType Candidates: - SomeClass.OverloadedMethodTakingNullables(x: Nullable, y: string, d: Nullable) : int diff --git a/tests/fsharp/core/members/set-only-property/calls.bsl b/tests/fsharp/core/members/set-only-property/calls.bsl index 52a50afe857..d4fa4927d1a 100644 --- a/tests/fsharp/core/members/set-only-property/calls.bsl +++ b/tests/fsharp/core/members/set-only-property/calls.bsl @@ -3,10 +3,10 @@ calls.fsx(18,30,18,31): typecheck error FS0629: Method 'set_Prop2' is not access calls.fsx(19,34,19,35): typecheck error FS0629: Method 'set_Prop2' is not accessible from this code location -calls.fsx(20,24,20,29): typecheck error FS0495: The object constructor 'Class' has no argument or settable return property 'Prop2'. The required signature is new : unit -> fsharp.Class. +calls.fsx(20,24,20,29): typecheck error FS0495: The object constructor 'Class' has no argument or settable return property 'Prop2'. The required signature is new: unit -> fsharp.Class. calls.fsx(22,29,22,30): typecheck error FS0629: Method 'set_Prop2' is not accessible from this code location calls.fsx(23,29,23,30): typecheck error FS0629: Method 'set_Prop2' is not accessible from this code location -calls.fsx(24,23,24,28): typecheck error FS0495: The member or object constructor 'mkFs' has no argument or settable return property 'Prop2'. The required signature is static member Maker.mkFs : unit -> fsharp.Class. +calls.fsx(24,23,24,28): typecheck error FS0495: The member or object constructor 'mkFs' has no argument or settable return property 'Prop2'. The required signature is static member Maker.mkFs: unit -> fsharp.Class. diff --git a/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll b/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll index cb79536e157facb1e7eb4a0b37657130a7e2937e..780564082ac45fcd38db423ed85acfe90bfa2df8 100644 GIT binary patch delta 22996 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 AzW@LL delta 28217 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 AssI20 delta 28217 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 diff --git a/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll b/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll index 1b6a4ded584d05b043fcc4b3892ec7b76d92b6a6..e0e5b42c555de631ad56a3ec360ca8bf131e7b60 100644 GIT binary patch delta 22996 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 delta 28217 zcmbV#3t&{$(f^#gyZ7$(eHXz6wK@wgHf})^;q9#hvXdsY)RYSN*p(=_f zELN;miDIi(tre<$&^D>~YN@5xSL>rtsV!=&eD!O!f3^SL%)PtWK;-N9rQNybH#28u z&N*`)_uggg*yZfl@4W5CL7#s^t0VjGAO$OY%1xA1M4H9CXWG_>&vQ+mrf5lKv?|S1 zs7t)N211^MJej#krPZL!lWLf%%)G4z4P6gK{yQBXja>A|LZZXh5m{WK+g>DkV$~f- z1F9;sK&w`N&a`Va=4!)zzYe8*;{r66u9{O9H^t?1V7lYK9`~kUO#1?>4qHPP_i!|Nb}IDTGTH z8rEAgO?q=MbG9Sy4WUvMJ*hQEGOHYgrm_AMgp<~tsVD^PE`Tbc*eExRk`_}$Yjc3< z)kpYRPJ+SKIP|X5eMYJPg}B4%3OZX0QT!s_jOe^oTzB+;QkSbva|T^~YNO)FmaB4p z$_sBn2db)(Ezjh5B}qL@R7K}#%|)5hor8x-L?c^@RW`c(@_4O{8x?OZ&TMm@TUm|} zQ%Hrh)|}*M>4KKaxL!pbKjU*v_Eo#x&4a*9tHR6zS3)^5SGa~G(DP}%^isX(vc-!R zd-bZqDmqz9Rc3a%t}BF_bag!9YQs=FBf4BtLo;Lbl+rU7>DLt+mV(n#u=JqtSAAG! zsa}++HufauAT6L4(c-PuaNdqSc52NdGXFH@nj^u`+K>(yjJ4<$ty)XZ($_#;^BHYm zIQ@p04!Gkf#E`D`wOp0!6Hh!f6b44bJk1zJFGlm5IhoeiY@xn}&2zT4Aw!+bNCj`& z@3VY~r_2HOfK!gs!?1hPSvBs3_9751sE=@Ktv^DVr;VVVIvHA-D$hVQCNtMFplA$N zqL#OE(Qx|tXhNnd5`)TCPq8@`Dy`!{kYnRk+LjkZOB3=G$x1! zTX9hf@(FE;^rvq3B==u+Rjwa7Y`?oY>TWSKTBWsNTA0q1%o+hssB-TFJkmGZNzD`C zvBj5Fx3!6u_ve*+1T*aF<7F)&Sg@v7-@00AOy)7~0Ml+~Jl=}6MX%a+ya~+_FO0YD zgY=7d3PYEMCz;HPaYf7e>j#IE>%4?IDXc(gub#q+;H^&c6z7tV5kVuhcnXl;{Qx>l zRp|jw3Tsr_LUGJ`o$BBOPWy4PegRsoIhs#pdsw#M1<8vAgNQj{y z1DX}(8ysa&>ThW*939XL?}s(@05U;U#lO5q4p}{dQIsCJ>G+;AwdPs`=imgIjza$_ zCOXiVAsSYSP5#oL9j$+cU(K1{>^@-+u)-$VrkTg*vy9~tD{?G&_E@^;+Ann&bjDN2 z>NF&N=|^b&l2#^8?Q843#eX(kwe_MTW)Kj?78` zBt<{txBiL~CcyRKQ7+D)rJ1dPST@fc$(?Aavw0>$^Xgj~XYmeRhR;BJT5jdAXF)0*u0$OqPCub(ZAc*}s$x&qwNxS1!d&ua(2u9Ep{2c! zfi;&5tQj*>U%!GIVdY8hn5O1(5NBiwCSFlydn9>Ic2z!~5gARGypFIz z<|kDKT6WhS;BHA_P9n|wU!{;RU$#p1ZnOQbV)^p*eIme0ij`h#!!+dmnBDic3=VVl zzYO+S=Mi{pl#@zuQYATF_Cd#)*$K04j8Q(n5=rZADuQ{ zznjlS?AC4|#ri4tv9b-*u<#{xpC(&|AvARkj1_*NaF)PnLRRaJ zOizgSzSZ$^)5TdSDe8B(1{k<>M`|JJNOsC<>T_8sI@GYUQ+LU%=_fTgtBk6CcBaBx zWUdgc?9=K}I6~K8&BNmCJ*Hx&svx&3wPCJUM@JWJMn|CcBaYUPM9-&~)FKWUD_+{! zd>$8JIi13E<{byylXpZ}%Y{7hUoxk4zgyHS-MBlo1a$(Q-~^l?5gkU=Th)>|fdNjJ z*$9mPwB`#k|1KDb)9+e@hEs`s{7qVIDA(E$s1v8oqq$rh*)rIb&CA#*2Vub^%n}@r zairwqF{fDSLJk9Cm@h{|kCA6jwV6GIgD=AR;JpqW(G|`rT(P>b=Ua2$@=vq*Wt?m| zUVA3-xw&`d1P6wz{-rf9&5TXV7$F`;wp8fZ_~8XdTlUhBJWtG&Lb@i!*RN}-i!Rf`zysm1uD^-V5+O_^GsOk&4Mi}d_K?(WblG~xo z)Zzgqk~iX7k4@K^s(|GbdM@q7c|=bQW_T$q#Ifx@U7smoCCq?YkakGoP^ zU?kOma(Z&mh`AzGfHA#KwTPZt4wc@@$JFH}I^yX|Gb2ipaV$GlkK{Sa)Rzo2FGsCB zhcUw#k&YNRK1@J>)&?6fB-3MV^g~dON8A!x>rw<+WyCxYqxz(X5%Wg8wpzqv6?~!} z@rin$T3HRZX0l0J7Pn0Ds^}%mEy5xb2|5!g&LD5lRVW1?A0`V8tfAGPv}{0-Er&Q# z967w#!J$j9_NS1s>C`fC(kgBogM&Iww>NX_xS4a9az{H13m4J~jy+V5E0P(GM>tAl zv1o)LZ_pSR)@5{koH<|R%+alJ@k=gk$mSAK$Q$6hAnR^c?t-oaFNQO*(`|Sn&empe z&;Al#DuF}(B&3tK zCBlXqiML+Gp=)|;6Ry^rJzj=$j>rr;jCzPBqOH}CF5Xl1>Im)&9I0Wj47Z5dTcxcv zAoIH?ZG*BKk33}Jhdep0RjlPGynj(1$iN!I0#2@h`7LWNu z#2fKo>}~U_xnj$Q7)(u`d9=Li=3)!j*4EjIQY;V&SXs#@$gPM0Yj;FzM!;TesG}Jx zyf=kK24~1-%yVzy{iAUZQ9ey?`3KB3W5#>iM_{P57Qcs9wU6XtE9Sem{Uk0%T&<5_ za4>1H{GADLmglcYw z%&QNqO2KYAWdfx-Krkk&GM5Z2Sdrag&e7Vq70sOxIvTjs&F z)t@bzqaA(a)ST@n^TpLZhA%1fvFOG|`DqPom1PbM95R(#+wyBv?hQ2|hub**Qk&6b zUM(Sp9C`|=;!S02qIXWr%t+P^-wq6yW8tKV&ePhsfMni9N^)_ zxT-}wj$=o+7QvIgE(rXc4X=*ig?oSJp&%9q_8fhtM!)G5N4H? zNXUwBpl;iYpE_)z@SAqEqJvGkTi!e`@KQ{2-Jo)byz^SSm2j(Y)KL(9IQ|fMzYYNY3ee zakbCjOVHUqQ?9P|S$s|HK^;zb?$e*+S}FEeC$VIf0}KrxEMR1MK+^t+nE8}$ornx2 zJQrgZa{5M~sE(t!IBjE}3F`*2`TKBTc~4l*+c=cwC&8{BsaXJ{h}+ZVAK;Q0lhBGR zMdJZ@R}yK$tV%zZenuSPt&$dnUmc(j#?c*-)d)vR}QiSSvdr>B1=)_z2 zS#$ggN42J3hhS6~HnBaQaVhx`fqLx3uD#;gnW#$OrU%O+#>#Xe?>&UQQvUKgI{Q$I z#}SETC+cjpw~7ybT<9lJPZK$B3cZQSyj-IG!b&_lQO)+#`&1YtiNd^GrtY^Z*oiu) zkG_?t%*!R}i>&_=5_K-PNYpd<;%cAA7bNO@xw_iVl&h(?pT&i|<<(1Xp~aOF2rC_v zv3>~Cp^4jZnRqjkhe43D>@AzK2M~hA(c0KA`kJHYy@9l{7onI=EYA{38wX~k?-b1f zdFfj|W{4rXv2AH6r+E|^Ep-iPM4~GF!}L=~t6qEAT$V=Lg19JiE+d)EzS+z*kIQCe z{wLXdtlK{Rz9gB=6KC^@TpydwJdU!64?xTKFFOK~05T5QXRcM)EmA*17gm{74p|<` z@hCu6E1y-DT3^Q)b}V3<#L09vN=T-2_~L3`$QLBjBDuQS&y}m*ejZ=*a>*d10%5SQ zT(iz`xnxQ*-2kPDysAvZ7RJdW-rCrUJo2*AMVuupUu_JmY?-fFfU^brDlc{=V{kvm zp<1sWsvU`RM7Pt2+453C(#Mp@t-z5#52n9`{1KiQ&E}7|wgqu%WntB^DsW5<~59XH0z zJkc0uhdAfd_Q}q8|FgXPpT_t^u5)8-4>6C)F`M1_bT0f$FZ1XglF^mj?nf9pjPg>h zLr+?3MA4W*S{rlhS*0bgcwqE!3Sh2GDtVgtM5aD9)J)+>*3a}u>5e_?Mk)^3WFn~`x_0Z1^f3Jz`=!@-Qt43Uu z`x$+%cHHPQv%k?dk3H-h>$H!z|I_GynQQj!HIF&$a0eVS{Jp)*qkrVM(Z|^fqyHmo z^aqA{_?dP5@H00z{Jc6`COf;ceHjE;9vb+9@#G^le{8JJW66D$RKI{M@ zkXqRU5#zQXF3QL609-4VAMkG-hMC)6f*hM4$NKE!?0=shCJw_Va((Rbz+-Yue)RS- z=f_byKe9)ME3Ldpc3?=x$XdW#@4%#elE}PY={5g}IvrQA<-8+wqhK7NxzNuM`bv@a zJwh`tcZB{IN78$*cU2#K>jcd_NAv05LqxcT`pmBI1R%1rsZRy#2+h3Q5&8?(&$jbq zv@^4JNU^Em`BujYse7Jve1ff&z}N?yg-zQEtxnO}m~qL-Xm){QwcHHJzn@qo710@7 z=%+JQi<~>djH9C~UUF6i|CL?Obxw^r(&P%qAUcyfl6f!@z-djTvcN)9MKw2J>) z6Rh}^tm2nDE@8cEvU=Nl4IX2!jP0z5V<>)j9 zfephD1)bG{gLwav`Z+{+%bSF4t&R1Xp9aB$B{V2qmB*6S?qfqETmG7R7?%G`#%z5C z;*Muohkk_AYey_dz4d%?wexz%Yix&HUG1HGZN?Ih=aF*5%8cBb3Y?D_kI)LM@X|)! zWN^it9CvJNknfV&K3`4t$Frh~Bk1?3(MayXud*7C-E*urvc>1kKHAG~P3vgZ-H_Ei zVar>ehouhl1-3^mX!+Mr4K2T(FRu0*_>yDW2L999SOvR@lL0<_)$wuTgH3Wo zdQrMDy;5sqgVvYkN^!yvyEfAUr{aMhmB65A{sPSEQfwgkn!n6xvSM+*%ra1=l~~NU zV7>z#WV2ADSFLDgxllefRxfyF+M5oi{j#mQ`L%5tgU3cNHrxeR10*^u)%<+kI;P(U z0eWf^UtH}s@dY_@vs_*6oB7(O=iY~-l&mqVlh<A_+GLgG@VjGvgG7&2Y zZ_4bec|Z4pxJy`W+89_TwH2BLegz%84dCaox^-(Offd;m7+4k1G6B4E`%Lty1a3&& z*sEW`SP4h8vO6``n8;sBMBiFcjv!TyP;u0j&}>0m4A}?0JJ5(BXgNRB;%X&%54Btq zvC8pld=`A^0AYNp(?w|~w*AU}B0D~sK4J8;!>{S{w9B-fc9l?loAtEo#s4{;AY$Uj zZ8|^mvhM?U&}E|!qs9DZja=>(P8Bw{7t!IEXTRo)vmN*Fn0PZ~g&U6w!zDqOoB9n1 zUPC9fHr91CzXa;j+E`|!ehZp(IXcS&GdqI?n3%#84g! zx*rde+MWAgXD6tae(HKmYo+gDPU|#IZvy9Y{V@%%6^+NV4Rn^l{M(Es(1(qC44wX9 zaIIoD>x=`%w(n-?J#OZgcplS&G}gnM%^vo0k$1XRr;N81w8#6HS2yWxzR;&aNBOu~ ztB=inRp_IjL24y7@rh5Vpt$!^i=Uls^K;!_f;#D4+CU!?Uh09KCtdS}pKCb+?D#HF zFMT(_%@~a}K_@-L9P|9pPZ9&;fdxic9G)SL>xDW0Ob3m>LhcZz$VNH2B z!lt)H+4T09v@Fi%$_ktXI?XI#om)Y@bhPl5LNCoqu!R)~mbN9h?v0>c`o^ThLA2?R z#;hI1%=%`Dv%pK=5_)UtL8a4Yr5xNDW!&QD$`v@=rMu4@@qjXiL`lOgaWcM;wU1mC zVJZX~M6>A^f(8Q(Mb_*WgfDksz1>J}#!47``bOGH$GX%W> zbTQpZvy_8|8CQa)jTN8=-1xQvz2@ffpWI39ypECTV&{1s6F~>l1m7K?Q+;=XUg%>T z^JD)cmxDg`&j7tJupIQV!1bWICkaDMfm={+4QvN(58Ul^&(K7lXbgI)4g04E{fa^JJ9upN{^}qK_GsNql-^W<# zfV&E1D+o*Vw!o?2bjDfp);NcCLy$GU8Q%i_x8rQ*+yqOlAnFo74mxNXIGE>&?_!O3 zp!8y=P7jtog|fxjmM~fHZ~)(NplI105MLM=93Dfjm#t7SdcW*q=NNqJ=Yk09EC;=@ zyc;xAegyQM@-b1J9x7k%%1Vnv!I(~a%A=rJX9G|^K`j%8xE(t6SNW+ByMG)eEcYkU z%QBw+PMT3|$!5Asioi>#YLrEzSd--Y?)0{k-573_%Rv?PK@O0;V3JGoasII0$yK zjpVW4RX7o=_@44wP;<$^{Ly0Z-ohIoxMbi~(BATbBz9cVizwxNP^fy6GK=A)8 z)|@yhUSkP?N*rO@Xrn6cAV-w8+o%Cw?~T$9K@PNHwTjbDL4`EfcbX$kj|jS+X87(? zh4cekw$Rt$D5P#%RtH&v_A@f+db-N@1mK$@+~D5p>je5(&}@x6F+u*p+!ycCFMWS- zBs0{kapNIwvwa=ZNyfR^n;w{X|5zaZ_C(9 z1-)*`Oqg-%6*OuXN4kOL2ODuGHBZp9?$yCf_?J&j7NYBdKL>i;mOT-CMIS>i+vsP( zZE6fH!mShr)LkfOm5ufby3I!K2G>FJ5et#|_u!vl=6M@_CFD0I(nmJhA6jNiqD6cr zMV17^-!P_8w~dO!4;nRm<1Mm5;qM#MsoF->;hz{YXn~DphW8n>XpN1|3I76UuZ=D= z!><{q(P0}lgx@z#r>3-J^aqCKK9jcFs3RPApM^uOCHrakEcXJs!bZOjeZ@G34%(no(S)@(Q-k1Y;<*G9W-CI(bq)wfrZ?A zMdlwV4&6NQ7E;PWGPf4e={Z#5SVULY2y@GHoJTj>kSEu9^q_^@zTmf=i)o*Yc>XRX z`6f8V_m#+a&tj@P$!g&*F@F}*0vj#xk3+p3Ho7%j>Rv*Xqb$w;7ujblr5YRY+%lKa zQh^)Xq39aVQo2S^kEbO1gj!15Eg7wf{#;*5)uY)AXMT@o8FdJH)~(0ZsVnJ53sEBW zj^|3+ZlmhhQO_#cX``16w|6yl+h|72?QJpXpbZzqG)F7_#X@eZW!_f$z(&s+_o-I; z#739J7&-a&2x+-0_95Wq*pT@NT5X?Rw7mx70@3Ya?E|H_|>E@v^>= z4w!aDUdcDon>ON=d?OvURe3+yh-co?UTNVba@&YoxQTFL;l6Nl3pY`zg(USh5&we% z?k8T>Z=$g_;s$P}nb?0t$SvGVr`u*Yy|&Oi8x_W{^=_di8&${GsV%g|MyJG0$gZ)F z?08#fvmox7F39%VGIp4uH|=^nM>2GHjJ5x{pMlW~eP9c_JwNkiC_Yv~bH5hvgsf5! zj%4uxz6`Ci(U^jJe0R|v8_g-0;_spqv2Yy8zHoCsBC-5R|x6yYC zL&0Cu<2HJ>a9Z#H?YB`Z@!jBWXfNNn%lsJ^`YkP;1YlB+=e@)>^)fAENIhzN(Uj23 z)MTTLMXv^5rj0gwt!SU|3f*m^lH%3s720W|amCX^uh1?VJz0Ep=ym$UMy`@6q2H4m zPcYcS=_MP0!h*~m&(BMChTfo*CG?aI*cp10YHZcZ27Ej87R?jHBl_de+tegzw)S}G zTcJbrfsKA%x?25_KC#jBrS}1q;!z21#I)B+kA(h6l{Pw3`Zu7lf*id6sqi0ZrY(HW z@P*%@rIt`+hp8zii-rG0{4GH|3xRA@_+8qWlPw4zp@V{AR8)3J_&uU2tQm8!FS{@N zS8`j3UMPDKXq}DBqh&9J|3({aSWsRX`H(i-s9Ml=L6M><vFO| z(f_8qbF%r-f6ya2+4|@|X@5?3d-M}}GbcM5{ggfv#6vhR_AjbFmEH3YnqP_in?AE4 zk0GfY(<~v6A*p>fdaZOzjMRP`9VyKKeI$tc;>8G_P}NxVxDiT)1+nb&h^CS`*`TOH z)#POJ&8Sl?$O+d+U20WMczaY=9XZ+2sG)WW;#Pb!=2oxUGET&x+E+{Xo2_vpLaJ`M zg}4zRwb@3Th#|GzMx2OdNbMD9jc7>ivxV;&-;agV0YTQ-ht*#MS?$!V}TzMSm#=veh~PIfdp zPJNt{tybgJXF1vTW8;;79{aOGo1iM^$^OT!sEn^s(m@x`sg%uI48S3TBAM&Li^d_(P*uT&(HS7T5Y4K~_%~ExFnzPgud787-syxlv>PAMUJ%+Q@Z8_EU z_-wT!Pj#+(T#z-|bJY)Wniogrs_s0^Gt}#OnrEnkIZa>q4E2{h&3Ot>@7O;ZU8~Jg zVS!fX&sUX#SoU1_Of@zq`&s-fwI(N9trn_vIoW~uLUp4ct1lL*oq~9({a1XEIw0s- z;sebRbzydqwrmM!40tp&MGt+EkM?K<_Kjb1acB-W|NZOBVvo$40EM&}mPsgGq2TzxEv`{}*Fa^+uW)qBq{_ZM8D76`P2 zP3nrA@KKFl(I`A%+isn_3Yw6|=zQFyX@tUd>wm9_?0+78MOa5=;aL0xDD z=D$vrLH@@9w}Iux(_j7#g(gr%_24T!%j3%V?br;Ci!z{i=K*R+o7{9C$_fuMS>Ni9 zAt*a(ET~H~Eos&!G%^3}&S6!Ts9HvkQ?*TJD^Cjd2FEUs*UwsB3(fv4b1gG#F5krQ z!%>Fsb=b61ddo#a z!O`thnuM~Vd}<|ZekiPeOzKIK%;Vc?W%%#KC3jsmEY1&Ia^AqB`rhF3-Sm^;c|Dik zi&j>3@|TPp^fOQ=p6YXqJhc>FIrN{g|9}o&{Xxf&B()Ou%k^1Pm!!^4-TeMuT!8#{ zQGEd`T?J~0X*aD!x&I2R|3lI5K2HBFa5Oxc<|e(5vJ;P{SwB|TYwehRH6cE>W8JhE z)w1r7sc-^)yGzCW@jcqRa49?!XZyQAk^g%ISafoNTVRduJ18r9v52Wz%>1u{I_O4F zEQ=+~ae!JN50rAP2SFA6L@4vIpp}7|coUNYc+0^?qY&`Rs9yd^ za5Oqa_|v%>y(-kw;jom{RkXgG%Qp(WMQBFo4x#r5yvQ`_c%jrr~3rK(fXR?){Im86p`&FUNEzm-J) zl4_oTTrC0Wq)O0iLY;VK&lk;wdHOuTG#Tl>na@*BlRR+H682*DlW05@HN1dg_tr=^ zpzNR)u0YoaKVQehD|8*n8o@uO^y9lHL+}}n&j|XIDvWcK2XwXasFlXoR3q`ZF{17; zzOIT@g<-B%!|4ac-D))PL)OvslJPB7q24pT1MyMg3DD1sCqW(VpTH15GUm$9s^O^o z2Ne<1`{*rt&j{n~S%8Y|^S(Ok{cRM+A%#=+(m zINn5swc4HPPT$Rr!=n0ua2`_pjN7AL^Yu8C3i;o4cvRZ|f#Zj2f&UYf&-Z^#^@!0I zK-X$)t;zWt&_|sg!@>dAaM0E2WBMX+z!i~(4JUrWZVo4YS@N008_{M48+0eC9dP+U zAJeBu5StXgY#C1clBGhc4}GdvXg7r7MqJ$$8Uy-pXp%NbdoDE97*6~uqESMeLWUDRlrM$-wc6RH_O0;Ej!Ja+qgq7UA3on*t$r77a*tJq!w-Z0 zExgBFtKDHd=N?Xf58tPzC=9b_i57~)JoVa+$Ow-IZ^fR#pd5~z;+ZMZkLm2_Bv`vR zy3R9PUfWF4u83~(%#(2ENw}k>KNcyIM{bgUTAT6>$x_AqWkNS;)dh{dWn#KX=ziS7 zl4p^W_ept;lM=Nv(Q@f+$K+#_F3VQV3($wiAKI8t_^y~ zmslsswK@0@46Rl#XpiE_=%=bD@qF-8^?KshpuWVb!R;`#THP%Ub_pF$TZ-q0Ceb~` z3qxJn zlL1$Q21=)dme2suIdoF#29#%%?lYFqywX>Lb7*PlPH?U&-G*B2C?AzTl+sf`Uks7C7dZ?%Bl3Y% z8!INJ2=%L{{F5}l>hZ6N_|=T^wV?CMuLC{5+yt#J-w1kD`6ke{zQ8J9_UpZa0>=$Oax+w%L=XX?%JNm?WE+kuGo+W|9TO`@|# z=sKYrg>DwQUFh9Hof^NwpDC^PYn)rVgdaDp4%E2Cj|i(&IHlmsh>RwF*E5=C#J;5} zH4dd(;~@5k=2(qi&yUskRs9r=bAGQhW2VOGIYr~SK2x0S75#alKTq`C_^pe2Cw?ob zlrGmsV&Pn(X5jVfyXrEb8-#A8yCA(EU%6p=hMMfWAN+HjyM+G^U8r_D-x2;1`Ykk% z;0snv-=WD^rYy>QrI_zf7b@j)D7NEK%=f4_Ou4XXg;b~zL4{NpF6H5NnRRMKr&jp2 z!k>dj5Nn-tgfmAt^`cWRoOL#du_S zPeL6UcSwiE9ko+?pB6j1h0`sZr=fFm_#pUAj(4O?4%R0J>nEk0lyZ%fYouH!5*EqRcC*?XRcSyNI${UW6YlL4T{L6%2p-aZ-Y@$ME3$?i=I9&ny~ldt*9*U1_?^P(6i%mZa^)^zbqT9WlzN2IBb*-LC`0nuV3*3^S{1^n zwJGy!h2JThPSNZXPM2`HgwrLQ9^v#DzvcYz5!NAL9TKHO!clH<=@yr6cIj|)uha{_ zUikIG?-Wj_a5{yvK{UIB-zEGm;omR(9^v4jxe>-5SH2&;=(T918l!i__e~X6@INLf_h=q3#(o@oxRL+PKfQ);|1*HILb->_u!S|WJgb! zSv_GkeMmTmgmXwZ6%lDoL|PMJom%143a3^$^}?waPQ7qCh0`gVPT@GCccE^j(3#P@ zIRAGE*eCR`P-je(gw7PYOXxnKhlM)htg}(*E}{E`9u`Uk94HlVpw0r;ObRC{oEjVRPM5?w0aFDIb(F4G^6HtaDJx2c=A< z!Y^h1PATt{a<`PbrF_s7aL`gJ;|e>=#F>=4rF>Az2c^8TTy)AsN6Ot&J}BjbQmz@u zIyD1Xr$fpeQtp;=x0ERNV!AG-9uQX zdkE_!hl;bI;!MgNQmz}u{JLSnmvV=clPS?pN&eRer~!bglug{YK}^4*J)d|YaQQmJmz@*O4qBdTlKHwm%fL&Yu%T* zyWIbBpYFNC^NHsf?|$zKzTfy>4E#PYF8F5fFTwu~UJ<$@^nB<*XlD4w;r|yN6Im2_ zDtbz+EB2DdG> z_)N!V20kgDKCT-|uKMfepZi@)CHuLmFF2!5&@V~#67 znN-J-Y|d{*3yN6M_X znf8g^7Te$!7zCSQO2hMQ{92isA$Yj5>Tv;t`wE2xTzY%;6tWjAlZB$lEuR6EC*aSGTWF$t zD_!i)(02Eo&@;&AxtA(D-vQ60jh^q~b1!Z6-b=URvqe2kZN7V{)3;pR?5m8bE$Rw& zhyO}^-lB!Ury+P64nC)4p;k3F)~c>9*!|Uu9&)I$ndR+*JW<4KC5vZ|#SKWRRC z(#fo`0HC2|O=AOdChmT#{smP$zhT9t4K1wOde(AV;o6$9)* z=ayY)WWINAtfr}{;j%T2%`01JVZ-YA&CAv{HPE8w+Lo63YiZ7`m1|ctwA5eP)KE8? zJ;n>J@US4_(6TXBPT&dRHsuWFcG5BA)ZWzL1oD;hG( zSN_I(dBd7ZtjKns-2824=1}WdyC%o656+05oEdQ4 zxXhfU;O)YhBTT$oxn{ zL9|{4%cA3i6~pX_X<1f`O%+71by@6~BjzlHn#C)P%#WU3RvKMW8f0U!Owo-^W>PCH zEh}{-$*m_dimoyFS{=JT7*aX*6r5x3{xoQgi9;YV8$28V+N;gZ>U^8?1G==f;I=b5RSX9qf!8{OOK zQqk%%JyUx_sS7F8>B@X>^BDC^=1-d!Yxw%?v|Gk_K84yvsw|kuByUM%w%t-~e(p0| zXevjAOiQ|=9?qCZXP_)vP!>5ifL4}qGdl~=T5g5MKzFiM1S0T@r5AGIaqPKRMaM}$ zqZA{*-BY4kY&dNNxfCI#$Jq?@3zE%tpBa7Y=sK4HSL4w5Xe0RSy-~b3M&@Jiq6I-s zM!SGDR@fRVL}Nu{J~|$4U>Z3$0@KA}8m*Fsv9aRJ%G-vk7cx6;o18g#%PFJX5(qrv zd?Upee)k%ACas8NS;5{e*|v2gerN!_P>*KDC^K?v$>>hSS%(oJ73~}y=^W<-Y;Yl` zf&Db5iCv zTQ4vt@%VR66;6PsUWHRf;>Tp3@p6zizjVxk;YkB27>pL=<{_B&{K?a`<_;S+6tY0t z5C^FfQ0LXG;~CdUSf~qv+?1?>ALT}bSu0aSK(t_jfpz6`ULsc9F-|pP9=v17 znP-=i!>im@a>I=ic~IuZj6tX!TiLP9n2KnDkC(>I)zTZRz83Agh?hrPSjWZd&43+c z)6fCDNpbg%V{^qmENI~@1Ic2~{&vW*uIjR|dSHmdjTU6ucZ|Tg^qn2{U}_j@PJ=)0 zI7@w!Ir+|Mmwc8tMqzYI$7gxFTVdFRIIaDycPLAFZ2ia71EY6WlxgR7=+R}nU%B&f zHOHYx=F7UtVS??!@`n{PG9QK{@~FpJ#M&{txw*{LG5ax3JzmZbW(+bkp222xTwW)5 zyauviQ*#dGvCNI8?(Vh8&Sbr zaa@fRc{NsWjTN~XD^R2OxC;5hSj-iQa}|m?#>biLL$@_x^;JQvY8-PJa}Q2qdYH*y z!bvA)U*5TexgRk3h`U=77Ma}fiNhKjPPN9&hj&#*^3O0B&W_JAm3Jr2PABSiy2D9T z+Gky}2E2ECdDG-0%QzWSp8DC*Egpc8g%{>o-ELpTLEBDbNoWjcac*dfdATl*ju_{W zHI*I76txzUn7x?v`j>?!v*YgJp3YL4L-@Jq7w*0+w0OqkrB^jv-MF%)er0R(irrJb zxn2)l+?Sb|^3Cy2?0Uu*nsFR|+-~pV@1FP6Uv+hh9=&o}_LzcOD=sIuRupRMr`@sD ktKxV3AfU>hdOM&7YhMql8qX*tKO?bo+Ee(Cw*5o>e}VPnR{#J2 diff --git a/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll index c033697fd002c06e56faa82597d0104b3d1016a3..04b58fa8e7970d1213222c4a23ffaa6edcc24395 100644 GIT binary patch delta 22993 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 delta 28217 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 delta 28217 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 kE8}PBI~~3My(Mi=v34fM97&6jT%)Oo9a>%tWaR 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 delta 28217 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 diff --git a/tests/fsharp/typeProviders/negTests/neg2c.bsl b/tests/fsharp/typeProviders/negTests/neg2c.bsl index 866b4c826c9..4db9de30d0e 100644 --- a/tests/fsharp/typeProviders/negTests/neg2c.bsl +++ b/tests/fsharp/typeProviders/negTests/neg2c.bsl @@ -1,2 +1,2 @@ -neg2c.fsx(6,5,6,7): typecheck error FS0410: The type 'TheGeneratedType1' is less accessible than the value, member or type 'val f2 : unit -> TheGeneratedType1' it is used in. +neg2c.fsx(6,5,6,7): typecheck error FS0410: The type 'TheGeneratedType1' is less accessible than the value, member or type 'val f2: unit -> TheGeneratedType1' it is used in. diff --git a/tests/fsharp/typecheck/sigs/neg03.bsl b/tests/fsharp/typecheck/sigs/neg03.bsl index 6b6f72b5826..bd38f05401f 100644 --- a/tests/fsharp/typecheck/sigs/neg03.bsl +++ b/tests/fsharp/typecheck/sigs/neg03.bsl @@ -88,9 +88,9 @@ neg03.fs(84,9,84,23): typecheck error FS0025: Incomplete pattern matches on this neg03.fs(85,9,85,27): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '"a"' may indicate a case not covered by the pattern(s). -neg03.fs(86,9,86,13): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s). +neg03.fs(86,9,86,13): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s). -neg03.fs(87,19,87,26): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s). +neg03.fs(87,19,87,26): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s). neg03.fs(91,11,91,26): typecheck error FS0026: This rule will never be matched diff --git a/tests/fsharp/typecheck/sigs/neg04.bsl b/tests/fsharp/typecheck/sigs/neg04.bsl index 8941c40ca77..55f25656a14 100644 --- a/tests/fsharp/typecheck/sigs/neg04.bsl +++ b/tests/fsharp/typecheck/sigs/neg04.bsl @@ -117,7 +117,7 @@ is not compatible with type neg04.fs(147,10,147,20): typecheck error FS0193: Type constraint mismatch. The type - 'int []' + 'int[]' is not compatible with type 'IBar' diff --git a/tests/fsharp/typecheck/sigs/neg06.bsl b/tests/fsharp/typecheck/sigs/neg06.bsl index 59553cc99b5..cc7fc113cfc 100644 --- a/tests/fsharp/typecheck/sigs/neg06.bsl +++ b/tests/fsharp/typecheck/sigs/neg06.bsl @@ -90,7 +90,7 @@ neg06.fs(124,9,124,10): typecheck error FS0953: This type definition involves an neg06.fs(128,19,128,46): typecheck error FS0700: 'new' constraints must take one argument of type 'unit' and return the constructed type -neg06.fs(128,53,128,61): typecheck error FS0043: A type parameter is missing a constraint 'when 'a : (new : unit -> 'a)' +neg06.fs(128,53,128,61): typecheck error FS0043: A type parameter is missing a constraint 'when 'a: (new: unit -> 'a)' neg06.fs(141,10,141,18): typecheck error FS0954: This type definition involves an immediate cyclic reference through a struct field or inheritance relation @@ -143,7 +143,7 @@ neg06.fs(382,13,382,19): typecheck error FS0041: A unique overload for method 'M Known type of argument: 'a Candidates: - - static member C.M1 : x:int -> int - - static member C.M1 : x:string -> int + - static member C.M1: x: int -> int + - static member C.M1: x: string -> int neg06.fs(398,13,398,14): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s). Unmatched elements will be ignored. diff --git a/tests/fsharp/typecheck/sigs/neg08.bsl b/tests/fsharp/typecheck/sigs/neg08.bsl index 3a4efa88908..f5c1b315dd8 100644 --- a/tests/fsharp/typecheck/sigs/neg08.bsl +++ b/tests/fsharp/typecheck/sigs/neg08.bsl @@ -21,4 +21,4 @@ neg08.fs(55,7,55,14): typecheck error FS0776: Object construction expressions ma neg08.fs(61,19,61,26): typecheck error FS0039: The type 'Type' does not define the field, constructor or member 'value__'. -neg08.fs(79,5,79,44): typecheck error FS0502: The member or object constructor 'Random' takes 0 type argument(s) but is here given 1. The required signature is 'static member Variable.Random : y:Variable<'a> -> Variable<'a>'. +neg08.fs(79,5,79,44): typecheck error FS0502: The member or object constructor 'Random' takes 0 type argument(s) but is here given 1. The required signature is 'static member Variable.Random: y: Variable<'a> -> Variable<'a>'. diff --git a/tests/fsharp/typecheck/sigs/neg09.bsl b/tests/fsharp/typecheck/sigs/neg09.bsl index 4db6dab5184..b6b98819491 100644 --- a/tests/fsharp/typecheck/sigs/neg09.bsl +++ b/tests/fsharp/typecheck/sigs/neg09.bsl @@ -9,7 +9,7 @@ neg09.fs(6,5,6,8): typecheck error FS0201: Namespaces cannot contain values. Con neg09.fs(20,32,20,42): typecheck error FS0941: Accessibility modifiers are not permitted on overrides or interface implementations -neg09.fs(26,8,26,39): typecheck error FS0497: The member or object constructor 'NamedMeth1' requires 1 additional argument(s). The required signature is 'abstract member IFoo.NamedMeth1 : arg1:int * arg2:int * arg3:int * arg4:int -> float'. +neg09.fs(26,8,26,39): typecheck error FS0497: The member or object constructor 'NamedMeth1' requires 1 additional argument(s). The required signature is 'abstract IFoo.NamedMeth1: arg1: int * arg2: int * arg3: int * arg4: int -> float'. neg09.fs(49,19,49,20): typecheck error FS1173: Infix operator member '+' has 1 initial argument(s). Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... diff --git a/tests/fsharp/typecheck/sigs/neg10.bsl b/tests/fsharp/typecheck/sigs/neg10.bsl index 5e897ad9f16..b19cbe84bb4 100644 --- a/tests/fsharp/typecheck/sigs/neg10.bsl +++ b/tests/fsharp/typecheck/sigs/neg10.bsl @@ -59,8 +59,8 @@ neg10.fs(169,32,169,35): typecheck error FS0035: This construct is deprecated: T neg10.fs(169,32,169,33): typecheck error FS3213: The member 'X: unit -> 'a' matches multiple overloads of the same method. Please restrict it to one of the following: - X : unit -> 'a - X : unit -> 'a. + X: unit -> 'a + X: unit -> 'a. neg10.fs(169,19,169,26): typecheck error FS0783: At least one override did not correctly implement its corresponding abstract member @@ -146,7 +146,7 @@ neg10.fs(324,17,324,29): typecheck error FS1187: An indexer property must be giv neg10.fs(333,17,333,29): typecheck error FS1187: An indexer property must be given at least one argument -neg10.fs(335,17,335,39): typecheck error FS0501: The member or object constructor 'X' takes 2 argument(s) but is here given 3. The required signature is 'member T3.X : a:int -> int * int with set'. +neg10.fs(335,17,335,39): typecheck error FS0501: The member or object constructor 'X' takes 2 argument(s) but is here given 3. The required signature is 'member T3.X: a: int -> int * int with set'. neg10.fs(345,23,345,24): typecheck error FS0001: The type 'SqlDecimal' does not support a conversion to the type 'float' diff --git a/tests/fsharp/typecheck/sigs/neg106.bsl b/tests/fsharp/typecheck/sigs/neg106.bsl index 373bf01fe9d..6630d22d110 100644 --- a/tests/fsharp/typecheck/sigs/neg106.bsl +++ b/tests/fsharp/typecheck/sigs/neg106.bsl @@ -12,7 +12,7 @@ Available overloads: - System.Threading.Interlocked.CompareExchange(location1: byref, value: int, comparand: int) : int // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: nativeint, comparand: nativeint) : nativeint // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: obj, comparand: obj) : obj // Argument 'location1' doesn't match - - System.Threading.Interlocked.CompareExchange<'T when 'T : not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match + - System.Threading.Interlocked.CompareExchange<'T when 'T: not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match neg106.fs(17,59,17,61): typecheck error FS3236: Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address. @@ -27,7 +27,7 @@ Available overloads: - System.Threading.Interlocked.CompareExchange(location1: byref, value: int, comparand: int) : int // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: nativeint, comparand: nativeint) : nativeint // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: obj, comparand: obj) : obj // Argument 'location1' doesn't match - - System.Threading.Interlocked.CompareExchange<'T when 'T : not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match + - System.Threading.Interlocked.CompareExchange<'T when 'T: not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match neg106.fs(23,35,23,39): typecheck error FS0001: Type mismatch. Expecting a 'byref' @@ -46,16 +46,16 @@ neg106.fs(40,18,40,32): typecheck error FS0041: No overloads match for method 'M Known types of arguments: string * inref Available overloads: - - static member C.M : a:int * x:byref -> unit // Argument 'a' doesn't match - - static member C.M : a:string * x:byref -> unit // Argument 'x' doesn't match + - static member C.M: a: int * x: byref -> unit // Argument 'a' doesn't match + - static member C.M: a: string * x: byref -> unit // Argument 'x' doesn't match neg106.fs(41,19,41,31): typecheck error FS0041: No overloads match for method 'M'. Known types of arguments: int * inref Available overloads: - - static member C.M : a:int * x:byref -> unit // Argument 'x' doesn't match - - static member C.M : a:string * x:byref -> unit // Argument 'a' doesn't match + - static member C.M: a: int * x: byref -> unit // Argument 'x' doesn't match + - static member C.M: a: string * x: byref -> unit // Argument 'a' doesn't match neg106.fs(49,22,49,26): typecheck error FS0001: Type mismatch. Expecting a 'byref' diff --git a/tests/fsharp/typecheck/sigs/neg106.vsbsl b/tests/fsharp/typecheck/sigs/neg106.vsbsl index 373bf01fe9d..6630d22d110 100644 --- a/tests/fsharp/typecheck/sigs/neg106.vsbsl +++ b/tests/fsharp/typecheck/sigs/neg106.vsbsl @@ -12,7 +12,7 @@ Available overloads: - System.Threading.Interlocked.CompareExchange(location1: byref, value: int, comparand: int) : int // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: nativeint, comparand: nativeint) : nativeint // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: obj, comparand: obj) : obj // Argument 'location1' doesn't match - - System.Threading.Interlocked.CompareExchange<'T when 'T : not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match + - System.Threading.Interlocked.CompareExchange<'T when 'T: not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match neg106.fs(17,59,17,61): typecheck error FS3236: Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address. @@ -27,7 +27,7 @@ Available overloads: - System.Threading.Interlocked.CompareExchange(location1: byref, value: int, comparand: int) : int // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: nativeint, comparand: nativeint) : nativeint // Argument 'location1' doesn't match - System.Threading.Interlocked.CompareExchange(location1: byref, value: obj, comparand: obj) : obj // Argument 'location1' doesn't match - - System.Threading.Interlocked.CompareExchange<'T when 'T : not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match + - System.Threading.Interlocked.CompareExchange<'T when 'T: not struct>(location1: byref<'T>, value: 'T, comparand: 'T) : 'T // Argument 'location1' doesn't match neg106.fs(23,35,23,39): typecheck error FS0001: Type mismatch. Expecting a 'byref' @@ -46,16 +46,16 @@ neg106.fs(40,18,40,32): typecheck error FS0041: No overloads match for method 'M Known types of arguments: string * inref Available overloads: - - static member C.M : a:int * x:byref -> unit // Argument 'a' doesn't match - - static member C.M : a:string * x:byref -> unit // Argument 'x' doesn't match + - static member C.M: a: int * x: byref -> unit // Argument 'a' doesn't match + - static member C.M: a: string * x: byref -> unit // Argument 'x' doesn't match neg106.fs(41,19,41,31): typecheck error FS0041: No overloads match for method 'M'. Known types of arguments: int * inref Available overloads: - - static member C.M : a:int * x:byref -> unit // Argument 'x' doesn't match - - static member C.M : a:string * x:byref -> unit // Argument 'a' doesn't match + - static member C.M: a: int * x: byref -> unit // Argument 'x' doesn't match + - static member C.M: a: string * x: byref -> unit // Argument 'a' doesn't match neg106.fs(49,22,49,26): typecheck error FS0001: Type mismatch. Expecting a 'byref' diff --git a/tests/fsharp/typecheck/sigs/neg116.bsl b/tests/fsharp/typecheck/sigs/neg116.bsl index 8613d44041c..e5225d4225e 100644 --- a/tests/fsharp/typecheck/sigs/neg116.bsl +++ b/tests/fsharp/typecheck/sigs/neg116.bsl @@ -6,5 +6,5 @@ Known return type: ^a Known type parameters: < float , Polynomial > Available overloads: - - static member Polynomial.( * ) : s:Complex * p:Polynomial -> Polynomial // Argument 's' doesn't match - - static member Polynomial.( * ) : s:decimal * p:Polynomial -> Polynomial // Argument 's' doesn't match + - static member Polynomial.( * ) : s: Complex * p: Polynomial -> Polynomial // Argument 's' doesn't match + - static member Polynomial.( * ) : s: decimal * p: Polynomial -> Polynomial // Argument 's' doesn't match diff --git a/tests/fsharp/typecheck/sigs/neg117.bsl b/tests/fsharp/typecheck/sigs/neg117.bsl index 5dea2c245f6..8dd725f4721 100644 --- a/tests/fsharp/typecheck/sigs/neg117.bsl +++ b/tests/fsharp/typecheck/sigs/neg117.bsl @@ -6,5 +6,5 @@ Known return type: ('a -> Neg117.TargetA.M1 Microsoft.FSharp.Core.[]) Known type parameters: < Neg117.TargetA.M1 Microsoft.FSharp.Core.[] , Microsoft.FSharp.Core.obj , Neg117.Superpower.Transformer > Available overloads: - - static member Neg117.Superpower.Transformer.Transform : ^f * Neg117.TargetB.TargetB * Neg117.Superpower.Transformer -> (Neg117.TargetB.TransformerKind -> ^f) when (Neg117.TargetB.TargetB or ^f) : (static member Transform: ^f * Neg117.TargetB.TargetB -> (Neg117.TargetB.TransformerKind -> ^f)) // Argument at index 1 doesn't match - - static member Neg117.Superpower.Transformer.Transform : ^r * Neg117.TargetA.TargetA * Neg117.Superpower.Transformer -> (Neg117.TargetA.TransformerKind -> ^r) when (Neg117.TargetA.TargetA or ^r) : (static member Transform: ^r * Neg117.TargetA.TargetA -> (Neg117.TargetA.TransformerKind -> ^r)) // Argument at index 1 doesn't match + - static member Neg117.Superpower.Transformer.Transform: ^f * Neg117.TargetB.TargetB * Neg117.Superpower.Transformer -> (Neg117.TargetB.TransformerKind -> ^f) when (Neg117.TargetB.TargetB or ^f) : (static member Transform: ^f * Neg117.TargetB.TargetB -> (Neg117.TargetB.TransformerKind -> ^f)) // Argument at index 1 doesn't match + - static member Neg117.Superpower.Transformer.Transform: ^r * Neg117.TargetA.TargetA * Neg117.Superpower.Transformer -> (Neg117.TargetA.TransformerKind -> ^r) when (Neg117.TargetA.TargetA or ^r) : (static member Transform: ^r * Neg117.TargetA.TargetA -> (Neg117.TargetA.TransformerKind -> ^r)) // Argument at index 1 doesn't match diff --git a/tests/fsharp/typecheck/sigs/neg119.bsl b/tests/fsharp/typecheck/sigs/neg119.bsl index e19bbd6581d..9bbdf9ccdaa 100644 --- a/tests/fsharp/typecheck/sigs/neg119.bsl +++ b/tests/fsharp/typecheck/sigs/neg119.bsl @@ -6,7 +6,7 @@ Known return type: ((int -> int -> int) -> obj) Known type parameters: < obj , Applicatives.Ap > Available overloads: - - static member Applicatives.Ap.Return : ('r -> 'a) * Ap:Applicatives.Ap -> (('a -> 'r -> 'a2) -> 'a3 -> 'a -> 'r -> 'a2) // Argument at index 1 doesn't match - - static member Applicatives.Ap.Return : System.Tuple<'a> * Ap:Applicatives.Ap -> ('a -> System.Tuple<'a>) // Argument at index 1 doesn't match - - static member Applicatives.Ap.Return : r: ^R * obj -> ('a1 -> ^R) when ^R : (static member Return: 'a1 -> ^R) // Argument 'r' doesn't match - - static member Applicatives.Ap.Return : seq<'a> * Ap:Applicatives.Ap -> ('a -> seq<'a>) // Argument at index 1 doesn't match Consider adding further type constraints + - static member Applicatives.Ap.Return: ('r -> 'a) * Ap: Applicatives.Ap -> (('a -> 'r -> 'a2) -> 'a3 -> 'a -> 'r -> 'a2) // Argument at index 1 doesn't match + - static member Applicatives.Ap.Return: System.Tuple<'a> * Ap: Applicatives.Ap -> ('a -> System.Tuple<'a>) // Argument at index 1 doesn't match + - static member Applicatives.Ap.Return: r: ^R * obj -> ('a1 -> ^R) when ^R: (static member Return: 'a1 -> ^R) // Argument 'r' doesn't match + - static member Applicatives.Ap.Return: seq<'a> * Ap: Applicatives.Ap -> ('a -> seq<'a>) // Argument at index 1 doesn't match Consider adding further type constraints diff --git a/tests/fsharp/typecheck/sigs/neg120.bsl b/tests/fsharp/typecheck/sigs/neg120.bsl index 315d92239b0..e0b1aebc7b2 100644 --- a/tests/fsharp/typecheck/sigs/neg120.bsl +++ b/tests/fsharp/typecheck/sigs/neg120.bsl @@ -6,8 +6,8 @@ Known return type: obj Known type parameters: < Id , (int -> obj) > Available overloads: - - static member Bind.( >>= ) : source:'T option * f:('T -> 'U option) -> 'U option // Argument 'source' doesn't match - - static member Bind.( >>= ) : source:Async<'T> * f:('T -> Async<'a1>) -> Async<'a1> // Argument 'source' doesn't match - - static member Bind.( >>= ) : source:Id<'T> * f:('T -> Id<'U>) -> Id<'U> // Argument 'f' doesn't match - - static member Bind.( >>= ) : source:Lazy<'T> * f:('T -> Lazy<'U>) -> Lazy<'U> // Argument 'source' doesn't match - - static member Bind.( >>= ) : source:Task<'T> * f:('T -> Task<'U>) -> Task<'U> // Argument 'source' doesn't match Consider adding further type constraints + - static member Bind.(>>=) : source: 'T option * f: ('T -> 'U option) -> 'U option // Argument 'source' doesn't match + - static member Bind.(>>=) : source: Async<'T> * f: ('T -> Async<'a1>) -> Async<'a1> // Argument 'source' doesn't match + - static member Bind.(>>=) : source: Id<'T> * f: ('T -> Id<'U>) -> Id<'U> // Argument 'f' doesn't match + - static member Bind.(>>=) : source: Lazy<'T> * f: ('T -> Lazy<'U>) -> Lazy<'U> // Argument 'source' doesn't match + - static member Bind.(>>=) : source: Task<'T> * f: ('T -> Task<'U>) -> Task<'U> // Argument 'source' doesn't match Consider adding further type constraints diff --git a/tests/fsharp/typecheck/sigs/neg124.bsl b/tests/fsharp/typecheck/sigs/neg124.bsl index 356440c6eff..5b13ecc8bd6 100644 --- a/tests/fsharp/typecheck/sigs/neg124.bsl +++ b/tests/fsharp/typecheck/sigs/neg124.bsl @@ -6,11 +6,11 @@ Known return type: uint8 Known type parameter: < obj > Available overloads: - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:byte -> byte // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:int16 -> uint16 // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:int32 -> uint32 // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:int64 -> uint64 // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:sbyte -> uint8 // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:uint16 -> uint16 // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:uint32 -> uint32 // Argument 'x' doesn't match - - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness : x:uint64 -> uint64 // Argument 'x' doesn't match Consider adding further type constraints + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: byte -> byte // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: int16 -> uint16 // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: int32 -> uint32 // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: int64 -> uint64 // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: sbyte -> uint8 // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: uint16 -> uint16 // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: uint32 -> uint32 // Argument 'x' doesn't match + - static member Negative_SelectOverloadedWitnessBasedOnInputAndReturnTypeWithoutOutputTypeSelector.witnesses.unsigned_witness: x: uint64 -> uint64 // Argument 'x' doesn't match Consider adding further type constraints diff --git a/tests/fsharp/typecheck/sigs/neg125.bsl b/tests/fsharp/typecheck/sigs/neg125.bsl index 5c26683981b..17a6052b4e5 100644 --- a/tests/fsharp/typecheck/sigs/neg125.bsl +++ b/tests/fsharp/typecheck/sigs/neg125.bsl @@ -6,19 +6,19 @@ Known return type: int32 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(40,30,40,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -27,19 +27,19 @@ Known return type: int64 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(41,31,41,33): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -48,19 +48,19 @@ Known return type: bigint Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(42,30,42,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -69,19 +69,19 @@ Known return type: float Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(43,30,43,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -90,19 +90,19 @@ Known return type: sbyte Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(44,30,44,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -111,19 +111,19 @@ Known return type: int16 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(45,29,45,31): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -132,19 +132,19 @@ Known return type: byte Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(46,31,46,33): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -153,19 +153,19 @@ Known return type: uint16 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(47,31,47,33): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -174,19 +174,19 @@ Known return type: uint32 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(48,32,48,34): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -195,19 +195,19 @@ Known return type: uint64 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(49,33,49,35): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -216,19 +216,19 @@ Known return type: float32 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(50,33,50,35): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -237,19 +237,19 @@ Known return type: decimal Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg125.fs(51,33,51,35): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -258,16 +258,16 @@ Known return type: Complex Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 diff --git a/tests/fsharp/typecheck/sigs/neg127.bsl b/tests/fsharp/typecheck/sigs/neg127.bsl index 39c91a61d5b..76b3c8e353f 100644 --- a/tests/fsharp/typecheck/sigs/neg127.bsl +++ b/tests/fsharp/typecheck/sigs/neg127.bsl @@ -6,19 +6,19 @@ Known return type: int32 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(48,30,48,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -27,19 +27,19 @@ Known return type: int64 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(49,31,49,33): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -48,19 +48,19 @@ Known return type: bigint Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(50,30,50,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -69,19 +69,19 @@ Known return type: float Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(51,30,51,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -90,19 +90,19 @@ Known return type: sbyte Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(52,30,52,32): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -111,19 +111,19 @@ Known return type: int16 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(53,29,53,31): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -132,19 +132,19 @@ Known return type: byte Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(54,31,54,33): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -153,19 +153,19 @@ Known return type: uint16 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(55,31,55,33): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -174,19 +174,19 @@ Known return type: uint32 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(56,32,56,34): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -195,19 +195,19 @@ Known return type: uint64 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(57,33,57,35): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -216,19 +216,19 @@ Known return type: float32 Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(58,33,58,35): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -237,19 +237,19 @@ Known return type: decimal Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 neg127.fs(59,33,59,35): typecheck error FS0001: A unique overload for method 'convert_witness' could not be determined based on type information prior to this program point. A type annotation may be needed. @@ -258,16 +258,16 @@ Known return type: Complex Known type parameter: < BigInteger > Candidates: - - static member witnesses.convert_witness : x:bigint -> Complex - - static member witnesses.convert_witness : x:bigint -> bigint - - static member witnesses.convert_witness : x:bigint -> byte - - static member witnesses.convert_witness : x:bigint -> decimal - - static member witnesses.convert_witness : x:bigint -> float - - static member witnesses.convert_witness : x:bigint -> float32 - - static member witnesses.convert_witness : x:bigint -> int - - static member witnesses.convert_witness : x:bigint -> int16 - - static member witnesses.convert_witness : x:bigint -> int64 - - static member witnesses.convert_witness : x:bigint -> sbyte - - static member witnesses.convert_witness : x:bigint -> uint16 - - static member witnesses.convert_witness : x:bigint -> uint32 - - static member witnesses.convert_witness : x:bigint -> uint64 + - static member witnesses.convert_witness: x: bigint -> Complex + - static member witnesses.convert_witness: x: bigint -> bigint + - static member witnesses.convert_witness: x: bigint -> byte + - static member witnesses.convert_witness: x: bigint -> decimal + - static member witnesses.convert_witness: x: bigint -> float + - static member witnesses.convert_witness: x: bigint -> float32 + - static member witnesses.convert_witness: x: bigint -> int + - static member witnesses.convert_witness: x: bigint -> int16 + - static member witnesses.convert_witness: x: bigint -> int64 + - static member witnesses.convert_witness: x: bigint -> sbyte + - static member witnesses.convert_witness: x: bigint -> uint16 + - static member witnesses.convert_witness: x: bigint -> uint32 + - static member witnesses.convert_witness: x: bigint -> uint64 diff --git a/tests/fsharp/typecheck/sigs/neg128.bsl b/tests/fsharp/typecheck/sigs/neg128.bsl index 5d41804b731..bf6b57d9ba6 100644 --- a/tests/fsharp/typecheck/sigs/neg128.bsl +++ b/tests/fsharp/typecheck/sigs/neg128.bsl @@ -6,16 +6,16 @@ Known return type: 'output Known type parameters: < bigint , 'output > Candidates: - - static member witnesses.convert_witness : x:bigint * _output:Complex -> Complex - - static member witnesses.convert_witness : x:bigint * _output:bigint -> bigint - - static member witnesses.convert_witness : x:bigint * _output:byte -> byte - - static member witnesses.convert_witness : x:bigint * _output:decimal -> decimal - - static member witnesses.convert_witness : x:bigint * _output:float -> float - - static member witnesses.convert_witness : x:bigint * _output:float32 -> float32 - - static member witnesses.convert_witness : x:bigint * _output:int16 -> int16 - - static member witnesses.convert_witness : x:bigint * _output:int32 -> int - - static member witnesses.convert_witness : x:bigint * _output:int64 -> int64 - - static member witnesses.convert_witness : x:bigint * _output:sbyte -> sbyte - - static member witnesses.convert_witness : x:bigint * _output:uint16 -> uint16 - - static member witnesses.convert_witness : x:bigint * _output:uint32 -> uint32 - - static member witnesses.convert_witness : x:bigint * _output:uint64 -> uint64 + - static member witnesses.convert_witness: x: bigint * _output: Complex -> Complex + - static member witnesses.convert_witness: x: bigint * _output: bigint -> bigint + - static member witnesses.convert_witness: x: bigint * _output: byte -> byte + - static member witnesses.convert_witness: x: bigint * _output: decimal -> decimal + - static member witnesses.convert_witness: x: bigint * _output: float -> float + - static member witnesses.convert_witness: x: bigint * _output: float32 -> float32 + - static member witnesses.convert_witness: x: bigint * _output: int16 -> int16 + - static member witnesses.convert_witness: x: bigint * _output: int32 -> int + - static member witnesses.convert_witness: x: bigint * _output: int64 -> int64 + - static member witnesses.convert_witness: x: bigint * _output: sbyte -> sbyte + - static member witnesses.convert_witness: x: bigint * _output: uint16 -> uint16 + - static member witnesses.convert_witness: x: bigint * _output: uint32 -> uint32 + - static member witnesses.convert_witness: x: bigint * _output: uint64 -> uint64 diff --git a/tests/fsharp/typecheck/sigs/neg129.bsl b/tests/fsharp/typecheck/sigs/neg129.bsl index 23bcf36815b..82773932a9f 100644 --- a/tests/fsharp/typecheck/sigs/neg129.bsl +++ b/tests/fsharp/typecheck/sigs/neg129.bsl @@ -6,16 +6,16 @@ Known return type: ^output Known type parameters: < bigint , ^output > Candidates: - - static member witnesses.convert_witness : x:bigint * _output:Complex -> Complex - - static member witnesses.convert_witness : x:bigint * _output:bigint -> bigint - - static member witnesses.convert_witness : x:bigint * _output:byte -> byte - - static member witnesses.convert_witness : x:bigint * _output:decimal -> decimal - - static member witnesses.convert_witness : x:bigint * _output:float -> float - - static member witnesses.convert_witness : x:bigint * _output:float32 -> float32 - - static member witnesses.convert_witness : x:bigint * _output:int16 -> int16 - - static member witnesses.convert_witness : x:bigint * _output:int32 -> int - - static member witnesses.convert_witness : x:bigint * _output:int64 -> int64 - - static member witnesses.convert_witness : x:bigint * _output:sbyte -> sbyte - - static member witnesses.convert_witness : x:bigint * _output:uint16 -> uint16 - - static member witnesses.convert_witness : x:bigint * _output:uint32 -> uint32 - - static member witnesses.convert_witness : x:bigint * _output:uint64 -> uint64 + - static member witnesses.convert_witness: x: bigint * _output: Complex -> Complex + - static member witnesses.convert_witness: x: bigint * _output: bigint -> bigint + - static member witnesses.convert_witness: x: bigint * _output: byte -> byte + - static member witnesses.convert_witness: x: bigint * _output: decimal -> decimal + - static member witnesses.convert_witness: x: bigint * _output: float -> float + - static member witnesses.convert_witness: x: bigint * _output: float32 -> float32 + - static member witnesses.convert_witness: x: bigint * _output: int16 -> int16 + - static member witnesses.convert_witness: x: bigint * _output: int32 -> int + - static member witnesses.convert_witness: x: bigint * _output: int64 -> int64 + - static member witnesses.convert_witness: x: bigint * _output: sbyte -> sbyte + - static member witnesses.convert_witness: x: bigint * _output: uint16 -> uint16 + - static member witnesses.convert_witness: x: bigint * _output: uint32 -> uint32 + - static member witnesses.convert_witness: x: bigint * _output: uint64 -> uint64 diff --git a/tests/fsharp/typecheck/sigs/neg24.bsl b/tests/fsharp/typecheck/sigs/neg24.bsl index 0f622260786..1e46868f266 100644 --- a/tests/fsharp/typecheck/sigs/neg24.bsl +++ b/tests/fsharp/typecheck/sigs/neg24.bsl @@ -11,7 +11,7 @@ neg24.fs(62,31,62,41): typecheck error FS0816: One or more of the overloads of t neg24.fs(64,44,64,48): typecheck error FS0816: One or more of the overloads of this method has curried arguments. Consider redesigning these members to take arguments in tupled form. -neg24.fs(70,15,70,18): typecheck error FS0495: The member or object constructor 'M' has no argument or settable return property 'qez'. The required signature is member C.M : abc:int * def:string -> int. +neg24.fs(70,15,70,18): typecheck error FS0495: The member or object constructor 'M' has no argument or settable return property 'qez'. The required signature is member C.M: abc: int * def: string -> int. neg24.fs(300,29,300,30): typecheck error FS0020: The result of this expression has type 'int' and is implicitly ignored. Consider using 'ignore' to discard this value explicitly, e.g. 'expr |> ignore', or 'let' to bind the result to a name, e.g. 'let result = expr'. diff --git a/tests/fsharp/typecheck/sigs/neg25.bsl b/tests/fsharp/typecheck/sigs/neg25.bsl index ec622a98913..50b01ad713e 100644 --- a/tests/fsharp/typecheck/sigs/neg25.bsl +++ b/tests/fsharp/typecheck/sigs/neg25.bsl @@ -1,23 +1,23 @@ -neg25.fs(15,23,15,31): typecheck error FS0366: No implementation was given for 'abstract NegativeTests.Test1.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(15,23,15,31): typecheck error FS0366: No implementation was given for 'abstract NegativeTests.Test1.ITest.Meth1: string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(32,23,32,31): typecheck error FS0366: No implementation was given for 'abstract NegativeTests.Test2.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(32,23,32,31): typecheck error FS0366: No implementation was given for 'abstract NegativeTests.Test2.ITest.Meth1: string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(64,19,64,45): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro1.INodeWrapper.Node : NegativeTestsActualRepro1.Node'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(64,19,64,45): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro1.INodeWrapper.Node: NegativeTestsActualRepro1.Node'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(87,19,87,25): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro3.IThing.Name : string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(87,19,87,25): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro3.IThing.Name: string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(104,19,104,27): typecheck error FS0366: No implementation was given for 'abstract AnotherNegativeTest.ITestSub.Meth1 : int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(104,19,104,27): typecheck error FS0366: No implementation was given for 'abstract AnotherNegativeTest.ITestSub.Meth1: int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. neg25.fs(126,27,126,35): typecheck error FS0366: No implementation was given for those members: - 'abstract MissingInterfaceMemberTests.Test0.ITestSub.Meth2 : int -> int' - 'abstract MissingInterfaceMemberTests.Test0.ITest.Meth1 : string -> string' + 'abstract MissingInterfaceMemberTests.Test0.ITestSub.Meth2: int -> int' + 'abstract MissingInterfaceMemberTests.Test0.ITest.Meth1: string -> string' Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(147,27,147,35): typecheck error FS0366: No implementation was given for 'abstract MissingInterfaceMemberTests.Test1.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(147,27,147,35): typecheck error FS0366: No implementation was given for 'abstract MissingInterfaceMemberTests.Test1.ITest.Meth1: string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(171,27,171,35): typecheck error FS0366: No implementation was given for 'abstract MissingInterfaceMemberTests.Test3.ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(171,27,171,35): typecheck error FS0366: No implementation was given for 'abstract MissingInterfaceMemberTests.Test3.ITest.Meth1: string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(192,23,192,45): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro2.IEvent.Add2 : ('a -> unit) -> unit'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(192,23,192,45): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro2.IEvent.Add2: ('a -> unit) -> unit'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg25.fs(211,23,211,29): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro4.IThing.Name : string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg25.fs(211,23,211,29): typecheck error FS0366: No implementation was given for 'abstract NegativeTestsActualRepro4.IThing.Name: string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. diff --git a/tests/fsharp/typecheck/sigs/neg26.bsl b/tests/fsharp/typecheck/sigs/neg26.bsl index 4de8918d065..34d68fb5305 100644 --- a/tests/fsharp/typecheck/sigs/neg26.bsl +++ b/tests/fsharp/typecheck/sigs/neg26.bsl @@ -1,13 +1,13 @@ -neg26.fs(15,13,15,56): typecheck error FS0366: No implementation was given for 'abstract ITest.Meth1 : string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg26.fs(15,13,15,56): typecheck error FS0366: No implementation was given for 'abstract ITest.Meth1: string -> string'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg26.fs(27,13,27,66): typecheck error FS0366: No implementation was given for 'abstract ITestSub.Meth2 : int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. +neg26.fs(27,13,27,66): typecheck error FS0366: No implementation was given for 'abstract ITestSub.Meth2: int -> int'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'. -neg26.fs(40,27,40,32): typecheck error FS0361: The override 'Meth1 : int -> int' implements more than one abstract slot, e.g. 'abstract ITestSub.Meth1 : int -> int' and 'abstract ITest.Meth1 : int -> int' +neg26.fs(40,27,40,32): typecheck error FS0361: The override 'Meth1: int -> int' implements more than one abstract slot, e.g. 'abstract ITestSub.Meth1: int -> int' and 'abstract ITest.Meth1: int -> int' neg26.fs(53,27,53,32): typecheck error FS3213: The member 'Meth1: 'a -> 'a' matches multiple overloads of the same method. Please restrict it to one of the following: - Meth1 : int -> int - Meth1 : int -> int. + Meth1: int -> int + Meth1: int -> int. neg26.fs(52,15,52,23): typecheck error FS0783: At least one override did not correctly implement its corresponding abstract member diff --git a/tests/fsharp/typecheck/sigs/neg33.bsl b/tests/fsharp/typecheck/sigs/neg33.bsl index 5a68e0f57dd..25a5d57b43a 100644 --- a/tests/fsharp/typecheck/sigs/neg33.bsl +++ b/tests/fsharp/typecheck/sigs/neg33.bsl @@ -1,2 +1,2 @@ -neg33.fs(4,8,4,13): typecheck error FS0193: Module 'MyNS.File2' requires a value 'member File2.LSS.Bar : string -> int' +neg33.fs(4,8,4,13): typecheck error FS0193: Module 'MyNS.File2' requires a value 'member File2.LSS.Bar: string -> int' diff --git a/tests/fsharp/typecheck/sigs/neg34.bsl b/tests/fsharp/typecheck/sigs/neg34.bsl index 4cfced465c5..c36527910bf 100644 --- a/tests/fsharp/typecheck/sigs/neg34.bsl +++ b/tests/fsharp/typecheck/sigs/neg34.bsl @@ -1,2 +1,2 @@ -neg34.fsi(3,19,3,24): typecheck error FS0001: A type parameter is missing a constraint 'when 'a : struct' +neg34.fsi(3,19,3,24): typecheck error FS0001: A type parameter is missing a constraint 'when 'a: struct' diff --git a/tests/fsharp/typecheck/sigs/neg36.bsl b/tests/fsharp/typecheck/sigs/neg36.bsl index 3d1fe90f661..e23c595d662 100644 --- a/tests/fsharp/typecheck/sigs/neg36.bsl +++ b/tests/fsharp/typecheck/sigs/neg36.bsl @@ -1,4 +1,4 @@ -neg36.fs(11,20,11,21): typecheck error FS0361: The override 'M : string -> int' implements more than one abstract slot, e.g. 'abstract TestAbstractOverrides_Bug4232_Case1.D.M : 'U -> int' and 'abstract member TestAbstractOverrides_Bug4232_Case1.D.M : 'T -> int' +neg36.fs(11,20,11,21): typecheck error FS0361: The override 'M: string -> int' implements more than one abstract slot, e.g. 'abstract TestAbstractOverrides_Bug4232_Case1.D.M: 'U -> int' and 'abstract TestAbstractOverrides_Bug4232_Case1.D.M: 'T -> int' -neg36.fs(32,23,32,24): typecheck error FS0361: The override 'M : int -> unit' implements more than one abstract slot, e.g. 'abstract TestAbstractOverrides_Bug4232_Case2.PB.M : 'a -> unit' and 'abstract member TestAbstractOverrides_Bug4232_Case2.PA.M : int -> unit' +neg36.fs(32,23,32,24): typecheck error FS0361: The override 'M: int -> unit' implements more than one abstract slot, e.g. 'abstract TestAbstractOverrides_Bug4232_Case2.PB.M: 'a -> unit' and 'abstract TestAbstractOverrides_Bug4232_Case2.PA.M: int -> unit' diff --git a/tests/fsharp/typecheck/sigs/neg37_a.bsl b/tests/fsharp/typecheck/sigs/neg37_a.bsl index 8a7ff772644..b1657dda675 100644 --- a/tests/fsharp/typecheck/sigs/neg37_a.bsl +++ b/tests/fsharp/typecheck/sigs/neg37_a.bsl @@ -1,2 +1,2 @@ -neg37_a.fs(7,26,7,41): typecheck error FS3068: The function or member 'Bar' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member BBB.Bar : ('T -> unit)'. +neg37_a.fs(7,26,7,41): typecheck error FS3068: The function or member 'Bar' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member BBB.Bar: ('T -> unit)'. diff --git a/tests/fsharp/typecheck/sigs/neg45.bsl b/tests/fsharp/typecheck/sigs/neg45.bsl index a7bf6e9454e..59d7ec8fa86 100644 --- a/tests/fsharp/typecheck/sigs/neg45.bsl +++ b/tests/fsharp/typecheck/sigs/neg45.bsl @@ -58,24 +58,24 @@ neg45.fs(89,26,89,40): typecheck error FS0041: A unique overload for method 'M' Known type of argument: R1 Candidates: - - member D.M : 'a -> 'b - - member D.M : 'a -> 'b + - member D.M: 'a -> 'b + - member D.M: 'a -> 'b neg45.fs(97,26,97,55): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: (R1 * R1) Candidates: - - member D.M : 'a -> 'b - - member D.M : 'a -> 'b + - member D.M: 'a -> 'b + - member D.M: 'a -> 'b neg45.fs(104,26,104,31): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: int Candidates: - - member D.M : 'a -> 'b - - member D.M : 'a -> 'b + - member D.M: 'a -> 'b + - member D.M: 'a -> 'b neg45.fs(105,24,105,25): typecheck error FS0025: Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s). diff --git a/tests/fsharp/typecheck/sigs/neg56.bsl b/tests/fsharp/typecheck/sigs/neg56.bsl index 3dbb2483d76..1c1fbd7bcda 100644 --- a/tests/fsharp/typecheck/sigs/neg56.bsl +++ b/tests/fsharp/typecheck/sigs/neg56.bsl @@ -1,10 +1,10 @@ -neg56.fs(9,39,9,44): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'member C.A : unit -> 'T'. +neg56.fs(9,39,9,44): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'member C.A: unit -> 'T'. -neg56.fs(12,36,12,41): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'member C.A : unit -> 'T'. +neg56.fs(12,36,12,41): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'member C.A: unit -> 'T'. -neg56.fs(15,39,15,44): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'member C.A : unit -> 'T'. +neg56.fs(15,39,15,44): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'member C.A: unit -> 'T'. -neg56.fs(26,30,26,43): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member C.A : unit -> 'T'. +neg56.fs(26,30,26,43): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member C.A: unit -> 'T'. -neg56.fs(27,30,27,40): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member C.A : unit -> 'T'. +neg56.fs(27,30,27,40): typecheck error FS3068: The function or member 'A' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member C.A: unit -> 'T'. diff --git a/tests/fsharp/typecheck/sigs/neg56_b.bsl b/tests/fsharp/typecheck/sigs/neg56_b.bsl index c3bc36c80c7..4e844fe5979 100644 --- a/tests/fsharp/typecheck/sigs/neg56_b.bsl +++ b/tests/fsharp/typecheck/sigs/neg56_b.bsl @@ -1,8 +1,8 @@ -neg56_b.fs(8,36,8,39): typecheck error FS3068: The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member Foo.Inf : 'T ref'. +neg56_b.fs(8,36,8,39): typecheck error FS3068: The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member Foo.Inf: 'T ref'. -neg56_b.fs(15,37,15,40): typecheck error FS3068: The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member Foo2.Inf : 'T ref'. +neg56_b.fs(15,37,15,40): typecheck error FS3068: The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member Foo2.Inf: 'T ref'. -neg56_b.fs(26,13,26,23): typecheck error FS3068: The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member private Foo.Inf : ('T list -> 'T list)'. +neg56_b.fs(26,13,26,23): typecheck error FS3068: The function or member 'Inf' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member private Foo.Inf: ('T list -> 'T list)'. -neg56_b.fs(36,13,36,23): typecheck error FS3068: The function or member 'Foo' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member private Qux.Foo : ('T list -> 'T list)'. +neg56_b.fs(36,13,36,23): typecheck error FS3068: The function or member 'Foo' is used in a way that requires further type annotations at its definition to ensure consistency of inferred types. The inferred signature is 'static member private Qux.Foo: ('T list -> 'T list)'. diff --git a/tests/fsharp/typecheck/sigs/neg58.bsl b/tests/fsharp/typecheck/sigs/neg58.bsl index 8d1acf45492..7eb33661582 100644 --- a/tests/fsharp/typecheck/sigs/neg58.bsl +++ b/tests/fsharp/typecheck/sigs/neg58.bsl @@ -2,7 +2,7 @@ neg58.fs(5,6,5,9): typecheck error FS0314: The type definitions for type 'Foo' in the signature and implementation are not compatible because the field 'offset' was present in the implementation but not in the signature. Struct types must now reveal their fields in the signature for the type, though the fields may still be labelled 'private' or 'internal'. neg58.fs(9,17,9,30): typecheck error FS0034: Module 'FooBarSoftware' contains - override Foo.GetEnumerator : unit -> IEnumerator<'T> + override Foo.GetEnumerator: unit -> IEnumerator<'T> but its signature specifies - member Foo.GetEnumerator : unit -> IEnumerator<'T> + member Foo.GetEnumerator: unit -> IEnumerator<'T> The compiled names differ diff --git a/tests/fsharp/typecheck/sigs/neg61.bsl b/tests/fsharp/typecheck/sigs/neg61.bsl index 5b1ecfb7c66..e4657e510b1 100644 --- a/tests/fsharp/typecheck/sigs/neg61.bsl +++ b/tests/fsharp/typecheck/sigs/neg61.bsl @@ -88,8 +88,8 @@ neg61.fs(174,22,174,23): typecheck error FS0041: No overloads match for method ' Known type of argument: int Available overloads: - - member Linq.QueryBuilder.Source : source:System.Collections.Generic.IEnumerable<'T> -> Linq.QuerySource<'T,System.Collections.IEnumerable> // Argument 'source' doesn't match - - member Linq.QueryBuilder.Source : source:System.Linq.IQueryable<'T> -> Linq.QuerySource<'T,'Q> // Argument 'source' doesn't match + - member Linq.QueryBuilder.Source: source: System.Collections.Generic.IEnumerable<'T> -> Linq.QuerySource<'T,System.Collections.IEnumerable> // Argument 'source' doesn't match + - member Linq.QueryBuilder.Source: source: System.Linq.IQueryable<'T> -> Linq.QuerySource<'T,'Q> // Argument 'source' doesn't match neg61.fs(180,19,180,31): typecheck error FS3153: Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)' @@ -99,4 +99,4 @@ neg61.fs(191,21,191,33): typecheck error FS3153: Arguments to query operators ma neg61.fs(197,21,197,33): typecheck error FS3153: Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)' -neg61.fs(202,20,202,31): typecheck error FS3153: Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)' \ No newline at end of file +neg61.fs(202,20,202,31): typecheck error FS3153: Arguments to query operators may require parentheses, e.g. 'where (x > y)' or 'groupBy (x.Length / 10)' diff --git a/tests/fsharp/typecheck/sigs/neg98.bsl b/tests/fsharp/typecheck/sigs/neg98.bsl index 0ec384e7e58..c049a325a8b 100644 --- a/tests/fsharp/typecheck/sigs/neg98.bsl +++ b/tests/fsharp/typecheck/sigs/neg98.bsl @@ -1,5 +1,5 @@ -neg98.fs(10,20,10,34): typecheck error FS0768: The member 'Eval' does not accept the correct number of arguments. 2 argument(s) are expected, but 2 were given. The required signature is 'member Evaluator.Eval : ('t -> 'u) -> 'u list -> 'ret'. +neg98.fs(10,20,10,34): typecheck error FS0768: The member 'Eval' does not accept the correct number of arguments. 2 argument(s) are expected, but 2 were given. The required signature is 'Evaluator.Eval: ('t -> 'u) -> 'u list -> 'ret'. neg98.fs(10,23,10,27): typecheck error FS0017: The member 'Eval: 'a * 'b -> 'c' does not have the correct type to override the corresponding abstract method. The required signature is 'Eval<'u> : ('t -> 'u) -> 'u list -> 'a'. diff --git a/tests/fsharp/typecheck/sigs/version46/neg24.bsl b/tests/fsharp/typecheck/sigs/version46/neg24.bsl index b782269bb54..97aa11a5d26 100644 --- a/tests/fsharp/typecheck/sigs/version46/neg24.bsl +++ b/tests/fsharp/typecheck/sigs/version46/neg24.bsl @@ -27,4 +27,4 @@ neg24.fs(62,31,62,41): typecheck error FS0816: One or more of the overloads of t neg24.fs(64,44,64,48): typecheck error FS0816: One or more of the overloads of this method has curried arguments. Consider redesigning these members to take arguments in tupled form. -neg24.fs(70,15,70,18): typecheck error FS0495: The member or object constructor 'M' has no argument or settable return property 'qez'. The required signature is member C.M : abc:int * def:string -> int. +neg24.fs(70,15,70,18): typecheck error FS0495: The member or object constructor 'M' has no argument or settable return property 'qez'. The required signature is member C.M: abc: int * def: string -> int. diff --git a/tests/fsharp/typecheck/sigs/version47/neg24.bsl b/tests/fsharp/typecheck/sigs/version47/neg24.bsl index 92b7eacaa73..50782788689 100644 --- a/tests/fsharp/typecheck/sigs/version47/neg24.bsl +++ b/tests/fsharp/typecheck/sigs/version47/neg24.bsl @@ -11,7 +11,7 @@ neg24.fs(62,31,62,41): typecheck error FS0816: One or more of the overloads of t neg24.fs(64,44,64,48): typecheck error FS0816: One or more of the overloads of this method has curried arguments. Consider redesigning these members to take arguments in tupled form. -neg24.fs(70,15,70,18): typecheck error FS0495: The member or object constructor 'M' has no argument or settable return property 'qez'. The required signature is member C.M : abc:int * def:string -> int. +neg24.fs(70,15,70,18): typecheck error FS0495: The member or object constructor 'M' has no argument or settable return property 'qez'. The required signature is member C.M: abc: int * def: string -> int. neg24.fs(300,29,300,30): typecheck error FS0020: The result of this expression has type 'int' and is implicitly ignored. Consider using 'ignore' to discard this value explicitly, e.g. 'expr |> ignore', or 'let' to bind the result to a name, e.g. 'let result = expr'. diff --git a/tests/fsharp/typecheck/sigs/version50/neg20.bsl b/tests/fsharp/typecheck/sigs/version50/neg20.bsl index 88d816d6644..eaa88baa877 100644 --- a/tests/fsharp/typecheck/sigs/version50/neg20.bsl +++ b/tests/fsharp/typecheck/sigs/version50/neg20.bsl @@ -164,44 +164,44 @@ neg20.fs(131,5,131,24): typecheck error FS0041: No overloads match for method 'O Known types of arguments: string * obj Available overloads: - - static member C.OM3 : x:'b * y:'b -> int // Argument 'y' doesn't match - - static member C.OM3 : x:'b * y:int -> int // Argument 'y' doesn't match + - static member C.OM3: x: 'b * y: 'b -> int // Argument 'y' doesn't match + - static member C.OM3: x: 'b * y: int -> int // Argument 'y' doesn't match neg20.fs(152,13,152,23): typecheck error FS0033: The type 'Test.BadNumberOfGenericParameters.C<_>' expects 1 type argument(s) but is given 2 neg20.fs(153,13,153,23): typecheck error FS0033: The type 'Test.BadNumberOfGenericParameters.C<_>' expects 1 type argument(s) but is given 2 -neg20.fs(154,13,154,25): typecheck error FS0502: The member or object constructor 'SM1' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM1 : unit -> int'. +neg20.fs(154,13,154,25): typecheck error FS0502: The member or object constructor 'SM1' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM1: unit -> int'. -neg20.fs(155,13,155,26): typecheck error FS0502: The member or object constructor 'SM2' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM2 : y:int -> int'. +neg20.fs(155,13,155,26): typecheck error FS0502: The member or object constructor 'SM2' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM2: y: int -> int'. -neg20.fs(156,13,156,28): typecheck error FS0502: The member or object constructor 'SM3' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM3 : y:int * z:int -> int'. +neg20.fs(156,13,156,28): typecheck error FS0502: The member or object constructor 'SM3' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM3: y: int * z: int -> int'. -neg20.fs(157,28,157,29): typecheck error FS0495: The member or object constructor 'SM3' has no argument or settable return property 'x'. The required signature is static member C.SM3 : y:int * z:int -> int. +neg20.fs(157,28,157,29): typecheck error FS0495: The member or object constructor 'SM3' has no argument or settable return property 'x'. The required signature is static member C.SM3: y: int * z: int -> int. -neg20.fs(158,13,158,36): typecheck error FS0502: The member or object constructor 'SM4' takes 1 type argument(s) but is here given 2. The required signature is 'static member C.SM4 : y:'a * z:'b -> int'. +neg20.fs(158,13,158,36): typecheck error FS0502: The member or object constructor 'SM4' takes 1 type argument(s) but is here given 2. The required signature is 'static member C.SM4: y: 'a * z: 'b -> int'. -neg20.fs(159,13,159,32): typecheck error FS0502: The member or object constructor 'SM5' takes 2 type argument(s) but is here given 1. The required signature is 'static member C.SM5 : y:'a * z:'b -> int'. +neg20.fs(159,13,159,32): typecheck error FS0502: The member or object constructor 'SM5' takes 2 type argument(s) but is here given 1. The required signature is 'static member C.SM5: y: 'a * z: 'b -> int'. -neg20.fs(162,13,162,24): typecheck error FS0502: The member or object constructor 'M1' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M1 : unit -> int'. +neg20.fs(162,13,162,24): typecheck error FS0502: The member or object constructor 'M1' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M1: unit -> int'. -neg20.fs(163,13,163,25): typecheck error FS0502: The member or object constructor 'M2' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M2 : y:int -> int'. +neg20.fs(163,13,163,25): typecheck error FS0502: The member or object constructor 'M2' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M2: y: int -> int'. -neg20.fs(164,13,164,27): typecheck error FS0502: The member or object constructor 'M3' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M3 : y:int * z:int -> int'. +neg20.fs(164,13,164,27): typecheck error FS0502: The member or object constructor 'M3' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M3: y: int * z: int -> int'. -neg20.fs(165,27,165,28): typecheck error FS0495: The member or object constructor 'M3' has no argument or settable return property 'x'. The required signature is member C.M3 : y:int * z:int -> int. +neg20.fs(165,27,165,28): typecheck error FS0495: The member or object constructor 'M3' has no argument or settable return property 'x'. The required signature is member C.M3: y: int * z: int -> int. -neg20.fs(166,13,166,35): typecheck error FS0502: The member or object constructor 'M4' takes 1 type argument(s) but is here given 2. The required signature is 'member C.M4 : y:'a * z:'b -> int'. +neg20.fs(166,13,166,35): typecheck error FS0502: The member or object constructor 'M4' takes 1 type argument(s) but is here given 2. The required signature is 'member C.M4: y: 'a * z: 'b -> int'. -neg20.fs(167,13,167,31): typecheck error FS0502: The member or object constructor 'M5' takes 2 type argument(s) but is here given 1. The required signature is 'member C.M5 : y:'a * z:'b -> int'. +neg20.fs(167,13,167,31): typecheck error FS0502: The member or object constructor 'M5' takes 2 type argument(s) but is here given 1. The required signature is 'member C.M5: y: 'a * z: 'b -> int'. neg20.fs(182,14,182,31): typecheck error FS0041: No overloads match for method 'M'. Known types of arguments: string * obj Available overloads: - - static member C2.M : fmt:string * [] args:int [] -> string // Argument 'args' doesn't match - - static member C2.M : fmt:string * [] args:int [] -> string // Argument at index 1 doesn't match + - static member C2.M: fmt: string * [] args: int[] -> string // Argument 'args' doesn't match + - static member C2.M: fmt: string * [] args: int[] -> string // Argument at index 1 doesn't match neg20.fs(183,29,183,34): typecheck error FS0001: This expression was expected to have type 'int' @@ -253,8 +253,8 @@ neg20.fs(188,14,188,31): typecheck error FS0041: No overloads match for method ' Known types of arguments: string * obj Available overloads: - - static member C3.M : fmt:string * [] args:string [] -> string // Argument 'args' doesn't match - - static member C3.M : fmt:string * [] args:string [] -> string // Argument at index 1 doesn't match + - static member C3.M: fmt: string * [] args: string[] -> string // Argument 'args' doesn't match + - static member C3.M: fmt: string * [] args: string[] -> string // Argument at index 1 doesn't match neg20.fs(189,29,189,34): typecheck error FS0001: This expression was expected to have type 'string' @@ -382,7 +382,7 @@ neg20.fs(335,11,335,24): typecheck error FS0041: A unique overload for method 'S Known type of argument: 'a0 Candidates: - - System.String(value: char []) : System.String + - System.String(value: char[]) : System.String - System.String(value: nativeptr) : System.String - System.String(value: nativeptr) : System.String @@ -391,7 +391,7 @@ neg20.fs(336,11,336,22): typecheck error FS0041: A unique overload for method 'G Known type of argument: 'a0 Candidates: - - System.Guid(b: byte []) : System.Guid + - System.Guid(b: byte[]) : System.Guid - System.Guid(g: string) : System.Guid neg20.fs(355,19,355,38): typecheck error FS1124: Multiple types exist called 'OverloadedClassName', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. 'OverloadedClassName<_>'. From 242e3fe14a10c114b16b4356b7c77b4f02228968 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 03:19:07 +0100 Subject: [PATCH 12/25] update more tests --- src/fsharp/NicePrint.fs | 23 +- ...erService.SurfaceArea.netstandard.expected | 66 +- .../expressions/syntacticsugar/E_Slices01.bsl | 16 +- .../E_RigidTypeAnnotation03.bsl | 40 +- .../E_LeftToRightOverloadResolution01.bsl | 8 +- .../inference/E_OneTypeVariable03.bsl | 10 +- .../inference/E_OneTypeVariable03rec.bsl | 10 +- .../E_TwoDifferentTypeVariables01.bsl | 16 +- .../E_TwoDifferentTypeVariables01rec.bsl | 16 +- .../E_TwoDifferentTypeVariablesGen00.bsl | 12 +- .../E_TwoDifferentTypeVariablesGen00rec.bsl | 12 +- .../inference/E_TwoEqualTypeVariables02.bsl | 30 +- .../E_TwoEqualYypeVariables02rec.bsl | 30 +- .../E_LessThanDotOpenParen001.bsl | 24 +- .../E_Clashing_Values_in_AbstractClass01.bsl | 4 +- .../E_Clashing_Values_in_AbstractClass03.bsl | 8 +- .../E_Clashing_Values_in_AbstractClass04.bsl | 8 +- .../effects.HasEffect.output.test.bsl | 14 +- .../5531/compilation.output.test.bsl | 2 +- ...g_System.Convert.ToString.OverloadList.bsl | 2 +- ....Threading.Tasks.Task.Run.OverloadList.bsl | 24 +- .../overloads/neg_interface_generics.bsl | 4 +- .../overloads/neg_many_many_overloads.bsl | 650 +++++++++--------- .../overloads/neg_tupled_arguments.bsl | 8 +- tests/fsharp/typecheck/sigs/neg20.bsl | 40 +- tests/service/PatternMatchCompilationTests.fs | 86 +-- 26 files changed, 585 insertions(+), 578 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 4b7e73832aa..9dfe276b21f 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1215,7 +1215,7 @@ module private PrintTastMemberOrVals = | None -> valAndTypeL | Some rhsL -> (valAndTypeL ++ WordL.equals) --- rhsL match v.LiteralValue with - | Some literalValue -> valAndTypeL ++ layoutOfLiteralValue literalValue + | Some literalValue -> valAndTypeL --- layoutOfLiteralValue literalValue | None -> valAndTypeL let prettyLayoutOfValOrMember denv infoReader typarInst (vref: ValRef) = @@ -1668,17 +1668,22 @@ module private TastDefinitionPrinting = let meths = GetImmediateIntrinsicMethInfosOfType (None, ad) g amap m ty - |> List.filter (fun m -> - not m.IsClassConstructor && - not m.IsConstructor && - shouldShow m.ArbitraryValRef && - not (impliedNames.Contains m.DisplayName) && - not (m.DisplayName.Split('.') |> Array.exists (fun part -> isDiscard part))) + |> List.filter (fun minfo -> + not minfo.IsClassConstructor && + not minfo.IsConstructor && + shouldShow minfo.ArbitraryValRef && + not (impliedNames.Contains minfo.DisplayName) && + IsMethInfoAccessible amap m ad minfo && + // Discard method impls such as System.IConvertible.ToBoolean + not (minfo.IsILMethod && minfo.DisplayName.Contains(".")) && + not (minfo.DisplayName.Split('.') |> Array.exists (fun part -> isDiscard part))) let ilFields = infoReader.GetILFieldInfosOfType (None, ad, m, ty) - |> List.filter (fun fld -> IsILFieldInfoAccessible g amap m ad fld && not (isDiscard fld.FieldName)) - |> List.filter (fun fld -> typeEquiv g ty fld.ApparentEnclosingType) + |> List.filter (fun fld -> + IsILFieldInfoAccessible g amap m ad fld && + not (isDiscard fld.FieldName) && + typeEquiv g ty fld.ApparentEnclosingType) let ctorLs = if denv.shrinkOverloads then diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected index 05ec57601fd..5942acab78f 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected @@ -327,6 +327,30 @@ FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Microsoft.FSharp.Collections.F FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType] get_ArgTypes() FSharp.Compiler.AbstractIL.IL+ILCallingSignature: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Void .ctor(ILCallingConv, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType], ILType) +FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportNamespace: System.String get_targetNamespace() +FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportNamespace: System.String targetNamespace +FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportType: ILType get_targetType() +FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportType: ILType targetType +FSharp.Compiler.AbstractIL.IL+ILDebugImport+Tags: Int32 ImportNamespace +FSharp.Compiler.AbstractIL.IL+ILDebugImport+Tags: Int32 ImportType +FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean IsImportNamespace +FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean IsImportType +FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean get_IsImportNamespace() +FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean get_IsImportType() +FSharp.Compiler.AbstractIL.IL+ILDebugImport: FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportNamespace +FSharp.Compiler.AbstractIL.IL+ILDebugImport: FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportType +FSharp.Compiler.AbstractIL.IL+ILDebugImport: FSharp.Compiler.AbstractIL.IL+ILDebugImport+Tags +FSharp.Compiler.AbstractIL.IL+ILDebugImport: ILDebugImport NewImportNamespace(System.String) +FSharp.Compiler.AbstractIL.IL+ILDebugImport: ILDebugImport NewImportType(ILType) +FSharp.Compiler.AbstractIL.IL+ILDebugImport: Int32 Tag +FSharp.Compiler.AbstractIL.IL+ILDebugImport: Int32 get_Tag() +FSharp.Compiler.AbstractIL.IL+ILDebugImport: System.String ToString() +FSharp.Compiler.AbstractIL.IL+ILDebugImports: ILDebugImport[] Imports +FSharp.Compiler.AbstractIL.IL+ILDebugImports: ILDebugImport[] get_Imports() +FSharp.Compiler.AbstractIL.IL+ILDebugImports: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILDebugImports] Parent +FSharp.Compiler.AbstractIL.IL+ILDebugImports: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILDebugImports] get_Parent() +FSharp.Compiler.AbstractIL.IL+ILDebugImports: System.String ToString() +FSharp.Compiler.AbstractIL.IL+ILDebugImports: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILDebugImports], ILDebugImport[]) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Ansi FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Auto FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Unicode @@ -1730,6 +1754,8 @@ FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILAttributes FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILAttributesStored FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILCallingConv FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILCallingSignature +FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILDebugImport +FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILDebugImports FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILEventDef FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILEventDefs @@ -5603,25 +5629,27 @@ FSharp.Compiler.Syntax.ParserDetail: Int32 Tag FSharp.Compiler.Syntax.ParserDetail: Int32 get_Tag() FSharp.Compiler.Syntax.ParserDetail: System.String ToString() FSharp.Compiler.Syntax.PrettyNaming +FSharp.Compiler.Syntax.PrettyNaming: Boolean DoesIdentifierNeedBackticks(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsActivePatternName(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsCompilerGeneratedName(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsIdentifierFirstCharacter(Char) +FSharp.Compiler.Syntax.PrettyNaming: Boolean IsIdentifierName(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsIdentifierPartCharacter(Char) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsInfixOperator(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsLongIdentifierPartCharacter(Char) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsMangledOpName(System.String) -FSharp.Compiler.Syntax.PrettyNaming: Boolean IsOperatorName(System.String) -FSharp.Compiler.Syntax.PrettyNaming: Boolean IsOperatorOrBacktickedName(System.String) +FSharp.Compiler.Syntax.PrettyNaming: Boolean IsOperatorDisplayName(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsPrefixOperator(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsPunctuation(System.String) FSharp.Compiler.Syntax.PrettyNaming: Boolean IsTernaryOperator(System.String) FSharp.Compiler.Syntax.PrettyNaming: Microsoft.FSharp.Collections.FSharpList`1[System.String] GetLongNameFromString(System.String) FSharp.Compiler.Syntax.PrettyNaming: Microsoft.FSharp.Core.FSharpOption`1[System.String] TryChopPropertyName(System.String) +FSharp.Compiler.Syntax.PrettyNaming: System.String AddBackticksToIdentifierIfNeeded(System.String) FSharp.Compiler.Syntax.PrettyNaming: System.String CompileOpName(System.String) FSharp.Compiler.Syntax.PrettyNaming: System.String DecompileOpName(System.String) -FSharp.Compiler.Syntax.PrettyNaming: System.String DemangleOperatorName(System.String) FSharp.Compiler.Syntax.PrettyNaming: System.String FormatAndOtherOverloadsString(Int32) FSharp.Compiler.Syntax.PrettyNaming: System.String FsiDynamicModulePrefix +FSharp.Compiler.Syntax.PrettyNaming: System.String NormalizeIdentifierBackticks(System.String) FSharp.Compiler.Syntax.PrettyNaming: System.String get_FsiDynamicModulePrefix() FSharp.Compiler.Syntax.QualifiedNameOfFile FSharp.Compiler.Syntax.QualifiedNameOfFile: FSharp.Compiler.Syntax.Ident Id @@ -9214,13 +9242,13 @@ FSharp.Compiler.Text.TextTag: Int32 Tag FSharp.Compiler.Text.TextTag: Int32 get_Tag() FSharp.Compiler.Text.TextTag: System.String ToString() FSharp.Compiler.Tokenization.FSharpKeywords -FSharp.Compiler.Tokenization.FSharpKeywords: Boolean DoesIdentifierNeedQuotation(System.String) +FSharp.Compiler.Tokenization.FSharpKeywords: Boolean DoesIdentifierNeedBackticks(System.String) FSharp.Compiler.Tokenization.FSharpKeywords: Microsoft.FSharp.Collections.FSharpList`1[System.String] KeywordNames FSharp.Compiler.Tokenization.FSharpKeywords: Microsoft.FSharp.Collections.FSharpList`1[System.String] get_KeywordNames() FSharp.Compiler.Tokenization.FSharpKeywords: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] KeywordsWithDescription FSharp.Compiler.Tokenization.FSharpKeywords: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.String,System.String]] get_KeywordsWithDescription() +FSharp.Compiler.Tokenization.FSharpKeywords: System.String AddBackticksToIdentifierIfNeeded(System.String) FSharp.Compiler.Tokenization.FSharpKeywords: System.String NormalizeIdentifierBackticks(System.String) -FSharp.Compiler.Tokenization.FSharpKeywords: System.String QuoteIdentifierIfNeeded(System.String) FSharp.Compiler.Tokenization.FSharpLexer FSharp.Compiler.Tokenization.FSharpLexer: Void Tokenize(FSharp.Compiler.Text.ISourceText, Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Tokenization.FSharpToken,Microsoft.FSharp.Core.Unit], Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[System.String], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[System.String]], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Tokenization.FSharpLexerFlags], Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpMap`2[System.String,System.String]], Microsoft.FSharp.Core.FSharpOption`1[System.Threading.CancellationToken]) FSharp.Compiler.Tokenization.FSharpLexerFlags @@ -10464,30 +10492,4 @@ FSharp.Compiler.Xml.XmlDoc: System.String GetXmlText() FSharp.Compiler.Xml.XmlDoc: System.String[] GetElaboratedXmlLines() FSharp.Compiler.Xml.XmlDoc: System.String[] UnprocessedLines FSharp.Compiler.Xml.XmlDoc: System.String[] get_UnprocessedLines() -FSharp.Compiler.Xml.XmlDoc: Void .ctor(System.String[], FSharp.Compiler.Text.Range) -FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportNamespace: System.String get_targetNamespace() -FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportNamespace: System.String targetNamespace -FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportType: ILType get_targetType() -FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportType: ILType targetType -FSharp.Compiler.AbstractIL.IL+ILDebugImport+Tags: Int32 ImportNamespace -FSharp.Compiler.AbstractIL.IL+ILDebugImport+Tags: Int32 ImportType -FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean IsImportNamespace -FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean IsImportType -FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean get_IsImportNamespace() -FSharp.Compiler.AbstractIL.IL+ILDebugImport: Boolean get_IsImportType() -FSharp.Compiler.AbstractIL.IL+ILDebugImport: FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportNamespace -FSharp.Compiler.AbstractIL.IL+ILDebugImport: FSharp.Compiler.AbstractIL.IL+ILDebugImport+ImportType -FSharp.Compiler.AbstractIL.IL+ILDebugImport: FSharp.Compiler.AbstractIL.IL+ILDebugImport+Tags -FSharp.Compiler.AbstractIL.IL+ILDebugImport: ILDebugImport NewImportNamespace(System.String) -FSharp.Compiler.AbstractIL.IL+ILDebugImport: ILDebugImport NewImportType(ILType) -FSharp.Compiler.AbstractIL.IL+ILDebugImport: Int32 Tag -FSharp.Compiler.AbstractIL.IL+ILDebugImport: Int32 get_Tag() -FSharp.Compiler.AbstractIL.IL+ILDebugImport: System.String ToString() -FSharp.Compiler.AbstractIL.IL+ILDebugImports: ILDebugImport[] Imports -FSharp.Compiler.AbstractIL.IL+ILDebugImports: ILDebugImport[] get_Imports() -FSharp.Compiler.AbstractIL.IL+ILDebugImports: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILDebugImports] Parent -FSharp.Compiler.AbstractIL.IL+ILDebugImports: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILDebugImports] get_Parent() -FSharp.Compiler.AbstractIL.IL+ILDebugImports: System.String ToString() -FSharp.Compiler.AbstractIL.IL+ILDebugImports: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILDebugImports], ILDebugImport[]) -FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILDebugImport -FSharp.Compiler.AbstractIL.IL: FSharp.Compiler.AbstractIL.IL+ILDebugImports +FSharp.Compiler.Xml.XmlDoc: Void .ctor(System.String[], FSharp.Compiler.Text.Range) \ No newline at end of file diff --git a/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl b/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl index 6cf7778a869..d673956c702 100644 --- a/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl +++ b/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl @@ -4,32 +4,32 @@ E_Slices01.fsx(15,9,15,19): typecheck error FS0041: A unique overload for method Known types of arguments: int * int option * 'a option Candidates: - - member Foo.GetSlice : x:int * y1:int option * y2:float option -> unit - - member Foo.GetSlice : x:int * y1:int option * y2:int option -> unit + - member Foo.GetSlice: x: int * y1: int option * y2: float option -> unit + - member Foo.GetSlice: x: int * y1: int option * y2: int option -> unit E_Slices01.fsx(16,9,16,17): typecheck error FS0041: A unique overload for method 'GetSlice' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: int * 'a option * 'b option Candidates: - - member Foo.GetSlice : x:int * y1:int option * y2:float option -> unit - - member Foo.GetSlice : x:int * y1:int option * y2:int option -> unit + - member Foo.GetSlice: x: int * y1: int option * y2: float option -> unit + - member Foo.GetSlice: x: int * y1: int option * y2: int option -> unit E_Slices01.fsx(17,9,17,19): typecheck error FS0041: A unique overload for method 'GetSlice' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a option * int option * int Candidates: - - member Foo.GetSlice : x1:float option * x2:int option * y:int -> unit - - member Foo.GetSlice : x1:int option * x2:int option * y:int -> unit + - member Foo.GetSlice: x1: float option * x2: int option * y: int -> unit + - member Foo.GetSlice: x1: int option * x2: int option * y: int -> unit E_Slices01.fsx(18,9,18,17): typecheck error FS0041: A unique overload for method 'GetSlice' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a option * 'b option * int Candidates: - - member Foo.GetSlice : x1:float option * x2:int option * y:int -> unit - - member Foo.GetSlice : x1:int option * x2:int option * y:int -> unit + - member Foo.GetSlice: x1: float option * x2: int option * y: int -> unit + - member Foo.GetSlice: x1: int option * x2: int option * y: int -> unit E_Slices01.fsx(19,9,19,17): typecheck error FS0039: The type 'Foo' does not define the field, constructor or member 'Item'. diff --git a/tests/fsharp/conformance/expressions/type-relatedexpressions/E_RigidTypeAnnotation03.bsl b/tests/fsharp/conformance/expressions/type-relatedexpressions/E_RigidTypeAnnotation03.bsl index 050ab182d77..974190e66a3 100644 --- a/tests/fsharp/conformance/expressions/type-relatedexpressions/E_RigidTypeAnnotation03.bsl +++ b/tests/fsharp/conformance/expressions/type-relatedexpressions/E_RigidTypeAnnotation03.bsl @@ -9,11 +9,11 @@ E_RigidTypeAnnotation03.fsx(17,9,17,25): typecheck error FS0041: No overloads ma Known type of argument: sbyte Available overloads: - - static member T.M : a:byte -> int // Argument 'a' doesn't match - - static member T.M : a:decimal -> int // Argument 'a' doesn't match - - static member T.M : a:float -> int // Argument 'a' doesn't match - - static member T.M : a:float32 -> int // Argument 'a' doesn't match - - static member T.M : a:string -> int // Argument 'a' doesn't match + - static member T.M: a: byte -> int // Argument 'a' doesn't match + - static member T.M: a: decimal -> int // Argument 'a' doesn't match + - static member T.M: a: float -> int // Argument 'a' doesn't match + - static member T.M: a: float32 -> int // Argument 'a' doesn't match + - static member T.M: a: string -> int // Argument 'a' doesn't match E_RigidTypeAnnotation03.fsx(18,13,18,19): typecheck error FS0001: This expression was expected to have type 'float32' @@ -25,11 +25,11 @@ E_RigidTypeAnnotation03.fsx(18,9,18,30): typecheck error FS0041: No overloads ma Known type of argument: float32 Available overloads: - - static member T.M : a:byte -> int // Argument 'a' doesn't match - - static member T.M : a:decimal -> int // Argument 'a' doesn't match - - static member T.M : a:float -> int // Argument 'a' doesn't match - - static member T.M : a:float32 -> int // Argument 'a' doesn't match - - static member T.M : a:string -> int // Argument 'a' doesn't match + - static member T.M: a: byte -> int // Argument 'a' doesn't match + - static member T.M: a: decimal -> int // Argument 'a' doesn't match + - static member T.M: a: float -> int // Argument 'a' doesn't match + - static member T.M: a: float32 -> int // Argument 'a' doesn't match + - static member T.M: a: string -> int // Argument 'a' doesn't match E_RigidTypeAnnotation03.fsx(19,13,19,20): typecheck error FS0001: This expression was expected to have type 'float32<'u>' @@ -47,11 +47,11 @@ E_RigidTypeAnnotation03.fsx(20,9,20,39): typecheck error FS0041: No overloads ma Known type of argument: decimal Available overloads: - - static member T.M : a:byte -> int // Argument 'a' doesn't match - - static member T.M : a:decimal -> int // Argument 'a' doesn't match - - static member T.M : a:float -> int // Argument 'a' doesn't match - - static member T.M : a:float32 -> int // Argument 'a' doesn't match - - static member T.M : a:string -> int // Argument 'a' doesn't match + - static member T.M: a: byte -> int // Argument 'a' doesn't match + - static member T.M: a: decimal -> int // Argument 'a' doesn't match + - static member T.M: a: float -> int // Argument 'a' doesn't match + - static member T.M: a: float32 -> int // Argument 'a' doesn't match + - static member T.M: a: string -> int // Argument 'a' doesn't match E_RigidTypeAnnotation03.fsx(21,14,21,18): typecheck error FS0001: This expression was expected to have type 'char' @@ -63,8 +63,8 @@ E_RigidTypeAnnotation03.fsx(21,9,21,27): typecheck error FS0041: No overloads ma Known type of argument: char Available overloads: - - static member T.M : a:byte -> int // Argument 'a' doesn't match - - static member T.M : a:decimal -> int // Argument 'a' doesn't match - - static member T.M : a:float -> int // Argument 'a' doesn't match - - static member T.M : a:float32 -> int // Argument 'a' doesn't match - - static member T.M : a:string -> int // Argument 'a' doesn't match + - static member T.M: a: byte -> int // Argument 'a' doesn't match + - static member T.M: a: decimal -> int // Argument 'a' doesn't match + - static member T.M: a: float -> int // Argument 'a' doesn't match + - static member T.M: a: float32 -> int // Argument 'a' doesn't match + - static member T.M: a: string -> int // Argument 'a' doesn't match diff --git a/tests/fsharp/conformance/inference/E_LeftToRightOverloadResolution01.bsl b/tests/fsharp/conformance/inference/E_LeftToRightOverloadResolution01.bsl index af2b7e02805..1eebf220332 100644 --- a/tests/fsharp/conformance/inference/E_LeftToRightOverloadResolution01.bsl +++ b/tests/fsharp/conformance/inference/E_LeftToRightOverloadResolution01.bsl @@ -4,8 +4,8 @@ E_LeftToRightOverloadResolution01.fsx(7,23,7,51): typecheck error FS0041: A uniq Known type of argument: 'a Candidates: - - System.Console.WriteLine(buffer: char []) : unit - - System.Console.WriteLine(format: string, [] arg: obj []) : unit + - System.Console.WriteLine(buffer: char[]) : unit + - System.Console.WriteLine(format: string, [] arg: obj[]) : unit - System.Console.WriteLine(value: bool) : unit - System.Console.WriteLine(value: char) : unit - System.Console.WriteLine(value: decimal) : unit @@ -23,8 +23,8 @@ E_LeftToRightOverloadResolution01.fsx(9,23,9,51): typecheck error FS0041: A uniq Known type of argument: 'a Candidates: - - System.Console.WriteLine(buffer: char []) : unit - - System.Console.WriteLine(format: string, [] arg: obj []) : unit + - System.Console.WriteLine(buffer: char[]) : unit + - System.Console.WriteLine(format: string, [] arg: obj[]) : unit - System.Console.WriteLine(value: bool) : unit - System.Console.WriteLine(value: char) : unit - System.Console.WriteLine(value: decimal) : unit diff --git a/tests/fsharp/conformance/inference/E_OneTypeVariable03.bsl b/tests/fsharp/conformance/inference/E_OneTypeVariable03.bsl index 4bfe7f854e2..e46f1757896 100644 --- a/tests/fsharp/conformance/inference/E_OneTypeVariable03.bsl +++ b/tests/fsharp/conformance/inference/E_OneTypeVariable03.bsl @@ -4,14 +4,14 @@ E_OneTypeVariable03.fsx(60,34,60,44): typecheck error FS0041: A unique overload Known types of arguments: 'a * int Candidates: - - static member C23.M : x:'a * y:'b -> Two - - static member C23.M : x:'a * y:int -> Three + - static member C23.M: x: 'a * y: 'b -> Two + - static member C23.M: x: 'a * y: int -> Three E_OneTypeVariable03.fsx(61,34,61,45): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * int Candidates: - - static member C123.M : x:'a * y:'a -> One - - static member C123.M : x:'a * y:'b -> Two - - static member C123.M : x:'a * y:int -> Three + - static member C123.M: x: 'a * y: 'a -> One + - static member C123.M: x: 'a * y: 'b -> Two + - static member C123.M: x: 'a * y: int -> Three diff --git a/tests/fsharp/conformance/inference/E_OneTypeVariable03rec.bsl b/tests/fsharp/conformance/inference/E_OneTypeVariable03rec.bsl index ebce435a102..3da07112f80 100644 --- a/tests/fsharp/conformance/inference/E_OneTypeVariable03rec.bsl +++ b/tests/fsharp/conformance/inference/E_OneTypeVariable03rec.bsl @@ -4,14 +4,14 @@ E_OneTypeVariable03rec.fsx(60,38,60,48): typecheck error FS0041: A unique overlo Known types of arguments: 'a * int Candidates: - - static member C23.M : x:'a * y:'b -> Two - - static member C23.M : x:'a * y:int -> Three + - static member C23.M: x: 'a * y: 'b -> Two + - static member C23.M: x: 'a * y: int -> Three E_OneTypeVariable03rec.fsx(61,38,61,49): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * int Candidates: - - static member C123.M : x:'a * y:'a -> One - - static member C123.M : x:'a * y:'b -> Two - - static member C123.M : x:'a * y:int -> Three + - static member C123.M: x: 'a * y: 'a -> One + - static member C123.M: x: 'a * y: 'b -> Two + - static member C123.M: x: 'a * y: int -> Three diff --git a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01.bsl b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01.bsl index 68f02f0b660..bef5539b00a 100644 --- a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01.bsl +++ b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01.bsl @@ -4,29 +4,29 @@ E_TwoDifferentTypeVariables01.fsx(61,33,61,43): typecheck error FS0041: A unique Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariables01.fsx(62,33,62,43): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'b Candidates: - - static member C24.M : x:'a * y:'b -> Two - - static member C24.M : x:'a * y:C -> Four + - static member C24.M: x: 'a * y: 'b -> Two + - static member C24.M: x: 'a * y: C -> Four E_TwoDifferentTypeVariables01.fsx(63,33,63,47): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariables01.fsx(64,33,64,46): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three diff --git a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01rec.bsl b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01rec.bsl index ebce84002e8..c00efb90a64 100644 --- a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01rec.bsl +++ b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariables01rec.bsl @@ -4,29 +4,29 @@ E_TwoDifferentTypeVariables01rec.fsx(60,37,60,47): typecheck error FS0041: A uni Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariables01rec.fsx(61,37,61,47): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'b Candidates: - - static member C24.M : x:'a * y:'b -> Two - - static member C24.M : x:'a * y:C -> Four + - static member C24.M: x: 'a * y: 'b -> Two + - static member C24.M: x: 'a * y: C -> Four E_TwoDifferentTypeVariables01rec.fsx(62,37,62,51): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariables01rec.fsx(63,37,63,50): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three diff --git a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00.bsl b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00.bsl index c7e86d6047f..b8d0b1ba38c 100644 --- a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00.bsl +++ b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00.bsl @@ -14,8 +14,8 @@ E_TwoDifferentTypeVariablesGen00.fsx(63,45,63,55): typecheck error FS0041: A uni Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariablesGen00.fsx(64,56,64,57): typecheck error FS0064: This construct causes code to be less generic than indicated by the type annotations. The type variable 'a has been constrained to be type ''b'. @@ -34,8 +34,8 @@ E_TwoDifferentTypeVariablesGen00.fsx(66,45,66,59): typecheck error FS0041: A uni Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariablesGen00.fsx(67,55,67,56): typecheck error FS0064: This construct causes code to be less generic than indicated by the type annotations. The type variable 'a has been constrained to be type ''b'. @@ -48,8 +48,8 @@ E_TwoDifferentTypeVariablesGen00.fsx(68,45,68,58): typecheck error FS0041: A uni Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariablesGen00.fsx(69,55,69,56): typecheck error FS0064: This construct causes code to be less generic than indicated by the type annotations. The type variable 'b has been constrained to be type 'int'. diff --git a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00rec.bsl b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00rec.bsl index d1d42d2fa4a..f24aa582b86 100644 --- a/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00rec.bsl +++ b/tests/fsharp/conformance/inference/E_TwoDifferentTypeVariablesGen00rec.bsl @@ -14,8 +14,8 @@ E_TwoDifferentTypeVariablesGen00rec.fsx(63,45,63,55): typecheck error FS0041: A Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariablesGen00rec.fsx(64,56,64,57): typecheck error FS0064: This construct causes code to be less generic than indicated by the type annotations. The type variable 'a has been constrained to be type ''b'. @@ -34,8 +34,8 @@ E_TwoDifferentTypeVariablesGen00rec.fsx(66,45,66,59): typecheck error FS0041: A Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariablesGen00rec.fsx(67,55,67,56): typecheck error FS0064: This construct causes code to be less generic than indicated by the type annotations. The type variable 'a has been constrained to be type ''b'. @@ -48,8 +48,8 @@ E_TwoDifferentTypeVariablesGen00rec.fsx(68,45,68,58): typecheck error FS0041: A Known types of arguments: 'a * 'b Candidates: - - static member C13.M : x:'a * y:'a -> One - - static member C13.M : x:'a * y:int -> Three + - static member C13.M: x: 'a * y: 'a -> One + - static member C13.M: x: 'a * y: int -> Three E_TwoDifferentTypeVariablesGen00rec.fsx(69,55,69,56): typecheck error FS0064: This construct causes code to be less generic than indicated by the type annotations. The type variable 'b has been constrained to be type 'int'. diff --git a/tests/fsharp/conformance/inference/E_TwoEqualTypeVariables02.bsl b/tests/fsharp/conformance/inference/E_TwoEqualTypeVariables02.bsl index e1ce253e983..d9df255dd5a 100644 --- a/tests/fsharp/conformance/inference/E_TwoEqualTypeVariables02.bsl +++ b/tests/fsharp/conformance/inference/E_TwoEqualTypeVariables02.bsl @@ -4,48 +4,48 @@ E_TwoEqualTypeVariables02.fsx(61,33,61,43): typecheck error FS0041: A unique ove Known types of arguments: 'a * 'a Candidates: - - static member C12.M : x:'a * y:'a -> One - - static member C12.M : x:'a * y:'b -> Two + - static member C12.M: x: 'a * y: 'a -> One + - static member C12.M: x: 'a * y: 'b -> Two E_TwoEqualTypeVariables02.fsx(62,33,62,43): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C14.M : x:'a * y:'a -> One - - static member C14.M : x:'a * y:C -> Four + - static member C14.M: x: 'a * y: 'a -> One + - static member C14.M: x: 'a * y: C -> Four E_TwoEqualTypeVariables02.fsx(63,33,63,43): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C24.M : x:'a * y:'b -> Two - - static member C24.M : x:'a * y:C -> Four + - static member C24.M: x: 'a * y: 'b -> Two + - static member C24.M: x: 'a * y: C -> Four E_TwoEqualTypeVariables02.fsx(64,33,64,44): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C123.M : x:'a * y:'a -> One - - static member C123.M : x:'a * y:'b -> Two - - static member C123.M : x:'a * y:int -> Three + - static member C123.M: x: 'a * y: 'a -> One + - static member C123.M: x: 'a * y: 'b -> Two + - static member C123.M: x: 'a * y: int -> Three E_TwoEqualTypeVariables02.fsx(65,33,65,45): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C1234.M : x:'a * y:'a -> One - - static member C1234.M : x:'a * y:'b -> Two - - static member C1234.M : x:'a * y:C -> Four - - static member C1234.M : x:'a * y:int -> Three + - static member C1234.M: x: 'a * y: 'a -> One + - static member C1234.M: x: 'a * y: 'b -> Two + - static member C1234.M: x: 'a * y: C -> Four + - static member C1234.M: x: 'a * y: int -> Three E_TwoEqualTypeVariables02.fsx(66,33,66,46): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C14.M : x:'a * y:'a -> One - - static member C14.M : x:'a * y:C -> Four + - static member C14.M: x: 'a * y: 'a -> One + - static member C14.M: x: 'a * y: C -> Four diff --git a/tests/fsharp/conformance/inference/E_TwoEqualYypeVariables02rec.bsl b/tests/fsharp/conformance/inference/E_TwoEqualYypeVariables02rec.bsl index d206b5b6625..6584af92343 100644 --- a/tests/fsharp/conformance/inference/E_TwoEqualYypeVariables02rec.bsl +++ b/tests/fsharp/conformance/inference/E_TwoEqualYypeVariables02rec.bsl @@ -4,48 +4,48 @@ E_TwoEqualYypeVariables02rec.fsx(60,37,60,47): typecheck error FS0041: A unique Known types of arguments: 'a * 'a Candidates: - - static member C12.M : x:'a * y:'a -> One - - static member C12.M : x:'a * y:'b -> Two + - static member C12.M: x: 'a * y: 'a -> One + - static member C12.M: x: 'a * y: 'b -> Two E_TwoEqualYypeVariables02rec.fsx(61,37,61,47): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C14.M : x:'a * y:'a -> One - - static member C14.M : x:'a * y:C -> Four + - static member C14.M: x: 'a * y: 'a -> One + - static member C14.M: x: 'a * y: C -> Four E_TwoEqualYypeVariables02rec.fsx(62,37,62,47): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C24.M : x:'a * y:'b -> Two - - static member C24.M : x:'a * y:C -> Four + - static member C24.M: x: 'a * y: 'b -> Two + - static member C24.M: x: 'a * y: C -> Four E_TwoEqualYypeVariables02rec.fsx(63,37,63,48): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C123.M : x:'a * y:'a -> One - - static member C123.M : x:'a * y:'b -> Two - - static member C123.M : x:'a * y:int -> Three + - static member C123.M: x: 'a * y: 'a -> One + - static member C123.M: x: 'a * y: 'b -> Two + - static member C123.M: x: 'a * y: int -> Three E_TwoEqualYypeVariables02rec.fsx(64,37,64,49): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C1234.M : x:'a * y:'a -> One - - static member C1234.M : x:'a * y:'b -> Two - - static member C1234.M : x:'a * y:C -> Four - - static member C1234.M : x:'a * y:int -> Three + - static member C1234.M: x: 'a * y: 'a -> One + - static member C1234.M: x: 'a * y: 'b -> Two + - static member C1234.M: x: 'a * y: C -> Four + - static member C1234.M: x: 'a * y: int -> Three E_TwoEqualYypeVariables02rec.fsx(65,37,65,50): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known types of arguments: 'a * 'a Candidates: - - static member C14.M : x:'a * y:'a -> One - - static member C14.M : x:'a * y:C -> Four + - static member C14.M: x: 'a * y: 'a -> One + - static member C14.M: x: 'a * y: C -> Four diff --git a/tests/fsharp/conformance/lexicalanalysis/E_LessThanDotOpenParen001.bsl b/tests/fsharp/conformance/lexicalanalysis/E_LessThanDotOpenParen001.bsl index bff8ba48cfd..fa5c8fbaf67 100644 --- a/tests/fsharp/conformance/lexicalanalysis/E_LessThanDotOpenParen001.bsl +++ b/tests/fsharp/conformance/lexicalanalysis/E_LessThanDotOpenParen001.bsl @@ -6,27 +6,27 @@ Known return type: ^a Known type parameters: < (string -> int) , TestType > Available overloads: - - static member TestType.( +++ ) : a:'T * b:TestType<'T,'S> -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:'T -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:('T -> 'S) -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:TestType<'T,'S> -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: 'T * b: TestType<'T,'S> -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: 'T -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: ('T -> 'S) -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: TestType<'T,'S> -> 'T // Argument 'a' doesn't match E_LessThanDotOpenParen001.fsx(25,10,25,45): typecheck error FS0041: No overloads match for method 'op_PlusPlusPlus'. Known types of arguments: (string -> int) * TestType Available overloads: - - static member TestType.( +++ ) : a:'T * b:TestType<'T,'S> -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:'T -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:('T -> 'S) -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:TestType<'T,'S> -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: 'T * b: TestType<'T,'S> -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: 'T -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: ('T -> 'S) -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: TestType<'T,'S> -> 'T // Argument 'a' doesn't match E_LessThanDotOpenParen001.fsx(26,10,26,68): typecheck error FS0041: No overloads match for method 'op_PlusPlusPlus'. Known types of arguments: (string -> int) * TestType Available overloads: - - static member TestType.( +++ ) : a:'T * b:TestType<'T,'S> -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:'T -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:('T -> 'S) -> 'T // Argument 'a' doesn't match - - static member TestType.( +++ ) : a:TestType<'T,'S> * b:TestType<'T,'S> -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: 'T * b: TestType<'T,'S> -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: 'T -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: ('T -> 'S) -> 'T // Argument 'a' doesn't match + - static member TestType.(+++) : a: TestType<'T,'S> * b: TestType<'T,'S> -> 'T // Argument 'a' doesn't match diff --git a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass01.bsl b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass01.bsl index f78afd6271c..d19330fa22b 100644 --- a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass01.bsl +++ b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass01.bsl @@ -1,5 +1,5 @@ E_Clashing_Values_in_AbstractClass01.fsx(22,11,22,16): typecheck error FS0041: A unique overload for method 'X' could not be determined based on type information prior to this program point. A type annotation may be needed. Candidates: - - member Q.X : unit -> decimal - - member Q.X : unit -> float + - member Q.X: unit -> decimal + - member Q.X: unit -> float diff --git a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl index ea0c9beaff0..756341cd472 100644 --- a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl +++ b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass03.bsl @@ -4,13 +4,13 @@ E_Clashing_Values_in_AbstractClass03.fsx(16,18,16,25): typecheck error FS0041: A Known type of argument: int Candidates: - - abstract D.M : 'T -> int - - abstract D.M : 'U -> string + - abstract D.M: 'T -> int + - abstract D.M: 'U -> string E_Clashing_Values_in_AbstractClass03.fsx(17,18,17,25): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: int Candidates: - - abstract D.M : 'T -> int - - abstract D.M : 'U -> string + - abstract D.M: 'T -> int + - abstract D.M: 'U -> string diff --git a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl index 832cfb836c9..89195ec2cc3 100644 --- a/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl +++ b/tests/fsharp/conformance/wellformedness/E_Clashing_Values_in_AbstractClass04.bsl @@ -4,13 +4,13 @@ E_Clashing_Values_in_AbstractClass04.fsx(16,18,16,25): typecheck error FS0041: A Known type of argument: int Candidates: - - abstract D.M : 'T -> int - - abstract D.M : 'U -> string + - abstract D.M: 'T -> int + - abstract D.M: 'U -> string E_Clashing_Values_in_AbstractClass04.fsx(17,18,17,25): typecheck error FS0041: A unique overload for method 'M' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: int Candidates: - - abstract D.M : 'T -> int - - abstract D.M : 'U -> string + - abstract D.M: 'T -> int + - abstract D.M: 'U -> string diff --git a/tests/fsharp/optimize/analyses/effects.HasEffect.output.test.bsl b/tests/fsharp/optimize/analyses/effects.HasEffect.output.test.bsl index cbe4469bf05..709d75c6df2 100644 --- a/tests/fsharp/optimize/analyses/effects.HasEffect.output.test.bsl +++ b/tests/fsharp/optimize/analyses/effects.HasEffect.output.test.bsl @@ -48,24 +48,24 @@ function simpleLibraryUse19 at line 66 causes side effects or may not terminate function complexDataAnalysisFunction at line 73 causes no side effects function complexDataConstructionFunction at line 81 causes side effects or may not terminate function veryComplexDataConstructionFunction at line 90 causes side effects or may not terminate -function ( .ctor ) at line 118 causes side effects or may not terminate +function ``.ctor`` at line 118 causes side effects or may not terminate function X at line 119 causes no side effects function A at line 121 causes no side effects -function ( .ctor ) at line 124 causes side effects or may not terminate +function ``.ctor`` at line 124 causes side effects or may not terminate function X at line 125 causes no side effects function A at line 127 causes no side effects -function ( .ctor ) at line 130 causes side effects or may not terminate +function ``.ctor`` at line 130 causes side effects or may not terminate function X at line 131 causes side effects or may not terminate function A at line 133 causes side effects or may not terminate -function ( .ctor ) at line 135 causes side effects or may not terminate +function ``.ctor`` at line 135 causes side effects or may not terminate function Y at line 137 causes no side effects function Z at line 138 causes side effects or may not terminate function A at line 139 causes no side effects -function ( .ctor ) at line 142 causes side effects or may not terminate +function ``.ctor`` at line 142 causes side effects or may not terminate function Y at line 144 causes no side effects function Z at line 145 causes side effects or may not terminate function A at line 146 causes no side effects -function ( .ctor ) at line 149 causes side effects or may not terminate +function ``.ctor`` at line 149 causes side effects or may not terminate function Y at line 151 causes side effects or may not terminate function Z at line 152 causes side effects or may not terminate -function A at line 153 causes side effects or may not terminate \ No newline at end of file +function A at line 153 causes side effects or may not terminate diff --git a/tests/fsharp/regression/5531/compilation.output.test.bsl b/tests/fsharp/regression/5531/compilation.output.test.bsl index 4154944d97d..24c26167e3a 100644 --- a/tests/fsharp/regression/5531/compilation.output.test.bsl +++ b/tests/fsharp/regression/5531/compilation.output.test.bsl @@ -1,2 +1,2 @@ -test.fs(7,17): warning FS0864: This new member hides the abstract member 'abstract member Base.Foo : unit -> unit'. Rename the member or use 'override' instead. \ No newline at end of file +test.fs(7,17): warning FS0864: This new member hides the abstract member 'abstract Base.Foo: unit -> unit'. Rename the member or use 'override' instead. diff --git a/tests/fsharp/typecheck/overloads/neg_System.Convert.ToString.OverloadList.bsl b/tests/fsharp/typecheck/overloads/neg_System.Convert.ToString.OverloadList.bsl index 00c7ea58752..54fe7678dff 100644 --- a/tests/fsharp/typecheck/overloads/neg_System.Convert.ToString.OverloadList.bsl +++ b/tests/fsharp/typecheck/overloads/neg_System.Convert.ToString.OverloadList.bsl @@ -27,7 +27,7 @@ Available overloads: neg_System.Convert.ToString.OverloadList.fsx(2,1,2,47): typecheck error FS0041: No overloads match for method 'ToString'. -Known types of arguments: provider:char * value:int +Known types of arguments: provider: char * value: int Available overloads: - System.Convert.ToString(value: System.DateTime, provider: System.IFormatProvider) : string // Argument 'value' doesn't match diff --git a/tests/fsharp/typecheck/overloads/neg_System.Threading.Tasks.Task.Run.OverloadList.bsl b/tests/fsharp/typecheck/overloads/neg_System.Threading.Tasks.Task.Run.OverloadList.bsl index 20a96ac2975..c004363a8f2 100644 --- a/tests/fsharp/typecheck/overloads/neg_System.Threading.Tasks.Task.Run.OverloadList.bsl +++ b/tests/fsharp/typecheck/overloads/neg_System.Threading.Tasks.Task.Run.OverloadList.bsl @@ -4,45 +4,45 @@ neg_System.Threading.Tasks.Task.Run.OverloadList.fsx(5,11,5,35): typecheck error Known type of argument: (unit -> Task) Candidates: - - Task.Run<'TResult>(function: Func<'TResult>) : Task<'TResult> - - Task.Run<'TResult>(function: Func>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func<'TResult>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func>) : Task<'TResult> neg_System.Threading.Tasks.Task.Run.OverloadList.fsx(6,11,6,44): typecheck error FS0041: A unique overload for method 'Run' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: Func> Candidates: - - Task.Run<'TResult>(function: Func<'TResult>) : Task<'TResult> - - Task.Run<'TResult>(function: Func>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func<'TResult>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func>) : Task<'TResult> neg_System.Threading.Tasks.Task.Run.OverloadList.fsx(7,11,7,47): typecheck error FS0041: A unique overload for method 'Run' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: Func> Candidates: - - Task.Run<'TResult>(function: Func<'TResult>) : Task<'TResult> - - Task.Run<'TResult>(function: Func>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func<'TResult>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func>) : Task<'TResult> neg_System.Threading.Tasks.Task.Run.OverloadList.fsx(8,21,8,57): typecheck error FS0041: A unique overload for method 'Run' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: Func> Candidates: - - Task.Run<'TResult>(function: Func<'TResult>) : Task<'TResult> - - Task.Run<'TResult>(function: Func>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func<'TResult>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func>) : Task<'TResult> neg_System.Threading.Tasks.Task.Run.OverloadList.fsx(9,11,9,50): typecheck error FS0041: A unique overload for method 'Run' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: Func> Candidates: - - Task.Run<'TResult>(function: Func<'TResult>) : Task<'TResult> - - Task.Run<'TResult>(function: Func>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func<'TResult>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func>) : Task<'TResult> neg_System.Threading.Tasks.Task.Run.OverloadList.fsx(10,11,10,52): typecheck error FS0041: A unique overload for method 'Run' could not be determined based on type information prior to this program point. A type annotation may be needed. Known type of argument: Func> Candidates: - - Task.Run<'TResult>(function: Func<'TResult>) : Task<'TResult> - - Task.Run<'TResult>(function: Func>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func<'TResult>) : Task<'TResult> + - Task.Run<'TResult>(``function`` : Func>) : Task<'TResult> diff --git a/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl b/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl index 3ab14f873e6..8cb798d4fa7 100644 --- a/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl +++ b/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl @@ -6,5 +6,5 @@ neg_interface_generics.fsx(20,9,20,27): typecheck error FS0041: No overloads mat Known types of arguments: string * XmlReader Available overloads: - - abstract IFoo.Foo : t:Type * r:TextReader -> obj * 't // Argument 't' doesn't match - - abstract IFoo.Foo : t:string * r:TextReader -> obj * 't // Argument 'r' doesn't match + - abstract IFoo.Foo: t: Type * r: TextReader -> obj * 't // Argument 't' doesn't match + - abstract IFoo.Foo: t: string * r: TextReader -> obj * 't // Argument 'r' doesn't match diff --git a/tests/fsharp/typecheck/overloads/neg_many_many_overloads.bsl b/tests/fsharp/typecheck/overloads/neg_many_many_overloads.bsl index d9e944906eb..c37fa993868 100644 --- a/tests/fsharp/typecheck/overloads/neg_many_many_overloads.bsl +++ b/tests/fsharp/typecheck/overloads/neg_many_many_overloads.bsl @@ -1,348 +1,348 @@ neg_many_many_overloads.fsx(123,1,123,13): typecheck error FS0041: A unique overload for method 'A' could not be determined based on type information prior to this program point. A type annotation may be needed. -Known type of argument: 'a0 when 'a0 : null +Known type of argument: 'a0 when 'a0: null Candidates: - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:Dictionary -> Dictionary - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:HashSet -> HashSet - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:List -> List - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Queue -> Queue - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:Task -> Task - - static member Class.A : a:string -> string + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: Dictionary -> Dictionary + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: HashSet -> HashSet + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: List -> List + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Queue -> Queue + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: Task -> Task + - static member Class.A: a: string -> string neg_many_many_overloads.fsx(124,1,124,34): typecheck error FS0041: No overloads match for method 'A'. Known type of argument: Type Available overloads: - - static member Class.A : a:DateTime -> DateTime // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:decimal -> decimal // Argument 'a' doesn't match - - static member Class.A : a:float -> float // Argument 'a' doesn't match - - static member Class.A : a:float32 -> float32 // Argument 'a' doesn't match - - static member Class.A : a:int16 -> int16 // Argument 'a' doesn't match - - static member Class.A : a:int32 -> int32 // Argument 'a' doesn't match - - static member Class.A : a:int64 -> int64 // Argument 'a' doesn't match - - static member Class.A : a:int8 -> int8 // Argument 'a' doesn't match - - static member Class.A : a:string -> string // Argument 'a' doesn't match - - static member Class.A : a:uint16 -> uint16 // Argument 'a' doesn't match - - static member Class.A : a:uint32 -> uint32 // Argument 'a' doesn't match - - static member Class.A : a:uint64 -> uint64 // Argument 'a' doesn't match - - static member Class.A : a:uint8 -> uint8 // Argument 'a' doesn't match + - static member Class.A: a: DateTime -> DateTime // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: decimal -> decimal // Argument 'a' doesn't match + - static member Class.A: a: float -> float // Argument 'a' doesn't match + - static member Class.A: a: float32 -> float32 // Argument 'a' doesn't match + - static member Class.A: a: int16 -> int16 // Argument 'a' doesn't match + - static member Class.A: a: int32 -> int32 // Argument 'a' doesn't match + - static member Class.A: a: int64 -> int64 // Argument 'a' doesn't match + - static member Class.A: a: int8 -> int8 // Argument 'a' doesn't match + - static member Class.A: a: string -> string // Argument 'a' doesn't match + - static member Class.A: a: uint16 -> uint16 // Argument 'a' doesn't match + - static member Class.A: a: uint32 -> uint32 // Argument 'a' doesn't match + - static member Class.A: a: uint64 -> uint64 // Argument 'a' doesn't match + - static member Class.A: a: uint8 -> uint8 // Argument 'a' doesn't match neg_many_many_overloads.fsx(125,1,125,25): typecheck error FS0041: No overloads match for method 'A'. Known type of argument: Guid Available overloads: - - static member Class.A : a:DateTime -> DateTime // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:decimal -> decimal // Argument 'a' doesn't match - - static member Class.A : a:float -> float // Argument 'a' doesn't match - - static member Class.A : a:float32 -> float32 // Argument 'a' doesn't match - - static member Class.A : a:int16 -> int16 // Argument 'a' doesn't match - - static member Class.A : a:int32 -> int32 // Argument 'a' doesn't match - - static member Class.A : a:int64 -> int64 // Argument 'a' doesn't match - - static member Class.A : a:int8 -> int8 // Argument 'a' doesn't match - - static member Class.A : a:string -> string // Argument 'a' doesn't match - - static member Class.A : a:uint16 -> uint16 // Argument 'a' doesn't match - - static member Class.A : a:uint32 -> uint32 // Argument 'a' doesn't match - - static member Class.A : a:uint64 -> uint64 // Argument 'a' doesn't match - - static member Class.A : a:uint8 -> uint8 // Argument 'a' doesn't match + - static member Class.A: a: DateTime -> DateTime // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: decimal -> decimal // Argument 'a' doesn't match + - static member Class.A: a: float -> float // Argument 'a' doesn't match + - static member Class.A: a: float32 -> float32 // Argument 'a' doesn't match + - static member Class.A: a: int16 -> int16 // Argument 'a' doesn't match + - static member Class.A: a: int32 -> int32 // Argument 'a' doesn't match + - static member Class.A: a: int64 -> int64 // Argument 'a' doesn't match + - static member Class.A: a: int8 -> int8 // Argument 'a' doesn't match + - static member Class.A: a: string -> string // Argument 'a' doesn't match + - static member Class.A: a: uint16 -> uint16 // Argument 'a' doesn't match + - static member Class.A: a: uint32 -> uint32 // Argument 'a' doesn't match + - static member Class.A: a: uint64 -> uint64 // Argument 'a' doesn't match + - static member Class.A: a: uint8 -> uint8 // Argument 'a' doesn't match neg_many_many_overloads.fsx(126,1,126,48): typecheck error FS0041: No overloads match for method 'A'. Known type of argument: DayOfWeek Available overloads: - - static member Class.A : a:DateTime -> DateTime // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:Dictionary -> Dictionary // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:HashSet -> HashSet // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:List -> List // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Queue -> Queue // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:Task -> Task // Argument 'a' doesn't match - - static member Class.A : a:decimal -> decimal // Argument 'a' doesn't match - - static member Class.A : a:float -> float // Argument 'a' doesn't match - - static member Class.A : a:float32 -> float32 // Argument 'a' doesn't match - - static member Class.A : a:int16 -> int16 // Argument 'a' doesn't match - - static member Class.A : a:int32 -> int32 // Argument 'a' doesn't match - - static member Class.A : a:int64 -> int64 // Argument 'a' doesn't match - - static member Class.A : a:int8 -> int8 // Argument 'a' doesn't match - - static member Class.A : a:string -> string // Argument 'a' doesn't match - - static member Class.A : a:uint16 -> uint16 // Argument 'a' doesn't match - - static member Class.A : a:uint32 -> uint32 // Argument 'a' doesn't match - - static member Class.A : a:uint64 -> uint64 // Argument 'a' doesn't match - - static member Class.A : a:uint8 -> uint8 // Argument 'a' doesn't match + - static member Class.A: a: DateTime -> DateTime // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: Dictionary -> Dictionary // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: HashSet -> HashSet // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: List -> List // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Queue -> Queue // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: Task -> Task // Argument 'a' doesn't match + - static member Class.A: a: decimal -> decimal // Argument 'a' doesn't match + - static member Class.A: a: float -> float // Argument 'a' doesn't match + - static member Class.A: a: float32 -> float32 // Argument 'a' doesn't match + - static member Class.A: a: int16 -> int16 // Argument 'a' doesn't match + - static member Class.A: a: int32 -> int32 // Argument 'a' doesn't match + - static member Class.A: a: int64 -> int64 // Argument 'a' doesn't match + - static member Class.A: a: int8 -> int8 // Argument 'a' doesn't match + - static member Class.A: a: string -> string // Argument 'a' doesn't match + - static member Class.A: a: uint16 -> uint16 // Argument 'a' doesn't match + - static member Class.A: a: uint32 -> uint32 // Argument 'a' doesn't match + - static member Class.A: a: uint64 -> uint64 // Argument 'a' doesn't match + - static member Class.A: a: uint8 -> uint8 // Argument 'a' doesn't match diff --git a/tests/fsharp/typecheck/overloads/neg_tupled_arguments.bsl b/tests/fsharp/typecheck/overloads/neg_tupled_arguments.bsl index 363c182bf3a..33de258632b 100644 --- a/tests/fsharp/typecheck/overloads/neg_tupled_arguments.bsl +++ b/tests/fsharp/typecheck/overloads/neg_tupled_arguments.bsl @@ -4,8 +4,8 @@ neg_tupled_arguments.fsx(6,9,6,31): typecheck error FS0041: No overloads match f Known types of arguments: (int * (int * string) * int) * int Available overloads: - - static member A.A : ('a0 * ('a1 * int) * 'a2) * ('a3 * ('a4 * 'a5)) -> 'a0 * 'a1 * int * 'a2 * 'a3 * 'a4 * 'a5 // Argument at index 1 doesn't match - - static member A.A : ('a0 * ('a1 * int) * 'a2) * e:'a3 -> 'a0 * 'a1 * int * 'a2 * 'a3 // Argument at index 1 doesn't match + - static member A.A: ('a0 * ('a1 * int) * 'a2) * ('a3 * ('a4 * 'a5)) -> 'a0 * 'a1 * int * 'a2 * 'a3 * 'a4 * 'a5 // Argument at index 1 doesn't match + - static member A.A: ('a0 * ('a1 * int) * 'a2) * e: 'a3 -> 'a0 * 'a1 * int * 'a2 * 'a3 // Argument at index 1 doesn't match neg_tupled_arguments.fsx(7,9,7,28): typecheck error FS0503: A member or object constructor 'A' taking 4 arguments is not accessible from this code location. All accessible versions of method 'A' take 2 arguments. @@ -14,5 +14,5 @@ neg_tupled_arguments.fsx(14,9,14,40): typecheck error FS0041: No overloads match Known types of arguments: int * int * (int * (int * int * int * (int * int))) * int * int Available overloads: - - static member B.B : a:'a0 * b:'a1 * ('a2 * ('a3 * 'a4 * 'a5 * ('a6 * decimal))) * i:'a7 * j:'a8 -> 'a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * decimal * 'a7 * 'a8 // Argument at index 3 doesn't match - - static member B.B : a:'a0 * b:'a1 * ('a2 * ('a3 * 'a4 * 'a5 * ('a6 * string))) * i:'a7 * j:'a8 -> 'a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * string * 'a7 * 'a8 // Argument at index 3 doesn't match + - static member B.B: a: 'a0 * b: 'a1 * ('a2 * ('a3 * 'a4 * 'a5 * ('a6 * decimal))) * i: 'a7 * j: 'a8 -> 'a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * decimal * 'a7 * 'a8 // Argument at index 3 doesn't match + - static member B.B: a: 'a0 * b: 'a1 * ('a2 * ('a3 * 'a4 * 'a5 * ('a6 * string))) * i: 'a7 * j: 'a8 -> 'a0 * 'a1 * 'a2 * 'a3 * 'a4 * 'a5 * 'a6 * string * 'a7 * 'a8 // Argument at index 3 doesn't match diff --git a/tests/fsharp/typecheck/sigs/neg20.bsl b/tests/fsharp/typecheck/sigs/neg20.bsl index 810220f0590..8b7c276c230 100644 --- a/tests/fsharp/typecheck/sigs/neg20.bsl +++ b/tests/fsharp/typecheck/sigs/neg20.bsl @@ -164,44 +164,44 @@ neg20.fs(131,5,131,24): typecheck error FS0041: No overloads match for method 'O Known types of arguments: string * obj Available overloads: - - static member C.OM3 : x:'b * y:'b -> int // Argument 'y' doesn't match - - static member C.OM3 : x:'b * y:int -> int // Argument 'y' doesn't match + - static member C.OM3: x: 'b * y: 'b -> int // Argument 'y' doesn't match + - static member C.OM3: x: 'b * y: int -> int // Argument 'y' doesn't match neg20.fs(152,13,152,23): typecheck error FS0033: The type 'Test.BadNumberOfGenericParameters.C<_>' expects 1 type argument(s) but is given 2 neg20.fs(153,13,153,23): typecheck error FS0033: The type 'Test.BadNumberOfGenericParameters.C<_>' expects 1 type argument(s) but is given 2 -neg20.fs(154,13,154,25): typecheck error FS0502: The member or object constructor 'SM1' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM1 : unit -> int'. +neg20.fs(154,13,154,25): typecheck error FS0502: The member or object constructor 'SM1' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM1: unit -> int'. -neg20.fs(155,13,155,26): typecheck error FS0502: The member or object constructor 'SM2' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM2 : y:int -> int'. +neg20.fs(155,13,155,26): typecheck error FS0502: The member or object constructor 'SM2' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM2: y: int -> int'. -neg20.fs(156,13,156,28): typecheck error FS0502: The member or object constructor 'SM3' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM3 : y:int * z:int -> int'. +neg20.fs(156,13,156,28): typecheck error FS0502: The member or object constructor 'SM3' takes 0 type argument(s) but is here given 1. The required signature is 'static member C.SM3: y: int * z: int -> int'. -neg20.fs(157,28,157,29): typecheck error FS0495: The member or object constructor 'SM3' has no argument or settable return property 'x'. The required signature is static member C.SM3 : y:int * z:int -> int. +neg20.fs(157,28,157,29): typecheck error FS0495: The member or object constructor 'SM3' has no argument or settable return property 'x'. The required signature is static member C.SM3: y: int * z: int -> int. -neg20.fs(158,13,158,36): typecheck error FS0502: The member or object constructor 'SM4' takes 1 type argument(s) but is here given 2. The required signature is 'static member C.SM4 : y:'a * z:'b -> int'. +neg20.fs(158,13,158,36): typecheck error FS0502: The member or object constructor 'SM4' takes 1 type argument(s) but is here given 2. The required signature is 'static member C.SM4: y: 'a * z: 'b -> int'. -neg20.fs(159,13,159,32): typecheck error FS0502: The member or object constructor 'SM5' takes 2 type argument(s) but is here given 1. The required signature is 'static member C.SM5 : y:'a * z:'b -> int'. +neg20.fs(159,13,159,32): typecheck error FS0502: The member or object constructor 'SM5' takes 2 type argument(s) but is here given 1. The required signature is 'static member C.SM5: y: 'a * z: 'b -> int'. -neg20.fs(162,13,162,24): typecheck error FS0502: The member or object constructor 'M1' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M1 : unit -> int'. +neg20.fs(162,13,162,24): typecheck error FS0502: The member or object constructor 'M1' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M1: unit -> int'. -neg20.fs(163,13,163,25): typecheck error FS0502: The member or object constructor 'M2' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M2 : y:int -> int'. +neg20.fs(163,13,163,25): typecheck error FS0502: The member or object constructor 'M2' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M2: y: int -> int'. -neg20.fs(164,13,164,27): typecheck error FS0502: The member or object constructor 'M3' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M3 : y:int * z:int -> int'. +neg20.fs(164,13,164,27): typecheck error FS0502: The member or object constructor 'M3' takes 0 type argument(s) but is here given 1. The required signature is 'member C.M3: y: int * z: int -> int'. -neg20.fs(165,27,165,28): typecheck error FS0495: The member or object constructor 'M3' has no argument or settable return property 'x'. The required signature is member C.M3 : y:int * z:int -> int. +neg20.fs(165,27,165,28): typecheck error FS0495: The member or object constructor 'M3' has no argument or settable return property 'x'. The required signature is member C.M3: y: int * z: int -> int. -neg20.fs(166,13,166,35): typecheck error FS0502: The member or object constructor 'M4' takes 1 type argument(s) but is here given 2. The required signature is 'member C.M4 : y:'a * z:'b -> int'. +neg20.fs(166,13,166,35): typecheck error FS0502: The member or object constructor 'M4' takes 1 type argument(s) but is here given 2. The required signature is 'member C.M4: y: 'a * z: 'b -> int'. -neg20.fs(167,13,167,31): typecheck error FS0502: The member or object constructor 'M5' takes 2 type argument(s) but is here given 1. The required signature is 'member C.M5 : y:'a * z:'b -> int'. +neg20.fs(167,13,167,31): typecheck error FS0502: The member or object constructor 'M5' takes 2 type argument(s) but is here given 1. The required signature is 'member C.M5: y: 'a * z: 'b -> int'. neg20.fs(182,14,182,31): typecheck error FS0041: No overloads match for method 'M'. Known types of arguments: string * obj Available overloads: - - static member C2.M : fmt:string * [] args:int [] -> string // Argument 'args' doesn't match - - static member C2.M : fmt:string * [] args:int [] -> string // Argument at index 1 doesn't match + - static member C2.M: fmt: string * [] args: int[] -> string // Argument 'args' doesn't match + - static member C2.M: fmt: string * [] args: int[] -> string // Argument at index 1 doesn't match neg20.fs(183,29,183,34): typecheck error FS0001: This expression was expected to have type 'int' @@ -253,8 +253,8 @@ neg20.fs(188,14,188,31): typecheck error FS0041: No overloads match for method ' Known types of arguments: string * obj Available overloads: - - static member C3.M : fmt:string * [] args:string [] -> string // Argument 'args' doesn't match - - static member C3.M : fmt:string * [] args:string [] -> string // Argument at index 1 doesn't match + - static member C3.M: fmt: string * [] args: string[] -> string // Argument 'args' doesn't match + - static member C3.M: fmt: string * [] args: string[] -> string // Argument at index 1 doesn't match neg20.fs(189,29,189,34): typecheck error FS0001: This expression was expected to have type 'string' @@ -382,7 +382,7 @@ neg20.fs(335,11,335,24): typecheck error FS0041: A unique overload for method 'S Known type of argument: 'a0 Candidates: - - System.String(value: char []) : System.String + - System.String(value: char[]) : System.String - System.String(value: nativeptr) : System.String - System.String(value: nativeptr) : System.String @@ -391,7 +391,7 @@ neg20.fs(336,11,336,22): typecheck error FS0041: A unique overload for method 'G Known type of argument: 'a0 Candidates: - - System.Guid(b: byte []) : System.Guid + - System.Guid(b: byte[]) : System.Guid - System.Guid(g: string) : System.Guid neg20.fs(355,19,355,38): typecheck error FS1124: Multiple types exist called 'OverloadedClassName', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. 'OverloadedClassName<_>'. diff --git a/tests/service/PatternMatchCompilationTests.fs b/tests/service/PatternMatchCompilationTests.fs index e266303fa51..25a6e240072 100644 --- a/tests/service/PatternMatchCompilationTests.fs +++ b/tests/service/PatternMatchCompilationTests.fs @@ -77,7 +77,7 @@ match 1, 2 with assertHasSymbolUsages ["y"] checkResults dumpErrors checkResults |> shouldEqual [ "(3,2--3,6): The type '(int * int)' does not have 'null' as a proper value" - "(2,6--2,10): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." + "(2,6--2,10): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." ] @@ -406,7 +406,7 @@ match box 1 with "(7,43--7,44): The type 'obj' does not match the type 'uint64'" "(8,43--8,44): The type 'obj' does not match the type 'int8'" "(8,41--8,42): The type 'obj' does not match the type 'int8'" - "(3,6--3,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(3,6--3,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." ] [] @@ -457,7 +457,7 @@ match Unchecked.defaultof with """ assertHasSymbolUsages ["a"] checkResults dumpErrors checkResults |> shouldEqual [ - "(2,6--2,25): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(2,6--2,25): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." "(6,2--6,6): The type 'int' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion." ] @@ -607,15 +607,15 @@ Some w |> eq "(10,4--10,18): Incomplete pattern matches on this expression." "(11,4--11,14): Incomplete pattern matches on this expression." "(12,4--12,16): Incomplete pattern matches on this expression." - "(23,4--23,15): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." - "(22,4--22,13): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." + "(23,4--23,15): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." + "(22,4--22,13): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." "(21,4--21,13): Incomplete pattern matches on this expression. For example, the value 'false' may indicate a case not covered by the pattern(s)." "(20,4--20,14): Incomplete pattern matches on this expression. For example, the value 'true' may indicate a case not covered by the pattern(s)." "(19,4--19,11): Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s)." "(18,4--18,14): Incomplete pattern matches on this expression. For example, the value '[|_; _|]' may indicate a case not covered by the pattern(s)." "(17,4--17,12): Incomplete pattern matches on this expression. For example, the value '[_;_]' may indicate a case not covered by the pattern(s)." - "(15,21--15,29): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(13,9--13,17): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(15,21--15,29): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(13,9--13,17): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." ] [] @@ -743,15 +743,15 @@ Some w |> eq "(10,4--10,18): Incomplete pattern matches on this expression." "(11,4--11,14): Incomplete pattern matches on this expression." "(12,4--12,16): Incomplete pattern matches on this expression." - "(23,4--23,15): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." - "(22,4--22,13): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." + "(23,4--23,15): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." + "(22,4--22,13): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." "(21,4--21,13): Incomplete pattern matches on this expression. For example, the value 'false' may indicate a case not covered by the pattern(s)." "(20,4--20,14): Incomplete pattern matches on this expression. For example, the value 'true' may indicate a case not covered by the pattern(s)." "(19,4--19,11): Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s)." "(18,4--18,14): Incomplete pattern matches on this expression. For example, the value '[|_; _|]' may indicate a case not covered by the pattern(s)." "(17,4--17,12): Incomplete pattern matches on this expression. For example, the value '[_;_]' may indicate a case not covered by the pattern(s)." - "(15,21--15,29): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(13,9--13,17): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(15,21--15,29): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(13,9--13,17): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." ] [] @@ -856,17 +856,17 @@ Some x |> eq assertHasSymbolUsages (List.map string ['a'..'z']) checkResults dumpErrors checkResults |> shouldEqual [ "(11,25--11,26): This expression was expected to have type 'int' but here has type 'obj'" - "(28,6--28,24): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(26,6--26,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(24,6--24,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(22,6--22,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(20,6--20,21): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(18,6--18,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(16,6--16,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(14,6--14,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(12,6--12,14): Incomplete pattern matches on this expression. For example, the value '(( some-other-subtype ),_)' may indicate a case not covered by the pattern(s)." - "(10,6--10,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(8,6--8,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(28,6--28,24): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(26,6--26,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(24,6--24,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(22,6--22,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(20,6--20,21): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(18,6--18,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(16,6--16,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(14,6--14,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(12,6--12,14): Incomplete pattern matches on this expression. For example, the value '(``some-other-subtype``,_)' may indicate a case not covered by the pattern(s)." + "(10,6--10,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(8,6--8,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." ] [] @@ -932,20 +932,20 @@ Some w |> eq assertHasSymbolUsages (set ['a' .. 'y'] |> Set.remove 'n' |> Set.map string |> Set.toList) checkResults dumpErrors checkResults |> shouldEqual [ "(21,2--21,8): This type test or downcast will always hold" - "(34,6--34,14): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." - "(32,6--32,14): Incomplete pattern matches on this expression. For example, the value '( some-non-null-value )' may indicate a case not covered by the pattern(s)." + "(34,6--34,14): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." + "(32,6--32,14): Incomplete pattern matches on this expression. For example, the value '``some-non-null-value``' may indicate a case not covered by the pattern(s)." "(30,6--30,14): Incomplete pattern matches on this expression. For example, the value 'false' may indicate a case not covered by the pattern(s)." "(28,6--28,15): Incomplete pattern matches on this expression. For example, the value 'true' may indicate a case not covered by the pattern(s)." "(26,6--26,12): Incomplete pattern matches on this expression. For example, the value '0' may indicate a case not covered by the pattern(s)." "(24,6--24,16): Incomplete pattern matches on this expression. For example, the value '[|_; _|]' may indicate a case not covered by the pattern(s)." "(22,6--22,14): Incomplete pattern matches on this expression. For example, the value '[_;_]' may indicate a case not covered by the pattern(s)." - "(20,6--20,23): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(18,6--18,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(20,6--20,23): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(18,6--18,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." "(16,6--16,11): Incomplete pattern matches on this expression." "(14,6--14,11): Incomplete pattern matches on this expression." "(12,6--12,11): Incomplete pattern matches on this expression." "(10,6--10,11): Incomplete pattern matches on this expression." - "(8,6--8,20): Incomplete pattern matches on this expression. For example, the value '[( some-other-subtype )]' may indicate a case not covered by the pattern(s)." + "(8,6--8,20): Incomplete pattern matches on this expression. For example, the value '[``some-other-subtype``]' may indicate a case not covered by the pattern(s)." ] [] @@ -1049,16 +1049,16 @@ Some "" |> eq // No more type checks after the above line? dumpErrors checkResults |> shouldEqual [ "(27,2--27,14): This expression was expected to have type 'obj' but here has type 'struct ('a * 'b)'" "(52,2--52,13): This expression was expected to have type 'obj' but here has type 'AAA'" - "(26,6--26,24): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(24,6--24,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(22,6--22,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(20,6--20,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(18,6--18,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(16,6--16,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(14,6--14,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(12,6--12,14): Incomplete pattern matches on this expression. For example, the value '(( some-other-subtype ),_)' may indicate a case not covered by the pattern(s)." - "(10,6--10,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(8,6--8,11): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(26,6--26,24): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(24,6--24,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(22,6--22,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(20,6--20,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(18,6--18,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(16,6--16,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(14,6--14,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(12,6--12,14): Incomplete pattern matches on this expression. For example, the value '(``some-other-subtype``,_)' may indicate a case not covered by the pattern(s)." + "(10,6--10,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(8,6--8,11): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." ] [] @@ -1143,16 +1143,16 @@ Some "" |> eq "(45,5--45,6): The value or constructor 'q' is not defined." "(46,5--46,6): The value or constructor 'r' is not defined." "(55,12--55,31): The type 'int' does not have any proper subtypes and cannot be used as the source of a type test or runtime coercion." - "(26,6--26,14): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(24,6--24,14): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(22,6--22,14): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(20,6--20,15): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." - "(18,6--18,12): Incomplete pattern matches on this expression. For example, the value '( some-other-subtype )' may indicate a case not covered by the pattern(s)." + "(26,6--26,14): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(24,6--24,14): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(22,6--22,14): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(20,6--20,15): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." + "(18,6--18,12): Incomplete pattern matches on this expression. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern(s)." "(16,6--16,11): Incomplete pattern matches on this expression." "(14,6--14,11): Incomplete pattern matches on this expression." "(12,6--12,11): Incomplete pattern matches on this expression." "(10,6--10,11): Incomplete pattern matches on this expression." - "(8,6--8,20): Incomplete pattern matches on this expression. For example, the value '[( some-other-subtype )]' may indicate a case not covered by the pattern(s)." + "(8,6--8,20): Incomplete pattern matches on this expression. For example, the value '[``some-other-subtype``]' may indicate a case not covered by the pattern(s)." ] [] From 56130d6eb321efdd1463dcb83fbf74d0cbcbde22 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 13:53:53 +0100 Subject: [PATCH 13/25] multi-line curried signature formatting --- src/fsharp/CheckExpressions.fs | 7 +- src/fsharp/CheckFormatStrings.fsi | 13 +- src/fsharp/LowerStateMachines.fs | 3 +- src/fsharp/MethodCalls.fs | 2 +- src/fsharp/NameResolution.fs | 10 +- src/fsharp/NicePrint.fs | 156 ++++++++++++------ src/fsharp/Optimizer.fs | 2 +- src/fsharp/PostInferenceChecks.fs | 23 ++- src/fsharp/PrettyNaming.fs | 92 +++++++---- src/fsharp/PrettyNaming.fsi | 9 +- src/fsharp/QuotationTranslator.fs | 4 +- src/fsharp/TypedTree.fs | 22 ++- src/fsharp/TypedTreeOps.fs | 4 +- src/fsharp/symbols/Exprs.fs | 4 +- src/fsharp/symbols/Symbols.fs | 6 +- .../ErrorMessages/SuggestionsTests.fs | 2 +- tests/fsharp/core/printing/test.fsx | 76 ++++++++- .../printing/z.output.test.1000.stderr.bsl | 6 - .../printing/z.output.test.1000.stdout.47.bsl | 100 ++++++++--- .../printing/z.output.test.1000.stdout.50.bsl | 100 ++++++++--- .../printing/z.output.test.200.stderr.bsl | 6 - .../printing/z.output.test.200.stdout.47.bsl | 100 ++++++++--- .../printing/z.output.test.200.stdout.50.bsl | 100 ++++++++--- .../printing/z.output.test.default.stderr.bsl | 6 - .../z.output.test.default.stdout.47.bsl | 100 ++++++++--- .../z.output.test.default.stdout.50.bsl | 100 ++++++++--- .../printing/z.output.test.off.stderr.bsl | 6 - .../printing/z.output.test.off.stdout.47.bsl | 100 ++++++++--- .../printing/z.output.test.off.stdout.50.bsl | 100 ++++++++--- .../printing/z.output.test.quiet.stderr.bsl | 6 - tests/service/ExprTests.fs | 8 +- tests/service/ProjectAnalysisTests.fs | 112 ++++++------- .../CodeFix/RenameParamToMatchSignature.fs | 1 - 33 files changed, 982 insertions(+), 404 deletions(-) diff --git a/src/fsharp/CheckExpressions.fs b/src/fsharp/CheckExpressions.fs index 870f71f8fd5..9d393e6fe5e 100644 --- a/src/fsharp/CheckExpressions.fs +++ b/src/fsharp/CheckExpressions.fs @@ -1464,9 +1464,8 @@ let MakeAndPublishVal cenv env (altActualParent, inSig, declKind, vrec, vscheme, // * provided by source code (i.e. `member _.Method = ...`) // We don't notify sink about it to prevent generating `FSharpSymbol` for it and appearing in completion list. | None when - let baseOrThisInfo = vspec.BaseOrThisInfo - baseOrThisInfo = ValBaseOrThisInfo.BaseVal || // visualfsharp#3699 - baseOrThisInfo = ValBaseOrThisInfo.MemberThisVal && vspec.LogicalName = "__" -> false + vspec.IsBaseVal || + vspec.IsMemberThisVal && vspec.LogicalName = "__" -> false | _ -> true match cenv.tcSink.CurrentSink with @@ -2677,7 +2676,7 @@ let TcVal checkAttributes cenv env tpenv (vref: ValRef) optInst optAfterResoluti | None -> // References to 'this' in classes get dereferenced from their implicit reference cell and poked - if v.BaseOrThisInfo = CtorThisVal && isRefCellTy cenv.g vty then + if v.IsCtorThisVal && isRefCellTy cenv.g vty then let exprForVal = exprForValRef m vref //if AreWithinCtorPreConstruct env then // warning(SelfRefObjCtor(AreWithinImplicitCtor env, m)) diff --git a/src/fsharp/CheckFormatStrings.fsi b/src/fsharp/CheckFormatStrings.fsi index ffafb37d6c0..83586c97e20 100644 --- a/src/fsharp/CheckFormatStrings.fsi +++ b/src/fsharp/CheckFormatStrings.fsi @@ -12,6 +12,17 @@ open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text open FSharp.Compiler.TypedTree -val ParseFormatString : m: range -> fragmentRanges: range list -> g: TcGlobals -> isInterpolated: bool -> isFormattableString: bool -> formatStringCheckContext: FormatStringCheckContext option -> fmt: string -> printerArgTy: TType -> printerResidueTy: TType -> printerResultTy: TType -> TType list * TType * TType * TType[] * (range * int) list * string +val ParseFormatString: + m: range + -> fragmentRanges: range list + -> g: TcGlobals + -> isInterpolated: bool + -> isFormattableString: bool + -> formatStringCheckContext: FormatStringCheckContext option + -> fmt: string + -> printerArgTy: TType + -> printerResidueTy: TType + -> printerResultTy: TType + -> TType list * TType * TType * TType[] * (range * int) list * string val TryCountFormatStringArguments: m: range -> g: TcGlobals -> isInterpolated: bool -> fmt:string -> printerArgTy:TType -> printerResidueTy:TType -> int option diff --git a/src/fsharp/LowerStateMachines.fs b/src/fsharp/LowerStateMachines.fs index 4a022b2cb60..c0d4986f168 100644 --- a/src/fsharp/LowerStateMachines.fs +++ b/src/fsharp/LowerStateMachines.fs @@ -113,8 +113,7 @@ let isExpandVar g (v: Val) = let isStateMachineBindingVar g (v: Val) = isExpandVar g v || (let nm = v.LogicalName - (nm.StartsWith "builder@" - || (v.BaseOrThisInfo = MemberThisVal)) && + (nm.StartsWith "builder@" || v.IsMemberThisVal) && not v.IsCompiledAsTopLevel) type env = diff --git a/src/fsharp/MethodCalls.fs b/src/fsharp/MethodCalls.fs index 0f037a31c34..3367224af9d 100644 --- a/src/fsharp/MethodCalls.fs +++ b/src/fsharp/MethodCalls.fs @@ -847,7 +847,7 @@ let ExamineMethodForLambdaPropagation (x: CalledMeth) ad = /// Is this a 'base' call (in the sense of C#) let IsBaseCall objArgs = match objArgs with - | [Expr.Val (v, _, _)] when v.BaseOrThisInfo = BaseVal -> true + | [Expr.Val (v, _, _)] when v.IsBaseVal -> true | _ -> false /// Compute whether we insert a 'coerce' on the 'this' pointer for an object model call diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 17f84a29e9f..14ac5c99eee 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -257,9 +257,9 @@ type Item = | Item.Event einfo -> einfo.EventName | Item.Property(_, FSProp(_, _, Some v, _) :: _) | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> v.DisplayName - | Item.Property(nm, _) -> ConvertLogicalNameToDisplayText nm + | Item.Property(nm, _) -> ConvertValCoreNameToDisplayName false nm | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayName - | Item.MethodGroup(nm, _, _) -> ConvertLogicalNameToDisplayText nm + | Item.MethodGroup(nm, _, _) -> ConvertValCoreNameToDisplayName false nm | Item.CtorGroup(nm, _) -> DemangleGenericTypeName nm | Item.FakeInterfaceCtor (AbbrevOrAppTy tcref) | Item.DelegateCtor (AbbrevOrAppTy tcref) -> DemangleGenericTypeName tcref.DisplayName @@ -4266,7 +4266,7 @@ let TryToResolveLongIdentAsType (ncenv: NameResolver) (nenv: NameResolutionEnv) match v with | Item.Value x -> let ty = x.Type - let ty = if x.BaseOrThisInfo = CtorThisVal && isRefCellTy g ty then destRefCellTy g ty else ty + let ty = if x.IsCtorThisVal && isRefCellTy g ty then destRefCellTy g ty else ty Some ty | _ -> None | _ -> None @@ -4369,7 +4369,7 @@ let rec ResolvePartialLongIdentPrim (ncenv: NameResolver) (nenv: NameResolutionE match v with | Item.Value x -> let ty = x.Type - let ty = if x.BaseOrThisInfo = CtorThisVal && isRefCellTy g ty then destRefCellTy g ty else ty + let ty = if x.IsCtorThisVal && isRefCellTy g ty then destRefCellTy g ty else ty (ResolvePartialLongIdentInType ncenv nenv isApplicableMeth m ad false rest ty), true | _ -> [], false | _ -> [], false) @@ -4959,7 +4959,7 @@ let rec GetCompletionForItem (ncenv: NameResolver) (nenv: NameResolutionEnv) m a match nenv.eUnqualifiedItems.TryGetValue id with | true, Item.Value x -> let ty = x.Type - let ty = if x.BaseOrThisInfo = CtorThisVal && isRefCellTy g ty then destRefCellTy g ty else ty + let ty = if x.IsCtorThisVal && isRefCellTy g ty then destRefCellTy g ty else ty yield! ResolvePartialLongIdentInTypeForItem ncenv nenv m ad false rest item ty | _ -> // type.lookup: lookup a static something in a type diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 9dfe276b21f..7f44519a1a1 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -65,6 +65,51 @@ module internal PrintUtilities = | [x] -> x | x :: xs -> List.fold (^^) x xs + // Layout a curried function type. Over multiple lines breaking takes some care, e.g. + // + // val SampleFunctionTupledAllBreakA: + // longLongLongArgName1: string * longLongLongArgName2: TType * + // longLongLongArgName3: TType * longLongLongArgName4: TType + // -> TType list + // + // val SampleFunctionTupledAllBreakA: + // longLongLongArgName1: string * + // longLongLongArgName2: TType * + // longLongLongArgName3: TType * + // longLongLongArgName4: TType + // -> TType list + // + // val SampleFunctionCurriedOneBreakA: + // arg1: string -> arg2: TType -> arg3: TType + // -> arg4: TType -> TType list + // + // val SampleFunctionCurriedAllBreaksA: + // longLongLongArgName1: string + // -> longLongLongArgName2: TType + // -> longLongLongArgName3: TType + // -> longLongLongArgName4: TType + // -> TType list + // + // val SampleFunctionMixedA: + // longLongLongArgName1: string * + // longLongLongArgName2: string + // -> longLongLongArgName3: string * + // longLongLongArgName4: string * + // longLongLongArgName5: TType + // -> longLongLongArgName6: TType * + // longLongLongArgName7: TType * + // -> longLongLongArgName8: TType * + // longLongLongArgName9: TType * + // longLongLongArgName10: TType + // -> TType list + let curriedLayoutsL retTyDelim (argtysL: Layout list) (rtyL: Layout) = + let arrowAndRetyL = wordL (tagPunctuation retTyDelim) ^^ rtyL + let argtysL = + argtysL + |> List.mapi (fun i argtyL -> if i = 0 then argtyL else wordL (tagPunctuation "->") ^^ argtyL) + |> List.reduce (++) + argtysL --- arrowAndRetyL + let tagNavArbValRef (valRefOpt: ValRef option) tag = match valRefOpt with | Some vref -> @@ -708,7 +753,7 @@ module private PrintTypes = (layoutTyparRefWithInfo denv env tp)) |> longConstraintPrefix] and private layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = - let nameL = ConvertValLogicalNameToDisplayLayout (tagMember >> wordL) nm + let nameL = ConvertValCoreNameToDisplayLayout false (tagMember >> wordL) nm if denv.shortConstraints then WordL.keywordMember ^^ nameL else @@ -720,9 +765,10 @@ module private PrintTypes = | [ty] -> layoutTypeWithInfo denv env ty | tys -> bracketL (layoutTypesWithInfoAndPrec denv env 2 (wordL (tagKeyword "or")) tys) - (tysL |> addColonL) --- - bracketL (stat ++ (nameL |> addColonL) --- - ((layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) argtys --- wordL (tagPunctuation "->")) --- (layoutReturnType denv env rty))) + let argtysL = layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) argtys + let rtyL = layoutReturnType denv env rty + let sigL = curriedLayoutsL "->" [argtysL] rtyL + (tysL |> addColonL) --- bracketL (stat ++ (nameL |> addColonL) --- sigL) /// Layout a unit of measure expression and private layoutMeasure denv unt = @@ -757,24 +803,24 @@ module private PrintTypes = /// Layout a type, taking precedence into account to insert brackets where needed and layoutTypeWithInfoAndPrec denv env prec ty = - + let g = denv.g match stripTyparEqns ty with // Always prefer to format 'byref' as 'inref' - | ty when isInByrefTy denv.g ty && (match ty with TType_app (tc, _) when denv.g.inref_tcr.CanDeref && tyconRefEq denv.g tc denv.g.byref2_tcr -> true | _ -> false) -> - layoutTypeWithInfoAndPrec denv env prec (mkInByrefTy denv.g (destByrefTy denv.g ty)) + | ty when isInByrefTy g ty && (match ty with TType_app (tc, _) when g.inref_tcr.CanDeref && tyconRefEq g tc g.byref2_tcr -> true | _ -> false) -> + layoutTypeWithInfoAndPrec denv env prec (mkInByrefTy g (destByrefTy g ty)) // Always prefer to format 'byref' as 'outref' - | ty when isOutByrefTy denv.g ty && (match ty with TType_app (tc, _) when denv.g.outref_tcr.CanDeref && tyconRefEq denv.g tc denv.g.byref2_tcr -> true | _ -> false) -> - layoutTypeWithInfoAndPrec denv env prec (mkOutByrefTy denv.g (destByrefTy denv.g ty)) + | ty when isOutByrefTy g ty && (match ty with TType_app (tc, _) when g.outref_tcr.CanDeref && tyconRefEq g tc g.byref2_tcr -> true | _ -> false) -> + layoutTypeWithInfoAndPrec denv env prec (mkOutByrefTy g (destByrefTy g ty)) // Always prefer to format 'byref' as 'byref' - | ty when isByrefTy denv.g ty && (match ty with TType_app (tc, _) when denv.g.byref_tcr.CanDeref && tyconRefEq denv.g tc denv.g.byref2_tcr -> true | _ -> false) -> - layoutTypeWithInfoAndPrec denv env prec (mkByrefTy denv.g (destByrefTy denv.g ty)) + | ty when isByrefTy g ty && (match ty with TType_app (tc, _) when g.byref_tcr.CanDeref && tyconRefEq g tc g.byref2_tcr -> true | _ -> false) -> + layoutTypeWithInfoAndPrec denv env prec (mkByrefTy g (destByrefTy g ty)) // Always prefer 'float' to 'float<1>' - | TType_app (tc, args) when tc.IsMeasureableReprTycon && List.forall (isDimensionless denv.g) args -> - layoutTypeWithInfoAndPrec denv env prec (reduceTyconRefMeasureableOrProvided denv.g tc args) + | TType_app (tc, args) when tc.IsMeasureableReprTycon && List.forall (isDimensionless g) args -> + layoutTypeWithInfoAndPrec denv env prec (reduceTyconRefMeasureableOrProvided g tc args) // Layout a type application | TType_ucase (UnionCaseRef(tc, _), args) @@ -809,13 +855,12 @@ module private PrintTypes = | [h] -> layoutTyparRefWithInfo denv env h ^^ rightL (tagPunctuation ".") --- tauL | h :: t -> spaceListL (List.map (layoutTyparRefWithInfo denv env) (h :: t)) ^^ rightL (tagPunctuation ".") --- tauL - // Layout a function type. | TType_fun _ -> - let rec loop soFarL ty = - match stripTyparEqns ty with - | TType_fun (dty, rty) -> loop (soFarL --- (layoutTypeWithInfoAndPrec denv env 4 dty ^^ wordL (tagPunctuation "->"))) rty - | rty -> soFarL --- layoutTypeWithInfoAndPrec denv env 5 rty - bracketIfL (prec <= 4) (loop emptyL ty) + let argtys, rty = stripFunTy g ty + let rtyL = layoutTypeWithInfoAndPrec denv env 5 rty + let argtysL = argtys |> List.map (layoutTypeWithInfoAndPrec denv env 4) + let funcTyL = curriedLayoutsL "->" argtysL rtyL + bracketIfL (prec <= 4) funcTyL // Layout a type variable . | TType_var r -> @@ -838,15 +883,16 @@ module private PrintTypes = // Format each argument, including its name and type let layoutArgInfo denv env (ty, argInfo: ArgReprInfo) = + let g = denv.g // Detect an optional argument - let isOptionalArg = HasFSharpAttribute denv.g denv.g.attrib_OptionalArgumentAttribute argInfo.Attribs - let isParamArray = HasFSharpAttribute denv.g denv.g.attrib_ParamArrayAttribute argInfo.Attribs + let isOptionalArg = HasFSharpAttribute g g.attrib_OptionalArgumentAttribute argInfo.Attribs + let isParamArray = HasFSharpAttribute g g.attrib_ParamArrayAttribute argInfo.Attribs - match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy denv.g ty with + match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy g ty with // Layout an optional argument | Some id, true, _, ValueSome ty -> - let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> rightL) id.idText + let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> rightL) id.idText LeftL.questionMark ^^ (idL |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty @@ -857,24 +903,24 @@ module private PrintTypes = // Layout a named argument | Some id, _, isParamArray, _ -> - let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> wordL) id.idText + let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> wordL) id.idText let prefix = if isParamArray then - layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ idL + layoutBuiltinAttribute denv g.attrib_ParamArrayAttribute ^^ idL else idL (prefix |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty - let layoutArgInfos denv env argInfos = + let layoutCurriedArgInfos denv env argInfos = argInfos |> List.mapSquared (layoutArgInfo denv env) |> List.map (sepListL (wordL (tagPunctuation "*"))) - let layoutGenericParameterTypes denv env = - function + let layoutGenericParameterTypes denv env genParamTys = + match genParamTys with | [] -> emptyL - | genParamTys -> - (wordL (tagPunctuation "<")) + | _ -> + wordL (tagPunctuation "<") ^^ ( genParamTys @@ -882,7 +928,7 @@ module private PrintTypes = |> sepListL (wordL (tagPunctuation ",")) ) ^^ - (wordL (tagPunctuation ">")) + wordL (tagPunctuation ">") /// Layout a single type used as the type of a member or value let layoutTopType denv env argInfos rty cxs = @@ -892,11 +938,9 @@ module private PrintTypes = match argInfos with | [] -> rtyL --- cxsL | _ -> - let delimitReturnValue = tagPunctuation (if denv.useColonForReturnType then ":" else "->") - let allArgsL = - layoutArgInfos denv env argInfos - |> List.map (fun x -> (x ^^ wordL delimitReturnValue)) - (List.foldBack (---) allArgsL rtyL) --- cxsL + let retTyDelim = if denv.useColonForReturnType then ":" else "->" + let allArgsL = layoutCurriedArgInfos denv env argInfos + curriedLayoutsL retTyDelim allArgsL rtyL --- cxsL /// Layout type parameters let layoutTyparDecls denv nmL prefix (typars: Typars) = @@ -977,7 +1021,7 @@ module private PrintTypes = let prettyLayoutOfMemberSig denv (memberToParentInst, nm, methTypars, argInfos, retTy) = let _, niceMethodTypars, tauL = prettyLayoutOfMemberSigCore denv memberToParentInst (emptyTyparInst, methTypars, argInfos, retTy) - let nameL = ConvertValLogicalNameToDisplayLayout (tagMember >> wordL) nm + let nameL = ConvertValCoreNameToDisplayLayout false (tagMember >> wordL) nm let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars @@ -1024,7 +1068,7 @@ module private PrintTypes = let env = SimplifyTypes.CollectInfo true (List.collect (List.map fst) [argInfos]) cxs let cxsL = layoutConstraintsWithInfo denv env env.postfixConstraints - (List.foldBack (---) (layoutArgInfos denv env [argInfos]) cxsL, + (List.foldBack (---) (layoutCurriedArgInfos denv env [argInfos]) cxsL, layoutReturnType denv env retTy, layoutGenericParameterTypes denv env genParamTys) @@ -1064,7 +1108,7 @@ module private PrintTastMemberOrVals = info.Name <- None let mkNameL niceMethodTypars tagFunction name = - let nameL = ConvertValLogicalNameToDisplayLayout (tagFunction >> mkNav v.DefinitionRange >> wordL) name + let nameL = ConvertValCoreNameToDisplayLayout v.IsBaseVal (tagFunction >> mkNav v.DefinitionRange >> wordL) name let nameL = if denv.showMemberContainers then layoutTyconRefImpl denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL @@ -1081,7 +1125,7 @@ module private PrintTastMemberOrVals = let resL = if short then tauL else - let nameL = mkNameL niceMethodTypars tagMember v.LogicalName + let nameL = mkNameL niceMethodTypars tagMember v.CoreDisplayName let nameL = if short then nameL else mkInlineL denv v.Deref nameL stat --- ((nameL |> addColonL) ^^ tauL) prettyTyparInst, resL @@ -1265,9 +1309,7 @@ let prettyLayoutsOfUnresolvedOverloading denv argInfos retTy genericParameters = /// Printing info objects module InfoMemberPrinting = - /// Format the arguments of a method to a buffer. - /// - /// This uses somewhat "old fashioned" printf-style buffer printing. + /// Format the arguments of a method let layoutParamData denv (ParamData(isParamArray, _isInArg, _isOutArg, optArgInfo, _callerInfo, nmOpt, _reflArgInfo, pty)) = let isOptArg = optArgInfo.IsOptional // detect parameter type, if ptyOpt is None - this is .NET style optional argument @@ -1276,7 +1318,7 @@ module InfoMemberPrinting = match isParamArray, nmOpt, isOptArg with // Layout an optional argument | _, Some id, true -> - let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> rightL) id.idText + let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> rightL) id.idText let pty = match ptyOpt with ValueSome x -> x | _ -> pty LeftL.questionMark ^^ (idL |> addColonL) ^^ @@ -1288,14 +1330,14 @@ module InfoMemberPrinting = // Layout a named ParamArray argument | true, Some id, _ -> - let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> wordL) id.idText + let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> wordL) id.idText layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ (idL |> addColonL) ^^ PrintTypes.layoutType denv pty // Layout a named normal argument | false, Some id, _ -> - let idL = ConvertValLogicalNameToDisplayLayout (tagParameter >> wordL) id.idText + let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> wordL) id.idText (idL |> addColonL) ^^ PrintTypes.layoutType denv pty @@ -1323,7 +1365,7 @@ module InfoMemberPrinting = if minfo.IsConstructor then WordL.keywordNew else - let idL = ConvertValLogicalNameToDisplayLayout (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName + let idL = ConvertValCoreNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName WordL.keywordMember ^^ PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars @@ -1369,7 +1411,7 @@ module InfoMemberPrinting = if minfo.IsConstructor then SepL.leftParen else - let idL = ConvertValLogicalNameToDisplayLayout (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName + let idL = ConvertValCoreNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName SepL.dot ^^ PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars ^^ SepL.leftParen @@ -1436,7 +1478,7 @@ module InfoMemberPrinting = let rty = pinfo.GetPropertyType(amap, m) let rty = if pinfo.IsIndexer then mkRefTupledTy g (pinfo.GetParamTypes(amap, m)) --> rty else rty let rty, _ = PrettyTypes.PrettifyType g rty - let nameL = ConvertValLogicalNameToDisplayLayout (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName + let nameL = ConvertValCoreNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let getterSetter = match pinfo.HasGetter, pinfo.HasSetter with | true, false -> @@ -1554,7 +1596,7 @@ module private TastDefinitionPrinting = let private layoutEventInfo denv (infoReader: InfoReader) m (einfo: EventInfo) = let amap = infoReader.amap let staticL = if einfo.IsStatic then WordL.keywordStatic else emptyL - let nameL = ConvertValLogicalNameToDisplayLayout (tagEvent >> tagNavArbValRef einfo.ArbitraryValRef >> wordL) einfo.EventName + let nameL = ConvertValCoreNameToDisplayLayout false (tagEvent >> tagNavArbValRef einfo.ArbitraryValRef >> wordL) einfo.EventName let typL = layoutType denv (einfo.GetDelegateType(amap, m)) let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfEventInfo denv infoReader einfo overallL @@ -1573,7 +1615,7 @@ module private TastDefinitionPrinting = else WordL.keywordMember - let nameL = ConvertValLogicalNameToDisplayLayout (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName + let nameL = ConvertValCoreNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let typL = layoutType denv (pinfo.GetPropertyType(amap, m)) let overallL = modifierAndMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfPropInfo denv infoReader pinfo overallL @@ -1965,7 +2007,8 @@ module private TastDefinitionPrinting = let headerL = if mspec.IsNamespace then // This is a container namespace. We print the header when we get to the first concrete module. - wordL (tagKeyword "namespace") ^^ sepListL SepL.dot (List.map (tagNamespace >> wordL) path) + let pathL = path |> List.map (ConvertDisplayNameToDisplayLayout (tagNamespace >> wordL)) + wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL else // This is a module let name = path |> List.last @@ -1976,7 +2019,8 @@ module private TastDefinitionPrinting = nameL | _ -> let innerPath = path.[..path.Length - 2] - sepListL SepL.dot (List.map (tagNamespace >> wordL) innerPath) ^^ SepL.dot ^^ nameL + let innerPathL = innerPath |> List.map (ConvertDisplayNameToDisplayLayout (tagNamespace >> wordL)) + sepListL SepL.dot innerPathL ^^ SepL.dot ^^ nameL let modNameL = wordL (tagKeyword "module") ^^ nameL let modNameEqualsL = modNameL ^^ WordL.equals @@ -2126,9 +2170,10 @@ module private InferredSigPrinting = let basicL = // Check if this namespace contains anything interesting if isConcreteNamespace def then + let pathL = innerPath |> List.map (fst >> ConvertDisplayNameToDisplayLayout (tagNamespace >> wordL)) // This is a container namespace. We print the header when we get to the first concrete module. let headerL = - wordL (tagKeyword "namespace") ^^ sepListL SepL.dot (List.map (fst >> tagNamespace >> wordL) innerPath) + wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL headerL @@-- basic else // This is a namespace that only contains namespaces. Skip the header @@ -2139,7 +2184,8 @@ module private InferredSigPrinting = basicL else // This is a module - let nmL = layoutAccessibility denv mspec.Accessibility (wordL (tagModule nm)) + let nmL = ConvertDisplayNameToDisplayLayout (tagModule >> mkNav mspec.DefinitionRange >> wordL) nm + let nmL = layoutAccessibility denv mspec.Accessibility nmL let denv = denv.AddAccessibility mspec.Accessibility let basic = imdefL denv def let modNameL = wordL (tagKeyword "module") ^^ nmL diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs index c6303241fe4..c051e137939 100644 --- a/src/fsharp/Optimizer.fs +++ b/src/fsharp/Optimizer.fs @@ -3009,7 +3009,7 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) let isBaseCall = not (List.isEmpty args) && match args.[0] with - | Expr.Val (vref, _, _) when vref.BaseOrThisInfo = BaseVal -> true + | Expr.Val (vref, _, _) when vref.IsBaseVal -> true | _ -> false if isBaseCall then None else diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs index 5827e892757..7db94437827 100644 --- a/src/fsharp/PostInferenceChecks.fs +++ b/src/fsharp/PostInferenceChecks.fs @@ -315,10 +315,9 @@ let BindVal cenv env (v: Val) = not (v.DisplayName.StartsWithOrdinal("_")) && not v.IsCompilerGenerated then - match v.BaseOrThisInfo with - | ValBaseOrThisInfo.CtorThisVal -> + if v.IsCtorThisVal then warning (Error(FSComp.SR.chkUnusedThisVariable v.DisplayName, v.Range)) - | _ -> + else warning (Error(FSComp.SR.chkUnusedValue v.DisplayName, v.Range)) let BindVals cenv env vs = List.iter (BindVal cenv env) vs @@ -451,7 +450,7 @@ let CheckEscapes cenv allowProtected m syntacticArgs body = (* m is a range suit // Note that: Local mutables can be free, as they will be boxed later. // These checks must correspond to the tests governing the error messages below. - ((v.BaseOrThisInfo = BaseVal) || (isByrefLikeTy cenv.g m v.Type)) && + (v.IsBaseVal || isByrefLikeTy cenv.g m v.Type) && not (ListSet.contains valEq v syntacticArgs) let frees = freeInExpr CollectLocals body @@ -469,11 +468,11 @@ let CheckEscapes cenv allowProtected m syntacticArgs body = (* m is a range suit // For safety, such functions are assumed to have no known arity, and so can not accept byrefs. errorR(Error(FSComp.SR.chkByrefUsedInInvalidWay(v.DisplayName), m)) - elif v.BaseOrThisInfo = BaseVal then + elif v.IsBaseVal then errorR(Error(FSComp.SR.chkBaseUsedInInvalidWay(), m)) else - (* Should be dead code, unless governing tests change *) + // Should be dead code, unless governing tests change errorR(InternalError(FSComp.SR.chkVariableUsedInInvalidWay(v.DisplayName), m)) Some frees else @@ -789,7 +788,7 @@ and CheckValUse (cenv: cenv) (env: env) (vref: ValRef, vFlags, m) (context: Perm if cenv.reportErrors then - if vref.BaseOrThisInfo = BaseVal then + if vref.IsBaseVal then errorR(Error(FSComp.SR.chkLimitationsOfBaseKeyword(), m)) let isCallOfConstructorOfAbstractType = @@ -821,7 +820,7 @@ and CheckValUse (cenv: cenv) (env: env) (vref: ValRef, vFlags, m) (context: Perm let isReturnOfStructThis = context.PermitOnlyReturnable && isByrefTy g vref.Type && - (vref.BaseOrThisInfo = MemberThisVal) + (vref.IsMemberThisVal) if isReturnOfStructThis then errorR(Error(FSComp.SR.chkStructsMayNotReturnAddressesOfContents(), m)) @@ -1185,7 +1184,7 @@ and CheckExpr (cenv: cenv) (env: env) origExpr (context: PermitByRefExpr) : Limi // Allow base calls to F# methods | Expr.App (InnerExprPat(ExprValWithPossibleTypeInst(v, vFlags, _, _) as f), _fty, tyargs, Expr.Val (baseVal, _, _) :: rest, m) when ((match vFlags with VSlotDirectCall -> true | _ -> false) && - baseVal.BaseOrThisInfo = BaseVal) -> + baseVal.IsBaseVal) -> let memberInfo = Option.get v.MemberInfo if memberInfo.MemberFlags.IsDispatchSlot then @@ -1203,7 +1202,7 @@ and CheckExpr (cenv: cenv) (env: env) origExpr (context: PermitByRefExpr) : Limi // Allow base calls to IL methods | Expr.Op (TOp.ILCall (isVirtual, _, _, _, _, _, _, ilMethRef, enclTypeInst, methInst, retTypes), tyargs, Expr.Val (baseVal, _, _) :: rest, m) - when not isVirtual && baseVal.BaseOrThisInfo = BaseVal -> + when not isVirtual && baseVal.IsBaseVal -> // Disallow calls to abstract base methods on IL types. match tryTcrefOfAppTy g baseVal.Type with @@ -1537,7 +1536,7 @@ and CheckExprOp cenv env (op, tyargs, args, m) context expr = // C# applies a rule where the APIs to struct types can't return the addresses of fields in that struct. // There seems no particular reason for this given that other protections in the language, though allowing // it would mean "readonly" on a struct doesn't imply immutability-of-contents - it only implies - if context.PermitOnlyReturnable && (match obj with Expr.Val (vref, _, _) -> vref.BaseOrThisInfo = MemberThisVal | _ -> false) && isByrefTy g (tyOfExpr g obj) then + if context.PermitOnlyReturnable && (match obj with Expr.Val (vref, _, _) -> vref.IsMemberThisVal | _ -> false) && isByrefTy g (tyOfExpr g obj) then errorR(Error(FSComp.SR.chkStructsMayNotReturnAddressesOfContents(), m)) if context.Disallow && cenv.reportErrors && isByrefLikeTy g m (tyOfExpr g expr) then @@ -1562,7 +1561,7 @@ and CheckExprOp cenv env (op, tyargs, args, m) context expr = if context.Disallow && cenv.reportErrors && isByrefLikeTy g m (tyOfExpr g expr) then errorR(Error(FSComp.SR.chkNoAddressFieldAtThisPoint(uref.CaseName), m)) - if context.PermitOnlyReturnable && (match obj with Expr.Val (vref, _, _) -> vref.BaseOrThisInfo = MemberThisVal | _ -> false) && isByrefTy g (tyOfExpr g obj) then + if context.PermitOnlyReturnable && (match obj with Expr.Val (vref, _, _) -> vref.IsMemberThisVal | _ -> false) && isByrefTy g (tyOfExpr g obj) then errorR(Error(FSComp.SR.chkStructsMayNotReturnAddressesOfContents(), m)) CheckTypeInstNoByrefs cenv env m tyargs diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index 661bc6ba744..abf485500bd 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -237,11 +237,31 @@ let keywordsWithDescription : (string * string) list = let keywordLookup = set (List.map fst keywordsWithDescription) +// Some legacy compat operator names are not encode using op_XYZ and this +// do not carry sufficient information to distinguish between +// let (or) x y = x || y +// let ``or`` x y = x || y +// let (land) x y = x || y +// let ``land`` x y = x || y +// All are deprecated except 'mod'. All except those two get double-backticks +let IsUnencodedOpName (name: string) = + match name with + | "mod" -> true + | _ -> false + +let IsUnencodedLegacyOpName (name: string) = + match name with + | "or" | "land" | "lor" | "lsl" + | "lsr" | "asr" | "lxor" -> true + | _ -> false + let IsIdentifierName (name: string) = + not (keywordLookup.Contains name) && + not (IsUnencodedOpName name) && + not (IsUnencodedLegacyOpName name) && let nameLen = name.Length nameLen > 0 && IsIdentifierFirstCharacter name.[0] && - not (keywordLookup.Contains name) && let rec loop i = (i >= nameLen || (IsIdentifierPartCharacter(name.[i]) && loop (i+1))) loop 1 @@ -288,29 +308,6 @@ let IsOperatorDisplayName (name: string) = let IsMangledOpName (name: string) = name.StartsWithOrdinal(opNamePrefix) -let IsSpecialOpName (name: string) = - match name with - | "or" | "land" | "lor" | "lsl" - | "lsr" | "asr" | "lxor" -> true - | _ -> false - -let DoesIdentifierNeedBackticks (name : string) : bool = - not (IsSpecialOpName name) && - not (IsIdentifierName name) && - not (IsActivePatternName name) - -/// A utility to help determine if an identifier needs to be quoted -let AddBackticksToIdentifierIfNeeded (name : string) : string = - if DoesIdentifierNeedBackticks name then "``" + name + "``" else name - -/// Quote identifier with double backticks if needed, remove unnecessary double backticks quotation. -let NormalizeIdentifierBackticks (name : string) : string = - let s = - if name.StartsWithOrdinal("``") && name.EndsWithOrdinal("``") then - name.[2..name.Length - 3] - else name - AddBackticksToIdentifierIfNeeded s - /// Compiles a custom operator into a mangled operator name. /// For example, "!%" becomes "op_DereferencePercent". /// This function should only be used for custom operators @@ -322,6 +319,7 @@ let private compileCustomOpName = for x, y in opCharTranslateTable do t2.Add (x, y) t2 + /// The maximum length of the name for a custom operator character. /// This value is used when initializing StringBuilders to avoid resizing. let maxOperatorNameLength = @@ -364,7 +362,7 @@ let CompileOpName op = match standardOpNames.TryGetValue op with | true, x -> x | false, _ -> - if IsSpecialOpName op || IsIdentifierName op then + if IsUnencodedOpName op || IsUnencodedLegacyOpName op || IsIdentifierName op then op else compileCustomOpName op @@ -455,12 +453,37 @@ let DecompileOpName opName = else opName -let ConvertLogicalNameToDisplayText name = - if IsSpecialOpName name || IsMangledOpName name || IsActivePatternName name then +let DoesIdentifierNeedBackticks (name: string) : bool = + not (IsUnencodedOpName name) && + not (IsIdentifierName name) && + not (IsActivePatternName name) + +/// A utility to help determine if an identifier needs to be quoted +let AddBackticksToIdentifierIfNeeded (name: string) : string = + if DoesIdentifierNeedBackticks name && + not (name.StartsWithOrdinal("`")) && + not (name.EndsWithOrdinal("`")) then + "``" + name + "``" + else + name + +/// Quote identifier with double backticks if needed, remove unnecessary double backticks quotation. +let NormalizeIdentifierBackticks (name: string) : string = + let s = + if name.StartsWithOrdinal("``") && name.EndsWithOrdinal("``") then + name.[2..name.Length - 3] + else name + AddBackticksToIdentifierIfNeeded s + +let ConvertValCoreNameToDisplayName isBaseVal name = + if isBaseVal && name = "base" then + "base" + elif IsUnencodedOpName name || IsMangledOpName name || IsActivePatternName name then let nm = DecompileOpName name + // Check for no decompilation, e.g. op_Implicit, op_NotAMangledOpName, op_A-B if IsMangledOpName name && (nm = name) then - AddBackticksToIdentifierIfNeeded nm // no decompilation, e.g. op_Implicit, op_NotAMangledOpName - elif nm.StartsWith "*" || nm.EndsWith "*" then + AddBackticksToIdentifierIfNeeded nm + elif nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*" then "( " + nm + " )" else "(" + nm + ")" @@ -473,12 +496,15 @@ let ConvertDisplayNameToDisplayLayout nonOpLayout name = else nonOpLayout name -let ConvertValLogicalNameToDisplayLayout nonOpLayout name = - if IsSpecialOpName name || IsMangledOpName name || IsActivePatternName name then +let ConvertValCoreNameToDisplayLayout isBaseVal nonOpLayout name = + if isBaseVal && name = "base" then + nonOpLayout "base" + elif IsUnencodedOpName name || IsMangledOpName name || IsActivePatternName name then let nm = DecompileOpName name + // Check for no decompilation, e.g. op_Implicit, op_NotAMangledOpName, op_A-B if IsMangledOpName name && (nm = name) then - ConvertDisplayNameToDisplayLayout nonOpLayout name // no decompilation, e.g. op_Implicit, op_NotAMangledOpName - elif nm.StartsWith "*" || nm.EndsWith "*" then + ConvertDisplayNameToDisplayLayout nonOpLayout name + elif nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*" then wordL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ wordL (TaggedText.tagPunctuation ")") else leftL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation ")") diff --git a/src/fsharp/PrettyNaming.fsi b/src/fsharp/PrettyNaming.fsi index 15b2721d92f..307e34fc824 100644 --- a/src/fsharp/PrettyNaming.fsi +++ b/src/fsharp/PrettyNaming.fsi @@ -98,10 +98,13 @@ val DecompileOpName: string -> string /// op_DereferencePercent --> (!%) /// A-B --> ``A-B`` /// |A|_| --> (|A|_|) -val internal ConvertLogicalNameToDisplayText: name: string -> string +/// base --> base +/// or --> or +/// mod --> mod +val internal ConvertValCoreNameToDisplayName: isBaseVal: bool -> name: string -> string -/// Like ConvertLogicalNameToDisplayText but produces a tagged layout -val internal ConvertValLogicalNameToDisplayLayout: nonOpLayout: (string -> Layout) -> name: string -> Layout +/// Like ConvertValCoreNameToDisplayName but produces a tagged layout +val internal ConvertValCoreNameToDisplayLayout: isBaseVal: bool -> nonOpLayout: (string -> Layout) -> name: string -> Layout /// Used for type names, module names etc. val internal ConvertDisplayNameToDisplayLayout: nonOpLayout: (string -> Layout) -> name: string -> Layout diff --git a/src/fsharp/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs index 5bee3e94d76..26b3b207461 100644 --- a/src/fsharp/QuotationTranslator.fs +++ b/src/fsharp/QuotationTranslator.fs @@ -207,7 +207,7 @@ let (|ObjectInitializationCheck|_|) g expr = ) when IsCompilerGeneratedName name && name.StartsWithOrdinal("init") && - selfRef.BaseOrThisInfo = MemberThisVal && + selfRef.IsMemberThisVal && valRefEq g failInitRef (ValRefForIntrinsic g.fail_init_info) && isUnitTy g resultTy -> Some() | _ -> None @@ -933,7 +933,7 @@ and private ConvValRefCore holeOk cenv env m (vref: ValRef) tyargs = elif env.vs.ContainsVal v then if not (List.isEmpty tyargs) then wfail(InternalError("ignoring generic application of local quoted variable", m)) QP.mkVar(env.vs.[v]) - elif v.BaseOrThisInfo = CtorThisVal && cenv.isReflectedDefinition = IsReflectedDefinition.Yes then + elif v.IsCtorThisVal && cenv.isReflectedDefinition = IsReflectedDefinition.Yes then QP.mkThisVar(ConvType cenv env m v.Type) else let vty = v.Type diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index 920a2c44e97..675076dfd74 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -2700,6 +2700,15 @@ type Val = /// Indicates if this is a 'base' or 'this' value? member x.BaseOrThisInfo = x.val_flags.BaseOrThisInfo + /// Indicates if this is a 'this' value for an implicit ctor? + member x.IsCtorThisVal = (x.BaseOrThisInfo = CtorThisVal) + + /// Indicates if this is a 'this' value for a member? + member x.IsMemberThisVal = (x.BaseOrThisInfo = MemberThisVal) + + /// Indicates if this is a 'base' value? + member x.IsBaseVal = (x.BaseOrThisInfo = BaseVal) + // Indicates if this value was declared to be a type function, e.g. "let f<'a> = typeof<'a>" member x.IsTypeFunction = x.val_flags.IsTypeFunction @@ -2903,8 +2912,10 @@ type Val = /// - If this is an active pattern --> (|A|_|) /// - If this is an operator --> (+) /// - If this is an identifier needing backticks --> ``A-B`` + /// - If this is a base value --> base + /// - If this is a value named ``base`` --> ``base`` member x.DisplayName = - ConvertLogicalNameToDisplayText x.CoreDisplayName + ConvertValCoreNameToDisplayName x.IsBaseVal x.CoreDisplayName member x.SetValRec b = x.val_flags <- x.val_flags.WithRecursiveValInfo b @@ -3774,6 +3785,15 @@ type ValRef = /// Indicates if this is a 'base' or 'this' value? member x.BaseOrThisInfo = x.Deref.BaseOrThisInfo + /// Indicates if this is a 'base' value? + member x.IsBaseVal = x.Deref.IsBaseVal + + /// Indicates if this is a 'this' value for an implicit ctor? + member x.IsCtorThisVal = x.Deref.IsCtorThisVal + + /// Indicates if this is a 'this' value for a member? + member x.IsMemberThisVal = x.Deref.IsMemberThisVal + /// Indicates if this value was declared to be a type function, e.g. "let f<'a> = typeof<'a>" member x.IsTypeFunction = x.Deref.IsTypeFunction diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index bbe3fc3170c..e0e7fa7d09e 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -3826,7 +3826,7 @@ module DebugPrint = let layoutUnionCaseArgTypes argtys = sepListL (wordL(tagText "*")) (List.map typeL argtys) let ucaseL prefixL (ucase: UnionCase) = - let nmL = wordL (tagText (ConvertLogicalNameToDisplayText ucase.Id.idText)) + let nmL = wordL (tagText (ConvertValCoreNameToDisplayName false ucase.Id.idText)) match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL(tagText "of")) --- layoutUnionCaseArgTypes argtys @@ -8647,7 +8647,7 @@ let GetMemberCallInfo g (vref: ValRef, vFlags) = //--------------------------------------------------------------------------- let TryGetActivePatternInfo (vref: ValRef) = - // First is an optimization to prevent calls to CoreDisplayName, which calls ConvertLogicalNameToDisplayText + // First is an optimization to prevent calls to CoreDisplayName, which calls ConvertValCoreNameToDisplayName let logicalName = vref.LogicalName if logicalName.Length = 0 || logicalName.[0] <> '|' then None diff --git a/src/fsharp/symbols/Exprs.fs b/src/fsharp/symbols/Exprs.fs index 12b94f53566..2c0be748dd6 100644 --- a/src/fsharp/symbols/Exprs.fs +++ b/src/fsharp/symbols/Exprs.fs @@ -1201,9 +1201,9 @@ module FSharpExprConvert = elif env.substVals.ContainsVal v then let e = env.substVals.[v] ConvExprPrim cenv env e - elif v.BaseOrThisInfo = CtorThisVal then + elif v.IsCtorThisVal then E.ThisValue(ConvType cenv v.Type) - elif v.BaseOrThisInfo = BaseVal then + elif v.IsBaseVal then E.BaseValue(ConvType cenv v.Type) else E.Value(FSharpMemberOrFunctionOrValue(cenv, vref)) diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs index 3ba63c00dc1..b190c30f080 100644 --- a/src/fsharp/symbols/Symbols.fs +++ b/src/fsharp/symbols/Symbols.fs @@ -2102,21 +2102,21 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = if isUnresolved() then false else match d with | M _ | C _ | P _ | E _ -> false - | V v -> v.BaseOrThisInfo = BaseVal + | V v -> v.IsBaseVal /// Is this the "x" in "type C() as x = ..." member _.IsConstructorThisValue = if isUnresolved() then false else match d with | M _ | C _| P _ | E _ -> false - | V v -> v.BaseOrThisInfo = CtorThisVal + | V v -> v.IsCtorThisVal /// Is this the "x" in "member x.M = ..." member _.IsMemberThisValue = if isUnresolved() then false else match d with | M _ | C _ | P _ | E _ -> false - | V v -> v.BaseOrThisInfo = MemberThisVal + | V v -> v.IsMemberThisVal /// Is this a [] value, and if so what value? (may be null) member _.LiteralValue = diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs index 3c98e75bd11..759c5bdc737 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs @@ -59,7 +59,7 @@ let x = N.``longe name`` |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 5, Col 11, Line 5, Col 25, - ("The value, constructor, namespace or type 'longe name' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " longer name")) + ("The value, constructor, namespace or type 'longe name' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " ``longer name``")) [] let ``Suggest Double Backtick Unions`` () = diff --git a/tests/fsharp/core/printing/test.fsx b/tests/fsharp/core/printing/test.fsx index 0953c55117c..95bc9c6ea10 100644 --- a/tests/fsharp/core/printing/test.fsx +++ b/tests/fsharp/core/printing/test.fsx @@ -964,32 +964,62 @@ type System.Int32 with member a.ExtrinsicExtensionMethod() = 2 ;; -let ``value with spaces in name`` = true;; +let ``value with spaces in name`` = true ;; +let functionWhichTakesLongNameMixedParameters + (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int, + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int) + (ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int, + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int) = 1 + 1 +;; + +let functionWhichTakesLongNameTupledParameters + (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int, + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int, + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int, + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int) = 1 + 1 +;; -let f (``parameter with spaces in name``: int) = 1;; +let functionWhichTakesLongNameCurriedParameters + (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int) + (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int) + (cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int) + (dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int) = 1 + 1 ;; -let functionWhichTakesAParameterPeeciselyPlusButNotOpAddition (``+``: int -> int -> int) = ``+`` 1 2;; +let functionWhichTakesMixedLengthCurriedParametersA a b c ddddddddddddddddddddddddddddddddddddddddddddd = 1 + 1 ;; -let functionWhichTakesAParameterOpAddition ((+): int -> int -> int) = 1 + 1;; +let functionWhichTakesMixedLengthCurriedParametersB aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b c d = 1 + 1 ;; -type RecordWithSpacesInNamesOfFields = + +let f (``parameter with spaces in name``: int) = 1 +;; + +let functionWhichTakesAParameterPeeciselyPlusButNotOpAddition (``+``: int -> int -> int) = ``+`` 1 2 +;; + +let functionWhichTakesAParameterOpAddition ((+): int -> int -> int) = 1 + 1 +;; + +let functionWhichTakesAParameterCalled_land (``land``: int -> int -> int) = 1 + 1 +;; + +type RecordWithStrangeNames = { ``funky name`` : obj op_Addition : obj ``+`` : obj + ``land`` : obj + ``base`` : obj } ;; type UnionWithSpacesInNamesOfCases = | ``Funky name`` // Check this gets double ticks | ``Funky name 2`` // Check this gets double ticks - | op_Addition // Check this doesn't go to (+) for types - | ``+`` // Check this gets double ticks ;; type ``Type with spaces in name`` = // Check this gets double ticks @@ -1002,21 +1032,49 @@ type op_Addition = // Check this doesn't go to (+) for types | B ;; +type ``land`` = // Check this doesn't go to (land) for types, it gets double ticks because (land) is deprecated + | A + | B +;; + module ``Module with spaces in name`` = // Check this gets double ticks let x = 1 ;; -module op_Addition = // Check this doesn't go to (+) for modules +module op_Addition = // Check this doesn't go to (+) for modules, nor get double ticks let x = 1 ;; -let ``+`` x y = 1 // This is not op_Addition but a function called '+' +module ``land`` = // Check this doesn't go to (land) for modules, it gets double ticks because (land) is deprecated + let x = 1 ;; +let ``+`` x y = 1 // This is not op_Addition but a function called '+' +;; let (+) x y = x + y + 1 // This is op_Addition not a function called '+' ;; +let ``base`` = 2 // This is not a base value but a value called 'base' +;; + +let ``mod`` = 2 // This is a value called 'mod' in .NET IL, but we can't distinguish from (mod), so print it as (mod) +;; + +let ``or`` = 2 // This is a value called 'or' in .NET IL, legacy, but we can't distinguish from (or), so print it as ``or`` +;; + +let ``land`` = 2 // This is a value called 'land' in .NET IL, legacy, but we can't distinguish from legacy unused (land), so print it as ``land`` +;; + +let ``.ctor`` = 2 // This is a value called '.ctor' in .NET IL, and has no special properties +;; + +let ``.cctor`` = 2 // This is a value called '.cctor' in .NET IL, and has no special properties +;; + + + ;; (* ;; needed, to isolate error regressions *) ;;exit 0;; (* piped in to enable error regressions *) \ No newline at end of file diff --git a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl index 06a37a289aa..4d3209ca246 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stderr.bsl @@ -334,9 +334,3 @@ stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function - - | op_Addition // Check this doesn't go to (+) for types - ------^^^^^^^^^^^ - -stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers - diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index 652a5e977f4..9880b10f365 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -1045,7 +1045,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -1055,20 +1055,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -1170,9 +1170,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -1488,14 +1488,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> 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]) - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -1540,7 +1540,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -1588,19 +1588,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -2523,9 +2523,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -2613,21 +2613,58 @@ type Int32 with > val ``value with spaces in name`` : bool = true -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -2635,14 +2672,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int = 1 > module op_Addition = val x: int = 1 +> module ``land`` = + val x: int = 1 + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int = 2 + +> val (mod) : int = 2 + +> val ``or`` : int = 2 + +> val ``land`` : int = 2 + +> val ``.ctor`` : int = 2 + +> val ``.cctor`` : int = 2 + > > > diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index 58d3b3cc3e6..acb9ce8d7fc 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -1045,7 +1045,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -1055,20 +1055,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -1172,9 +1172,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -1490,14 +1490,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> 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]) - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -1542,7 +1542,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -1590,19 +1590,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -2525,9 +2525,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -2615,21 +2615,58 @@ type Int32 with > val ``value with spaces in name`` : bool = true -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -2637,14 +2674,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int = 1 > module op_Addition = val x: int = 1 +> module ``land`` = + val x: int = 1 + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int = 2 + +> val (mod) : int = 2 + +> val ``or`` : int = 2 + +> val ``land`` : int = 2 + +> val ``.ctor`` : int = 2 + +> val ``.cctor`` : int = 2 + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl index 06a37a289aa..4d3209ca246 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stderr.bsl @@ -334,9 +334,3 @@ stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function - - | op_Addition // Check this doesn't go to (+) for types - ------^^^^^^^^^^^ - -stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers - diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index 280014ddc73..a435be79bdd 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -365,7 +365,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -375,20 +375,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -490,9 +490,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -733,14 +733,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> 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]) - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -785,7 +785,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -833,19 +833,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -1768,9 +1768,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1858,21 +1858,58 @@ type Int32 with > val ``value with spaces in name`` : bool = true -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -1880,14 +1917,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int = 1 > module op_Addition = val x: int = 1 +> module ``land`` = + val x: int = 1 + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int = 2 + +> val (mod) : int = 2 + +> val ``or`` : int = 2 + +> val ``land`` : int = 2 + +> val ``.ctor`` : int = 2 + +> val ``.cctor`` : int = 2 + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index 431193468cd..db13a4a86e8 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -365,7 +365,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -375,20 +375,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -492,9 +492,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -735,14 +735,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> 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]) - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -787,7 +787,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -835,19 +835,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -1770,9 +1770,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1860,21 +1860,58 @@ type Int32 with > val ``value with spaces in name`` : bool = true -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -1882,14 +1919,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int = 1 > module op_Addition = val x: int = 1 +> module ``land`` = + val x: int = 1 + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int = 2 + +> val (mod) : int = 2 + +> val ``or`` : int = 2 + +> val ``land`` : int = 2 + +> val ``.ctor`` : int = 2 + +> val ``.cctor`` : int = 2 + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl index 06a37a289aa..4d3209ca246 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stderr.bsl @@ -334,9 +334,3 @@ stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function - - | op_Addition // Check this doesn't go to (+) for types - ------^^^^^^^^^^^ - -stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers - diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index 0a85fa6e54d..eae02eac40c 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -4004,7 +4004,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -4014,20 +4014,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -4129,9 +4129,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -5035,14 +5035,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> 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]) - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -5087,7 +5087,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -5135,19 +5135,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -6070,9 +6070,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -6160,21 +6160,58 @@ type Int32 with > val ``value with spaces in name`` : bool = true -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -6182,14 +6219,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int = 1 > module op_Addition = val x: int = 1 +> module ``land`` = + val x: int = 1 + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int = 2 + +> val (mod) : int = 2 + +> val ``or`` : int = 2 + +> val ``land`` : int = 2 + +> val ``.ctor`` : int = 2 + +> val ``.cctor`` : int = 2 + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index 299485ac4a1..2fe64143240 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -4004,7 +4004,7 @@ val exU: exn = ExUnit () val exUs: exn = ExUnits ((), ()) val exUSome: exn = ExUnitOption (Some ()) val exUNone: exn = ExUnitOption None -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 = AT4063 12 @@ -4014,20 +4014,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 = AT4063 null -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -4131,9 +4131,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -5037,14 +5037,14 @@ module Test4343e = val dB: D = D(2) val dAB: D * D * D list = (D(1), D(2), [D(1); D(2)]) module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> 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]) - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D = D(1) @@ -5089,7 +5089,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -5137,19 +5137,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -6072,9 +6072,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -6162,21 +6162,58 @@ type Int32 with > val ``value with spaces in name`` : bool = true -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -6184,14 +6221,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int = 1 > module op_Addition = val x: int = 1 +> module ``land`` = + val x: int = 1 + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int = 2 + +> val (mod) : int = 2 + +> val ``or`` : int = 2 + +> val ``land`` : int = 2 + +> val ``.ctor`` : int = 2 + +> val ``.cctor`` : int = 2 + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl index 06a37a289aa..4d3209ca246 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stderr.bsl @@ -334,9 +334,3 @@ stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function - - | op_Addition // Check this doesn't go to (+) for types - ------^^^^^^^^^^^ - -stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers - diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index a4800f8e92a..15e2cffc793 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -192,7 +192,7 @@ val exU: exn val exUs: exn val exUSome: exn val exUNone: exn -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 @@ -202,20 +202,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -317,9 +317,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -521,12 +521,12 @@ module Test4343e = val dB: D val dAB: D * D * D list module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> val cA: C val cB: C val cAB: C * C * C list - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D @@ -571,7 +571,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -605,19 +605,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -1538,9 +1538,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1628,21 +1628,58 @@ type Int32 with > val ``value with spaces in name`` : bool -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -1650,14 +1687,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int > module op_Addition = val x: int +> module ``land`` = + val x: int + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int + +> val (mod) : int + +> val ``or`` : int + +> val ``land`` : int + +> val ``.ctor`` : int + +> val ``.cctor`` : int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index 94368dd4aad..d883d88e52b 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -192,7 +192,7 @@ val exU: exn val exUs: exn val exUSome: exn val exUNone: exn -type 'a ``T4063`1`` = | AT4063 of 'a +type 'a T4063 = | AT4063 of 'a > val valAT3063_12: int T4063 @@ -202,20 +202,20 @@ type 'a ``T4063`1`` = | AT4063 of 'a > val valAT3063_null: System.Object T4063 -> type ``M4063`1``<'a> = +> type M4063<'a> = new: x: 'a -> M4063<'a> > val v4063: M4063 -> type ``Taaaaa`1``<'a> = +> type Taaaaa<'a> = new: unit -> Taaaaa<'a> -> type ``Taaaaa2`1``<'a> = +> type Taaaaa2<'a> = inherit Taaaaa<'a> new: unit -> Taaaaa2<'a> member M: unit -> Taaaaa2<'a> -> type ``Tbbbbb`1``<'a> = +> type Tbbbbb<'a> = new: x: 'a -> Tbbbbb<'a> member M: unit -> 'a @@ -319,9 +319,9 @@ type 'a ``T4063`1`` = | AT4063 of 'a > type T0 = new: unit -> T0 -type ``T1Post`1``<'a> = +type T1Post<'a> = new: unit -> T1Post<'a> -type 'a ``T1Pre`1`` = +type 'a T1Pre = new: unit -> 'a T1Pre > type T0 with @@ -523,12 +523,12 @@ module Test4343e = val dB: D val dAB: D * D * D list module Generic = - type ``CGeneric`1``<'a> = + type CGeneric<'a> = new: x: 'a -> CGeneric<'a> val cA: C val cB: C val cAB: C * C * C list - type ``D`1``<'a> = + type D<'a> = new: x: 'a -> D<'a> override ToString: unit -> string val dA: D @@ -573,7 +573,7 @@ module Regression4643 = [] type field_is_RIP = val x: RIP -type ``Either`2``<'a,'b> = +type Either<'a,'b> = | This of 'a | That of 'b val catch: f: (unit -> 'a) -> Either<'a,(string * string)> @@ -607,19 +607,19 @@ module Regression5218 = > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3739 = type IB = abstract AbstractMember: int -> int - type ``C`1``<'a when 'a :> IB> = + type C<'a when 'a :> IB> = new: unit -> C<'a> static member StaticMember: x: 'a -> int > module Regression3740 = - type ``Writer`1``<'a> = + type Writer<'a> = abstract get_path: unit -> string type MyClass = interface Writer @@ -1540,9 +1540,9 @@ val f: (unit -> int) abstract M: #IB -> int and IB = abstract M: #IA -> int - type ``IA2`1``<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = + type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = abstract M: int - and ``IB2`1``<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = + and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = abstract M: int > val it: string = @@ -1630,21 +1630,58 @@ type Int32 with > val ``value with spaces in name`` : bool -> > val f: ``parameter with spaces in name`` : int -> int - -> > val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: +> val functionWhichTakesLongNameMixedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameTupledParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * + ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * + ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesLongNameCurriedParameters: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int + -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int + -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int + -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int + -> int + +> val functionWhichTakesMixedLengthCurriedParametersA: + a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd + -> int + +> val functionWhichTakesMixedLengthCurriedParametersB: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int + +> val f: ``parameter with spaces in name`` : int -> int + +> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: ``+`` : (int -> int -> int) -> int -> > val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int +> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int + +> val functionWhichTakesAParameterCalled_land: + ``land`` : (int -> int -> int) -> int -> > type RecordWithSpacesInNamesOfFields = +> type RecordWithStrangeNames = { ``funky name`` : obj op_Addition: obj ``+`` : obj + ``land`` : obj + ``base`` : obj } -> > type ``Type with spaces in name`` = +> type UnionWithSpacesInNamesOfCases = + | ``Funky name`` + | ``Funky name 2`` + +> type ``Type with spaces in name`` = | A | B @@ -1652,14 +1689,33 @@ type Int32 with | A | B -> module Module with spaces in name = +> type ``land`` = + | A + | B + +> module ``Module with spaces in name`` = val x: int > module op_Addition = val x: int +> module ``land`` = + val x: int + > val ``+`` : x: 'a -> y: 'b -> int > val (+) : x: int -> y: int -> int +> val ``base`` : int + +> val (mod) : int + +> val ``or`` : int + +> val ``land`` : int + +> val ``.ctor`` : int + +> val ``.cctor`` : int + > > > diff --git a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl index 06a37a289aa..4d3209ca246 100644 --- a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl +++ b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl @@ -334,9 +334,3 @@ stdin(838,6): error FS1210: Active pattern '|A|B|' has a result type containing stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function - - | op_Addition // Check this doesn't go to (+) for types - ------^^^^^^^^^^^ - -stdin(991,7): error FS0053: Discriminated union cases and exception labels must be uppercase identifiers - diff --git a/tests/service/ExprTests.fs b/tests/service/ExprTests.fs index 2d9b667fd55..8713bb41e96 100644 --- a/tests/service/ExprTests.fs +++ b/tests/service/ExprTests.fs @@ -3002,7 +3002,7 @@ module StressBigExpressions let BigListExpression = [("C", "M.C", "file1", ((3, 5), (3, 6)), ["class"]); - ("( .ctor )", "M.C.( .ctor )", "file1", ((3, 5), (3, 6)),["member"; "ctor"]); + ("``.ctor``", "M.C.``.ctor``", "file1", ((3, 5), (3, 6)),["member"; "ctor"]); ("P", "M.C.P", "file1", ((4, 13), (4, 14)), ["member"; "getter"]); ("x", "x", "file1", ((4, 11), (4, 12)), []); ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file1",((6, 12), (6, 13)), ["val"]); @@ -3018,13 +3018,13 @@ let BigListExpression = ("CAbbrev", "M.CAbbrev", "file1", ((9, 5), (9, 12)), ["abbrev"]); ("M", "M", "file1", ((1, 7), (1, 8)), ["module"]); ("D1", "N.D1", "file2", ((5, 5), (5, 7)), ["class"]); - ("( .ctor )", "N.D1.( .ctor )", "file2", ((5, 5), (5, 7)),["member"; "ctor"]); + ("``.ctor``", "N.D1.``.ctor``", "file2", ((5, 5), (5, 7)),["member"; "ctor"]); ("SomeProperty", "N.D1.SomeProperty", "file2", ((6, 13), (6, 25)),["member"; "getter"]); ("x", "x", "file2", ((6, 11), (6, 12)), []); ("M", "M", "file2", ((6, 28), (6, 29)), ["module"]); ("xxx", "M.xxx", "file2", ((6, 28), (6, 33)), ["val"]); ("D2", "N.D2", "file2", ((8, 5), (8, 7)), ["class"]); - ("( .ctor )", "N.D2.( .ctor )", "file2", ((8, 5), (8, 7)),["member"; "ctor"]); + ("``.ctor``", "N.D2.``.ctor``", "file2", ((8, 5), (8, 7)),["member"; "ctor"]); ("SomeProperty", "N.D2.SomeProperty", "file2", ((9, 13), (9, 25)),["member"; "getter"]); ("x", "x", "file2", ((9, 11), (9, 12)), []); ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2",((9, 36), (9, 37)), ["val"]); ("M", "M", "file2", ((9, 28), (9, 29)), ["module"]); @@ -3043,7 +3043,7 @@ let BigListExpression = ("x", "N.D3.x", "file2", ((19, 16), (19, 17)),["field"; "default"; "mutable"]); ("D3", "N.D3", "file2", ((15, 5), (15, 7)), ["class"]); ("int", "Microsoft.FSharp.Core.int", "file2", ((15, 10), (15, 13)),["abbrev"]); ("a", "a", "file2", ((15, 8), (15, 9)), []); - ("( .ctor )", "N.D3.( .ctor )", "file2", ((15, 5), (15, 7)),["member"; "ctor"]); + ("``.ctor``", "N.D3.``.ctor``", "file2", ((15, 5), (15, 7)),["member"; "ctor"]); ("SomeProperty", "N.D3.SomeProperty", "file2", ((21, 13), (21, 25)),["member"; "getter"]); ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2",((16, 14), (16, 15)), ["val"]); ("a", "a", "file2", ((16, 12), (16, 13)), []); diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index fc91dc0f656..974bc949e1c 100644 --- a/tests/service/ProjectAnalysisTests.fs +++ b/tests/service/ProjectAnalysisTests.fs @@ -176,7 +176,7 @@ let ``Test project1 basic`` () = [ for x in wholeProjectResults.AssemblySignature.Entities.[1].NestedEntities -> x.DisplayName ] |> shouldEqual ["C"; "CAbbrev"] set [ for x in wholeProjectResults.AssemblySignature.Entities.[0].MembersFunctionsAndValues -> x.DisplayName ] - |> shouldEqual (set ["y2"; "pair2"; "pair1"; "( ++ )"; "c1"; "c2"; "mmmm1"; "mmmm2"; "enumValue" ]) + |> shouldEqual (set ["y2"; "pair2"; "pair1"; "(++)"; "c1"; "c2"; "mmmm1"; "mmmm2"; "enumValue" ]) [] let ``Test project1 all symbols`` () = @@ -422,14 +422,14 @@ let ``Test project1 all uses of all symbols`` () = s.Symbol.DisplayName, s.Symbol.FullName, Project1.cleanFileName s.FileName, tupsZ s.Range, attribsOfSymbol s.Symbol ] let expected = [("C", "M.C", "file1", ((3, 5), (3, 6)), ["class"]); - ("( .ctor )", "M.C.( .ctor )", "file1", ((3, 5), (3, 6)), + ("``.ctor``", "M.C.``.ctor``", "file1", ((3, 5), (3, 6)), ["member"; "ctor"]); ("P", "M.C.P", "file1", ((4, 13), (4, 14)), ["member"; "getter"]); ("x", "x", "file1", ((4, 11), (4, 12)), []); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file1", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file1", ((6, 12), (6, 13)), ["val"]); ("xxx", "M.xxx", "file1", ((6, 4), (6, 7)), ["val"]); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file1", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file1", ((7, 17), (7, 18)), ["val"]); ("xxx", "M.xxx", "file1", ((7, 13), (7, 16)), ["val"]); ("xxx", "M.xxx", "file1", ((7, 19), (7, 22)), ["val"]); @@ -442,18 +442,18 @@ let ``Test project1 all uses of all symbols`` () = ("M", "M", "file1", ((1, 7), (1, 8)), ["module"]); ("M", "M", "file2", ((3, 5), (3, 6)), ["module"]); ("D1", "N.D1", "file2", ((5, 5), (5, 7)), ["class"]); - ("( .ctor )", "N.D1.( .ctor )", "file2", ((5, 5), (5, 7)), + ("``.ctor``", "N.D1.``.ctor``", "file2", ((5, 5), (5, 7)), ["member"; "ctor"]); ("SomeProperty", "N.D1.SomeProperty", "file2", ((6, 13), (6, 25)), ["member"; "getter"]); ("x", "x", "file2", ((6, 11), (6, 12)), []); ("M", "M", "file2", ((6, 28), (6, 29)), ["module"]); ("xxx", "M.xxx", "file2", ((6, 28), (6, 33)), ["val"]); ("D2", "N.D2", "file2", ((8, 5), (8, 7)), ["class"]); - ("( .ctor )", "N.D2.( .ctor )", "file2", ((8, 5), (8, 7)), + ("``.ctor``", "N.D2.``.ctor``", "file2", ((8, 5), (8, 7)), ["member"; "ctor"]); ("SomeProperty", "N.D2.SomeProperty", "file2", ((9, 13), (9, 25)), ["member"; "getter"]); ("x", "x", "file2", ((9, 11), (9, 12)), []); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((9, 36), (9, 37)), ["val"]); ("M", "M", "file2", ((9, 28), (9, 29)), ["module"]); ("fff", "M.fff", "file2", ((9, 28), (9, 33)), ["val"]); @@ -480,22 +480,22 @@ let ``Test project1 all uses of all symbols`` () = ("D3", "N.D3", "file2", ((15, 5), (15, 7)), ["class"]); ("int", "Microsoft.FSharp.Core.int", "file2", ((15, 10), (15, 13)), ["abbrev"]); ("a", "a", "file2", ((15, 8), (15, 9)), []); - ("( .ctor )", "N.D3.( .ctor )", "file2", ((15, 5), (15, 7)), + ("``.ctor``", "N.D3.``.ctor``", "file2", ((15, 5), (15, 7)), ["member"; "ctor"]); ("SomeProperty", "N.D3.SomeProperty", "file2", ((21, 13), (21, 25)), ["member"; "getter"]); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((16, 14), (16, 15)), ["val"]); ("a", "a", "file2", ((16, 12), (16, 13)), []); ("b", "b", "file2", ((16, 8), (16, 9)), []); ("x", "x", "file2", ((21, 11), (21, 12)), []); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((21, 30), (21, 31)), ["val"]); ("a", "a", "file2", ((21, 28), (21, 29)), []); ("b", "b", "file2", ((21, 32), (21, 33)), []); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((23, 25), (23, 26)), ["val"]); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((23, 21), (23, 22)), ["val"]); ("int32", "Microsoft.FSharp.Core.Operators.int32", "file2", ((23, 27), (23, 32)), ["val"]); @@ -506,7 +506,7 @@ let ``Test project1 all uses of all symbols`` () = ["member"; "prop"]); ("Ticks", "System.DateTime.Ticks", "file2", ((23, 33), (23, 58)), ["member"; "prop"]); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((23, 62), (23, 63)), ["val"]); ("pair2", "N.pair2", "file2", ((23, 10), (23, 15)), ["val"]); ("pair1", "N.pair1", "file2", ((23, 4), (23, 9)), ["val"]); @@ -523,14 +523,14 @@ let ``Test project1 all uses of all symbols`` () = ("enumValue", "N.enumValue", "file2", ((30, 4), (30, 13)), ["val"]); ("x", "x", "file2", ((32, 9), (32, 10)), []); ("y", "y", "file2", ((32, 11), (32, 12)), []); - ("( + )", "Microsoft.FSharp.Core.Operators.( + )", "file2", + ("(+)", "Microsoft.FSharp.Core.Operators.(+)", "file2", ((32, 17), (32, 18)), ["val"]); ("x", "x", "file2", ((32, 15), (32, 16)), []); ("y", "y", "file2", ((32, 19), (32, 20)), []); - ("( ++ )", "N.( ++ )", "file2", ((32, 5), (32, 7)), ["val"]); - ("( ++ )", "N.( ++ )", "file2", ((34, 11), (34, 13)), ["val"]); + ("(++)", "N.(++)", "file2", ((32, 5), (32, 7)), ["val"]); + ("(++)", "N.(++)", "file2", ((34, 11), (34, 13)), ["val"]); ("c1", "N.c1", "file2", ((34, 4), (34, 6)), ["val"]); - ("( ++ )", "N.( ++ )", "file2", ((36, 11), (36, 13)), ["val"]); + ("(++)", "N.(++)", "file2", ((36, 11), (36, 13)), ["val"]); ("c2", "N.c2", "file2", ((36, 4), (36, 6)), ["val"]); ("M", "M", "file2", ((38, 12), (38, 13)), ["module"]); ("C", "M.C", "file2", ((38, 12), (38, 15)), ["class"]); @@ -622,12 +622,12 @@ let ``Test file explicit parse all symbols`` () = cleanedUsesOfSymbols |> shouldEqual [("C", "file1", ((3, 5), (3, 6)), ["class"]); - ("( .ctor )", "file1", ((3, 5), (3, 6)), ["member"; "ctor"]); + ("``.ctor``", "file1", ((3, 5), (3, 6)), ["member"; "ctor"]); ("P", "file1", ((4, 13), (4, 14)), ["member"; "getter"]); ("x", "file1", ((4, 11), (4, 12)), []); - ("( + )", "file1", ((6, 12), (6, 13)), ["val"]); + ("(+)", "file1", ((6, 12), (6, 13)), ["val"]); ("xxx", "file1", ((6, 4), (6, 7)), ["val"]); - ("( + )", "file1", ((7, 17), (7, 18)), ["val"]); + ("(+)", "file1", ((7, 17), (7, 18)), ["val"]); ("xxx", "file1", ((7, 13), (7, 16)), ["val"]); ("xxx", "file1", ((7, 19), (7, 22)), ["val"]); ("fff", "file1", ((7, 4), (7, 7)), ["val"]); @@ -795,7 +795,7 @@ let ``Test project2 all uses of all symbols`` () = ("y", "file1", ((14, 16), (14, 17)), ["field"]); ("T", "file1", ((16, 18), (16, 20)), []); ("GenericClass", "file1", ((16, 5), (16, 17)), ["class"]); - ("( .ctor )", "file1", ((16, 5), (16, 17)), ["member"; "ctor"]); + ("``.ctor``", "file1", ((16, 5), (16, 17)), ["member"; "ctor"]); ("U", "file1", ((17, 27), (17, 29)), []); ("T", "file1", ((17, 34), (17, 36)), []); ("U", "file1", ((17, 41), (17, 43)), []); @@ -1488,22 +1488,22 @@ let ``Test project 5 all symbols`` () = [|("symbol ", "Even", "file1", ((4, 6), (4, 10)), ["defn"]); ("symbol ", "Odd", "file1", ((4, 11), (4, 14)), ["defn"]); ("val input", "input", "file1", ((4, 17), (4, 22)), ["defn"]); - ("val op_Equality", "Microsoft.FSharp.Core.Operators.( = )", "file1", + ("val op_Equality", "Microsoft.FSharp.Core.Operators.(=)", "file1", ((4, 38), (4, 39)), []); - ("val op_Modulus", "Microsoft.FSharp.Core.Operators.( % )", "file1", + ("val op_Modulus", "Microsoft.FSharp.Core.Operators.(%)", "file1", ((4, 34), (4, 35)), []); ("val input", "input", "file1", ((4, 28), (4, 33)), []); ("symbol ", "Even", "file1", ((4, 47), (4, 51)), ["defn"]); ("symbol ", "Odd", "file1", ((4, 57), (4, 60)), ["defn"]); - ("val |Even|Odd|", "ActivePatterns.( |Even|Odd| )", "file1", ((4, 5), (4, 15)), + ("val |Even|Odd|", "ActivePatterns.(|Even|Odd|)", "file1", ((4, 5), (4, 15)), ["defn"]); ("val input", "input", "file1", ((7, 15), (7, 20)), ["defn"]); ("val input", "input", "file1", ((8, 9), (8, 14)), []); - ("symbol Even", "ActivePatterns.( |Even|Odd| ).Even", "file1", + ("symbol Even", "ActivePatterns.(|Even|Odd|).Even", "file1", ((9, 5), (9, 9)), ["pattern"]); ("val printfn", "Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn", "file1", ((9, 13), (9, 20)), []); ("val input", "input", "file1", ((9, 34), (9, 39)), []); - ("symbol Odd", "ActivePatterns.( |Even|Odd| ).Odd", "file1", + ("symbol Odd", "ActivePatterns.(|Even|Odd|).Odd", "file1", ((10, 5), (10, 8)), ["pattern"]); ("val printfn", "Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn", "file1", ((10, 12), (10, 19)), []); @@ -1517,7 +1517,7 @@ let ``Test project 5 all symbols`` () = ("Double", "System.Double", "file1", ((15, 13), (15, 19)), []); ("val str", "str", "file1", ((15, 29), (15, 32)), []); ("val op_AddressOf", - "Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.( ~& )", "file1", + "Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators.(~&)", "file1", ((15, 34), (15, 35)), []); ("val floatvalue", "floatvalue", "file1", ((15, 35), (15, 45)), []); ("member TryParse", "System.Double.TryParse", "file1", ((15, 6), (15, 28)), []); @@ -1525,10 +1525,10 @@ let ``Test project 5 all symbols`` () = []); ("val floatvalue", "floatvalue", "file1", ((15, 57), (15, 67)), []); ("None", "Microsoft.FSharp.Core.Option<_>.None", "file1", ((16, 8), (16, 12)), []); - ("val |Float|_|", "ActivePatterns.( |Float|_| )", "file1", ((13, 5), (13, 14)), + ("val |Float|_|", "ActivePatterns.(|Float|_|)", "file1", ((13, 5), (13, 14)), ["defn"]); ("val str", "str", "file1", ((19, 17), (19, 20)), ["defn"]); ("val str", "str", "file1", ((20, 9), (20, 12)), []); - ("symbol Float", "ActivePatterns.( |Float|_| ).Float", "file1", + ("symbol Float", "ActivePatterns.(|Float|_|).Float", "file1", ((21, 5), (21, 10)), ["pattern"]); ("val f", "f", "file1", ((21, 11), (21, 12)), ["defn"]); ("val printfn", "Microsoft.FSharp.Core.ExtraTopLevelOperators.printfn", @@ -1973,7 +1973,7 @@ let ``Test Project10 all symbols`` () = allUsesOfAllSymbols |> shouldEqual [|("C", "C", "file1", ((4, 5), (4, 6)), ["class"]); - ("member .ctor", "( .ctor )", "file1", ((4, 5), (4, 6)), + ("member .ctor", "``.ctor``", "file1", ((4, 5), (4, 6)), ["member"; "ctor"]); ("string", "string", "file1", ((5, 25), (5, 31)), ["abbrev"]); ("int", "int", "file1", ((5, 40), (5, 43)), ["abbrev"]); @@ -2122,7 +2122,7 @@ let ``Test Project12 all symbols`` () = allUsesOfAllSymbols |> shouldEqual [|("val seq", "seq", "file1", ((4, 9), (4, 12)), ["compexpr"], ["val"]); - ("val op_Range", "( .. )", "file1", ((4, 26), (4, 28)), [], ["val"]); + ("val op_Range", "(..)", "file1", ((4, 26), (4, 28)), [], ["val"]); ("val i", "i", "file1", ((4, 19), (4, 20)), ["defn"], []); ("val i", "i", "file1", ((4, 36), (4, 37)), [], []); ("val x1", "x1", "file1", ((4, 4), (4, 6)), ["defn"], ["val"]); @@ -2132,9 +2132,9 @@ let ``Test Project12 all symbols`` () = ["member"]); ("member Select", "select", "file1", ((7, 17), (7, 23)), ["compexpr"], ["member"]); - ("val op_Range", "( .. )", "file1", ((5, 28), (5, 30)), [], ["val"]); + ("val op_Range", "(..)", "file1", ((5, 28), (5, 30)), [], ["val"]); ("val i", "i", "file1", ((5, 21), (5, 22)), ["defn"], []); - ("val op_Equality", "( = )", "file1", ((6, 26), (6, 27)), [], ["val"]); + ("val op_Equality", "(=)", "file1", ((6, 26), (6, 27)), [], ["val"]); ("val i", "i", "file1", ((6, 24), (6, 25)), [], []); ("val i", "i", "file1", ((7, 25), (7, 26)), [], []); ("val i", "i", "file1", ((7, 27), (7, 28)), [], []); @@ -2348,7 +2348,7 @@ let ``Test Project14 all symbols`` () = ("S", "S", "file1", ((5, 5), (5, 6)), ["defn"]); ("int", "int", "file1", ((5, 9), (5, 12)), ["type"]); ("val p", "p", "file1", ((5, 7), (5, 8)), ["defn"]); - ("member .ctor", "( .ctor )", "file1", ((5, 5), (5, 6)), ["defn"]); + ("member .ctor", "``.ctor``", "file1", ((5, 5), (5, 6)), ["defn"]); ("member get_P", "P", "file1", ((6, 12), (6, 13)), ["defn"]); ("val x", "x", "file1", ((6, 10), (6, 11)), ["defn"]); ("val p", "p", "file1", ((6, 16), (6, 17)), []); @@ -2521,7 +2521,7 @@ let ``Test Project16 all symbols`` () = ("C", "C", "sig1", ((4, 5), (4, 6)), ["defn"], ["class"]); ("unit", "unit", "sig1", ((5, 10), (5, 14)), ["type"], ["abbrev"]); ("C", "C", "sig1", ((5, 18), (5, 19)), ["type"], ["class"]); - ("member .ctor", "( .ctor )", "sig1", ((5, 4), (5, 7)), ["defn"], + ("member .ctor", "``.ctor``", "sig1", ((5, 4), (5, 7)), ["defn"], ["member"]); ("int", "int", "sig1", ((6, 16), (6, 19)), ["type"], ["abbrev"]); ("member get_PC", "PC", "sig1", ((6, 11), (6, 13)), ["defn"], @@ -2529,7 +2529,7 @@ let ``Test Project16 all symbols`` () = ("D", "D", "sig1", ((8, 14), (8, 15)), ["defn"], ["class"]); ("unit", "unit", "sig1", ((9, 10), (9, 14)), ["type"], ["abbrev"]); ("D", "D", "sig1", ((9, 18), (9, 19)), ["type"], ["class"]); - ("member .ctor", "( .ctor )", "sig1", ((9, 4), (9, 7)), ["defn"], + ("member .ctor", "``.ctor``", "sig1", ((9, 4), (9, 7)), ["defn"], ["member"]); ("int", "int", "sig1", ((10, 16), (10, 19)), ["type"], ["abbrev"]); ("member get_PD", "PD", "sig1", ((10, 11), (10, 13)), ["defn"], @@ -2537,7 +2537,7 @@ let ``Test Project16 all symbols`` () = ("E", "E", "sig1", ((12, 14), (12, 15)), ["defn"], ["class"]); ("unit", "unit", "sig1", ((13, 10), (13, 14)), ["type"], ["abbrev"]); ("E", "E", "sig1", ((13, 18), (13, 19)), ["type"], ["class"]); - ("member .ctor", "( .ctor )", "sig1", ((13, 4), (13, 7)), ["defn"], + ("member .ctor", "``.ctor``", "sig1", ((13, 4), (13, 7)), ["defn"], ["member"]); ("int", "int", "sig1", ((14, 16), (14, 19)), ["type"], ["abbrev"]); ("member get_PE", "PE", "sig1", ((14, 11), (14, 13)), ["defn"], @@ -2562,15 +2562,15 @@ let ``Test Project16 all symbols`` () = ("E", "E", "file1", ((10, 4), (10, 5)), ["defn"], ["class"]); ("F", "F", "file1", ((13, 4), (13, 5)), ["defn"], ["record"]); ("G", "G", "file1", ((14, 4), (14, 5)), ["defn"], ["union"]); - ("member .ctor", "( .ctor )", "file1", ((4, 5), (4, 6)), ["defn"], + ("member .ctor", "``.ctor``", "file1", ((4, 5), (4, 6)), ["defn"], ["member"; "ctor"]); ("member get_PC", "PC", "file1", ((5, 13), (5, 15)), ["defn"], ["member"; "getter"]); - ("member .ctor", "( .ctor )", "file1", ((7, 4), (7, 5)), ["defn"], + ("member .ctor", "``.ctor``", "file1", ((7, 4), (7, 5)), ["defn"], ["member"; "ctor"]); ("member get_PD", "PD", "file1", ((8, 13), (8, 15)), ["defn"], ["member"; "getter"]); - ("member .ctor", "( .ctor )", "file1", ((10, 4), (10, 5)), ["defn"], + ("member .ctor", "``.ctor``", "file1", ((10, 4), (10, 5)), ["defn"], ["member"; "ctor"]); ("member get_PE", "PE", "file1", ((11, 13), (11, 15)), ["defn"], ["member"; "getter"]); @@ -3433,7 +3433,7 @@ let ``Test Project24 all symbols`` () = allUses |> shouldEqual [|("TypeWithProperties", "file1", ((4, 5), (4, 23)), ["defn"], ["class"]); - ("( .ctor )", "file1", ((4, 5), (4, 23)), ["defn"], ["member"; "ctor"]); + ("``.ctor``", "file1", ((4, 5), (4, 23)), ["defn"], ["member"; "ctor"]); ("NameGetSet", "file1", ((5, 13), (5, 23)), ["defn"], ["member"; "getter"]); ("int", "file1", ((7, 20), (7, 23)), ["type"], ["abbrev"]); ("NameGet", "file1", ((9, 13), (9, 20)), ["defn"], ["member"; "getter"]); @@ -3472,13 +3472,13 @@ let ``Test Project24 all symbols`` () = ("v", "file1", ((22, 17), (22, 18)), ["defn"], []); ("int", "file1", ((25, 21), (25, 24)), ["type"], ["abbrev"]); ("v", "file1", ((25, 18), (25, 19)), ["defn"], []); - ("( AutoPropGet@ )", "file1", ((27, 15), (27, 26)), [], ["compgen"]); - ("( AutoPropGetSet@ )", "file1", ((28, 15), (28, 29)), [], ["compgen";"mutable"]); + ("``AutoPropGet@``", "file1", ((27, 15), (27, 26)), [], ["compgen"]); + ("``AutoPropGetSet@``", "file1", ((28, 15), (28, 29)), [], ["compgen";"mutable"]); ("v", "file1", ((28, 15), (28, 29)), ["defn"], []); - ("( StaticAutoPropGet@ )", "file1", ((30, 22), (30, 39)), [], ["compgen"]); - ("( StaticAutoPropGetSet@ )", "file1", ((31, 22), (31, 42)), [], + ("``StaticAutoPropGet@``", "file1", ((30, 22), (30, 39)), [], ["compgen"]); + ("``StaticAutoPropGetSet@``", "file1", ((31, 22), (31, 42)), [], ["compgen";"mutable"]); ("v", "file1", ((31, 22), (31, 42)), ["defn"], []); - ("( .cctor )", "file1", ((4, 5), (4, 23)), ["defn"], ["member"]); + ("``.cctor``", "file1", ((4, 5), (4, 23)), ["defn"], ["member"]); ("TypeWithProperties", "file1", ((33, 9), (33, 27)), [], ["member"; "ctor"]); ("NameGetSet", "file1", ((33, 9), (33, 40)), [], ["member"; "prop"]); @@ -3540,7 +3540,7 @@ let ``Test symbol uses of properties with both getters and setters`` () = getAllSymbolUses |> shouldEqual [|("TypeWithProperties", "file1", ((4, 5), (4, 23)), ["class"]); - ("( .ctor )", "file1", ((4, 5), (4, 23)), ["member"; "ctor"]); + ("``.ctor``", "file1", ((4, 5), (4, 23)), ["member"; "ctor"]); ("NameGetSet", "file1", ((5, 13), (5, 23)), ["member"; "getter"]); ("int", "file1", ((7, 20), (7, 23)), ["abbrev"]); ("NameGet", "file1", ((9, 13), (9, 20)), ["member"; "getter"]); @@ -3573,13 +3573,13 @@ let ``Test symbol uses of properties with both getters and setters`` () = ("v", "file1", ((22, 17), (22, 18)), []); ("int", "file1", ((25, 21), (25, 24)), ["abbrev"]); ("v", "file1", ((25, 18), (25, 19)), []); - ("( AutoPropGet@ )", "file1", ((27, 15), (27, 26)), ["compgen"]); - ("( AutoPropGetSet@ )", "file1", ((28, 15), (28, 29)), ["compgen";"mutable"]); + ("``AutoPropGet@``", "file1", ((27, 15), (27, 26)), ["compgen"]); + ("``AutoPropGetSet@``", "file1", ((28, 15), (28, 29)), ["compgen";"mutable"]); ("v", "file1", ((28, 15), (28, 29)), []); - ("( StaticAutoPropGet@ )", "file1", ((30, 22), (30, 39)), ["compgen"]); - ("( StaticAutoPropGetSet@ )", "file1", ((31, 22), (31, 42)), ["compgen";"mutable"]); + ("``StaticAutoPropGet@``", "file1", ((30, 22), (30, 39)), ["compgen"]); + ("``StaticAutoPropGetSet@``", "file1", ((31, 22), (31, 42)), ["compgen";"mutable"]); ("v", "file1", ((31, 22), (31, 42)), []); - ("( .cctor )", "file1", ((4, 5), (4, 23)), ["member"]); + ("``.cctor``", "file1", ((4, 5), (4, 23)), ["member"]); ("TypeWithProperties", "file1", ((33, 9), (33, 27)), ["member"; "ctor"]); ("NameGetSet", "file1", ((33, 9), (33, 40)), ["member"; "prop"]); ("v1", "file1", ((33, 4), (33, 6)), ["val"]); @@ -3860,7 +3860,7 @@ let ``Test Project26 parameter symbols`` () = yield x.DisplayName, p.Name, p.Type.ToString(), attributeNames ] set objMethodsReturnParameter |> shouldEqual (set - [("( .ctor )", None, "type FSharpParameter.Class", ""); + [("``.ctor``", None, "type FSharpParameter.Class", ""); ("M1", None, "type Microsoft.FSharp.Core.unit", ""); ("M2", None, "type Microsoft.FSharp.Core.unit", ""); ("M3", None, "type Microsoft.FSharp.Core.unit", "")]) @@ -3978,7 +3978,7 @@ let ``Test project28 all symbols in signature`` () = |> Seq.toArray [|("FSharpEntity", "M", "T:M"); - ("FSharpMemberOrFunctionOrValue", "( |Even|Odd| )", "M:M.|Even|Odd|(System.Int32)"); + ("FSharpMemberOrFunctionOrValue", "(|Even|Odd|)", "M:M.|Even|Odd|(System.Int32)"); ("FSharpMemberOrFunctionOrValue", "TestNumber", "M:M.TestNumber(System.Int32)"); ("FSharpEntity", "DU", "T:M.DU"); ("FSharpUnionCase", "A", "T:M.DU.A"); @@ -3986,7 +3986,7 @@ let ``Test project28 all symbols in signature`` () = ("FSharpUnionCase", "B", "T:M.DU.B"); ("FSharpField", "Item", "T:M.DU.B"); ("FSharpEntity", "XmlDocSigTest", "T:M.XmlDocSigTest"); - ("FSharpMemberOrFunctionOrValue", "( .ctor )", "M:M.XmlDocSigTest.#ctor"); + ("FSharpMemberOrFunctionOrValue", "``.ctor``", "M:M.XmlDocSigTest.#ctor"); ("FSharpMemberOrFunctionOrValue", "AMethod", "M:M.XmlDocSigTest.AMethod"); ("FSharpMemberOrFunctionOrValue", "AnotherMethod", "M:M.XmlDocSigTest.AnotherMethod"); ("FSharpMemberOrFunctionOrValue", "TestEvent1", "M:M.XmlDocSigTest.TestEvent1(System.Object)"); @@ -4006,7 +4006,7 @@ let ``Test project28 all symbols in signature`` () = ("FSharpField", "aString", "P:M.XmlDocSigTest.aString"); ("FSharpField", "anInt", "P:M.XmlDocSigTest.anInt"); ("FSharpEntity", "Use", "T:M.Use"); - ("FSharpMemberOrFunctionOrValue", "( .ctor )", "M:M.Use.#ctor"); + ("FSharpMemberOrFunctionOrValue", "``.ctor``", "M:M.Use.#ctor"); ("FSharpMemberOrFunctionOrValue", "Test", "M:M.Use.Test``1(``0)"); ("FSharpGenericParameter", "?", "")|] |> Array.iter (fun x -> diff --git a/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs b/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs index 1e1d7fd58dc..2564dd3af4b 100644 --- a/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs +++ b/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs @@ -11,7 +11,6 @@ open Microsoft.CodeAnalysis.CodeFixes open Microsoft.VisualStudio.FSharp.Editor.SymbolHelpers open FSharp.Compiler.Diagnostics -open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.Tokenization.FSharpKeywords [] From c5b4b6316e6ca5b4961f57c890b388ccdf39fc63 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 14:56:08 +0100 Subject: [PATCH 14/25] don't print literals twice --- src/fsharp/NicePrint.fs | 76 +++++++++---------- src/fsharp/fsi/fsi.fs | 10 +-- tests/fsharp/core/printing/test.fsx | 10 +++ .../printing/z.output.test.1000.stdout.47.bsl | 10 +++ .../printing/z.output.test.1000.stdout.50.bsl | 10 +++ .../printing/z.output.test.200.stdout.47.bsl | 10 +++ .../printing/z.output.test.200.stdout.50.bsl | 10 +++ .../z.output.test.default.stdout.47.bsl | 10 +++ .../z.output.test.default.stdout.50.bsl | 10 +++ .../printing/z.output.test.off.stdout.47.bsl | 10 +++ .../printing/z.output.test.off.stdout.50.bsl | 10 +++ 11 files changed, 130 insertions(+), 46 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 7f44519a1a1..5476ec937c4 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -463,7 +463,7 @@ module private PrintTypes = | _ -> itemL /// Layout a reference to a type - let layoutTyconRefImpl denv tycon = layoutTyconRefImpl false denv tycon + let layoutTyconRefUse denv tycon = layoutTyconRefImpl false denv tycon /// Layout the flags of a member let layoutMemberFlags (memFlags: SynMemberFlags) = @@ -522,35 +522,22 @@ module private PrintTypes = | EnumExpr denv.g arg1 -> WordL.keywordEnum ++ bracketL (layoutAttribArg denv arg1) - | _ -> comment "(* unsupported attribute argument *)" /// Layout arguments of an attribute 'arg1, ..., argN' and private layoutAttribArgs denv args = - sepListL (rightL (tagPunctuation ",")) (List.map (fun (AttribExpr(e1, _)) -> layoutAttribArg denv e1) args) + let argsL = args |> List.map (fun (AttribExpr(e1, _)) -> layoutAttribArg denv e1) + sepListL (rightL (tagPunctuation ",")) argsL /// Layout an attribute 'Type(arg1, ..., argN)' // // REVIEW: we are ignoring "props" here - and layoutAttrib denv (Attrib(_, k, args, _props, _, _, _)) = + and layoutAttrib denv (Attrib(tcref, _, args, _props, _, _, _)) = + let tcrefL = layoutTyconRefImpl true denv tcref let argsL = bracketL (layoutAttribArgs denv args) - match k with - | ILAttrib ilMethRef -> - let trimmedName = - let name = ilMethRef.DeclaringTypeRef.Name - if name.EndsWithOrdinal("Attribute") then - String.dropSuffix name "Attribute" - else - name - let tref = ilMethRef.DeclaringTypeRef - let tref = ILTypeRef.Create(scope= tref.Scope, enclosing=tref.Enclosing, name=trimmedName) - PrintIL.layoutILTypeRef denv tref ++ argsL - | FSAttrib vref -> - // REVIEW: this is not trimming "Attribute" - let _, _, _, rty, _ = GetTypeOfMemberInMemberForm denv.g vref - let rty = GetFSharpViewOfReturnType denv.g rty - let tcref = tcrefOfAppTy denv.g rty - layoutTyconRefImpl denv tcref ++ argsL + match args with + | [] -> tcrefL + | _ -> tcrefL ++ argsL and layoutILAttribElement denv arg = match arg with @@ -593,7 +580,7 @@ module private PrintTypes = PrintIL.layoutILType denv [] ty ++ argsL /// Layout '[]' above another block - and layoutAttribs denv isValue ty kind attrs restL = + and layoutAttribs denv isValue isLiteral ty kind attrs restL = if denv.showAttributes then // Don't display DllImport attributes in generated signatures @@ -611,8 +598,12 @@ module private PrintTypes = | _ -> squareAngleL (sepListL (rightL (tagPunctuation ";")) (List.map (layoutAttrib denv) attrs)) @@ restL + // Always show the 'Struct' attribute elif not isValue && (isStructTy denv.g ty && not (isEnumTy denv.g ty)) then squareAngleL (wordL (tagClass "Struct")) @@ restL + // Always show the 'Literal' attribute + elif isLiteral then + squareAngleL (wordL (tagClass "Literal")) @@ restL else match kind with | TyparKind.Type -> restL @@ -777,7 +768,7 @@ module private PrintTypes = let negvs, posvs = ListMeasureVarOccsWithNonZeroExponents unt |> sortVars |> List.partition (fun (_, e) -> SignRational e < 0) let negcs, poscs = ListMeasureConOccsWithNonZeroExponents denv.g false unt |> sortCons |> List.partition (fun (_, e) -> SignRational e < 0) let unparL uv = layoutTyparRef denv uv - let unconL tc = layoutTyconRefImpl denv tc + let unconL tc = layoutTyconRefUse denv tc let rationalL e = wordL (tagNumericLiteral (RationalToString e)) let measureToPowerL x e = if e = OneRational then x else x -- wordL (tagPunctuation "^") -- rationalL e let prefix = spaceListL (List.map (fun (v, e) -> measureToPowerL (unparL v) e) posvs @ @@ -830,7 +821,7 @@ module private PrintTypes = | GenericParameterStyle.Implicit -> tc.IsPrefixDisplay | GenericParameterStyle.Prefix -> true | GenericParameterStyle.Suffix -> false - layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefImpl denv tc) prec usePrefix args + layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefUse denv tc) prec usePrefix args // Layout a tuple type | TType_anon (anonInfo, tys) -> @@ -1111,7 +1102,7 @@ module private PrintTastMemberOrVals = let nameL = ConvertValCoreNameToDisplayLayout v.IsBaseVal (tagFunction >> mkNav v.DefinitionRange >> wordL) name let nameL = if denv.showMemberContainers then - layoutTyconRefImpl denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL + layoutTyconRefUse denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL else nameL let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL @@ -1263,7 +1254,7 @@ module private PrintTastMemberOrVals = | None -> valAndTypeL let prettyLayoutOfValOrMember denv infoReader typarInst (vref: ValRef) = - let prettyTyparInst, vL = + let prettyTyparInst, valL = match vref.MemberInfo with | None -> let tps, tau = vref.TypeScheme @@ -1277,10 +1268,13 @@ module private PrintTastMemberOrVals = | Some _ -> prettyLayoutOfMember denv typarInst vref.Deref - prettyTyparInst, - layoutAttribs denv true vref.Type TyparKind.Type vref.Attribs vL + let valL = + valL + |> layoutAttribs denv true vref.LiteralValue.IsSome vref.Type TyparKind.Type vref.Attribs |> layoutXmlDocOfValRef denv infoReader vref + prettyTyparInst, valL + let prettyLayoutOfValOrMemberNoInst denv infoReader v = prettyLayoutOfValOrMember denv infoReader emptyTyparInst v |> snd @@ -1292,9 +1286,9 @@ let layoutType denv x = x |> PrintTypes.layoutType denv let outputTypars denv nm os x = x |> PrintTypes.layoutTyparDecls denv (wordL nm) true |> bufferL os -let outputTyconRef denv os x = x |> PrintTypes.layoutTyconRefImpl denv |> bufferL os +let outputTyconRef denv os x = x |> PrintTypes.layoutTyconRefUse denv |> bufferL os -let layoutTyconRef denv x = x |> PrintTypes.layoutTyconRefImpl denv +let layoutTyconRef denv x = x |> PrintTypes.layoutTyconRefUse denv let layoutConst g ty c = PrintTypes.layoutConst g ty c @@ -1403,7 +1397,7 @@ module InfoMemberPrinting = layout ^^ if isAppTy minfo.TcGlobals minfo.ApparentEnclosingAppType then let tcref = minfo.ApparentEnclosingTyconRef - PrintTypes.layoutTyconRefImpl denv tcref + PrintTypes.layoutTyconRefUse denv tcref else emptyL let layout = @@ -1460,7 +1454,7 @@ module InfoMemberPrinting = match methInfo with | DefaultStructCtor _ -> let prettyTyparInst, _ = PrettyTypes.PrettifyInst amap.g typarInst - prettyTyparInst, PrintTypes.layoutTyconRefImpl denv methInfo.ApparentEnclosingTyconRef ^^ wordL (tagPunctuation "()") + prettyTyparInst, PrintTypes.layoutTyconRefUse denv methInfo.ApparentEnclosingTyconRef ^^ wordL (tagPunctuation "()") | FSMeth(_, _, vref, _) -> let prettyTyparInst, resL = PrintTastMemberOrVals.prettyLayoutOfValOrMember { denv with showMemberContainers=true } infoReader typarInst vref prettyTyparInst, resL @@ -1620,7 +1614,7 @@ module private TastDefinitionPrinting = let overallL = modifierAndMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfPropInfo denv infoReader pinfo overallL - let layoutTyconRef (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified typewordL (tcref: TyconRef) = + let layoutTyconDefn (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified typewordL (tcref: TyconRef) = let g = denv.g let amap = infoReader.amap let tycon = tcref.Deref @@ -1952,7 +1946,7 @@ module private TastDefinitionPrinting = |> aboveListL |> addLhs - let attribsL = layoutAttribs denv false ty tycon.TypeOrMeasureKind tycon.Attribs typeDeclL + let attribsL = layoutAttribs denv false false ty tycon.TypeOrMeasureKind tycon.Attribs typeDeclL layoutXmlDocOfEntityRef denv infoReader tcref attribsL // Layout: exception definition @@ -1963,7 +1957,7 @@ module private TastDefinitionPrinting = let exnL = wordL (tagKeyword "exception") ^^ nameL // need to tack on the Exception at the right of the name for goto definition let reprL = match exnc.ExceptionInfo with - | TExnAbbrevRepr ecref -> WordL.equals --- layoutTyconRefImpl denv ecref + | TExnAbbrevRepr ecref -> WordL.equals --- layoutTyconRefUse denv ecref | TExnAsmRepr _ -> WordL.equals --- wordL (tagText "(# ... #)") | TExnNone -> emptyL | TExnFresh r -> @@ -1981,8 +1975,8 @@ module private TastDefinitionPrinting = | [] -> emptyL | [h] when h.IsExceptionDecl -> layoutExnDefn denv infoReader (mkLocalEntityRef h) | h :: t -> - let x = layoutTyconRef denv infoReader ad m false WordL.keywordType (mkLocalEntityRef h) - let xs = List.map (mkLocalEntityRef >> layoutTyconRef denv infoReader ad m false (wordL (tagKeyword "and"))) t + let x = layoutTyconDefn denv infoReader ad m false WordL.keywordType (mkLocalEntityRef h) + let xs = List.map (mkLocalEntityRef >> layoutTyconDefn denv infoReader ad m false (wordL (tagKeyword "and"))) t aboveListL (x :: xs) let rec layoutModuleOrNamespace (denv: DisplayEnv) (infoReader: InfoReader) ad m isFirstTopLevel (mspec: ModuleOrNamespace) = @@ -2041,7 +2035,7 @@ module private TastDefinitionPrinting = modNameEqualsL let headerL = - layoutAttribs denv false (generalizedTyconRef(mkLocalEntityRef mspec)) mspec.TypeOrMeasureKind mspec.Attribs headerL + layoutAttribs denv false false (generalizedTyconRef (mkLocalEntityRef mspec)) mspec.TypeOrMeasureKind mspec.Attribs headerL let shouldShow (v: Val) = (denv.showObsoleteMembers || not (CheckFSharpAttributesForObsolete denv.g v.Attribs)) && @@ -2091,7 +2085,7 @@ module private TastDefinitionPrinting = elif eref.IsExceptionDecl then layoutExnDefn denv infoReader eref else - layoutTyconRef denv infoReader ad m true WordL.keywordType eref + layoutTyconDefn denv infoReader ad m true WordL.keywordType eref //-------------------------------------------------------------------------- @@ -2265,7 +2259,7 @@ module private PrintData = braceL (semiListL (List.map2 lay fields xs)) | Expr.Op (TOp.ValFieldGet (RecdFieldRef.RecdFieldRef (tcref, name)), _, _, _) -> - (layoutTyconRefImpl denv tcref) ^^ sepL (tagPunctuation ".") ^^ wordL (tagField name) + (layoutTyconRefUse denv tcref) ^^ sepL (tagPunctuation ".") ^^ wordL (tagField name) | Expr.Op (TOp.Array, [_], xs, _) -> leftL (tagPunctuation "[|") ^^ semiListL (dataExprsL denv xs) ^^ RightL.rightBracketBar @@ -2322,7 +2316,7 @@ let layoutExnDef denv infoReader x = x |> TastDefinitionPrinting.layoutExnDefn d let stringOfTyparConstraints denv x = x |> PrintTypes.layoutConstraintsWithInfo denv SimplifyTypes.typeSimplificationInfo0 |> showL -let layoutTycon denv infoReader ad m (* width *) x = TastDefinitionPrinting.layoutTyconRef denv infoReader ad m true WordL.keywordType (mkLocalEntityRef x) (* |> Display.squashTo width *) +let layoutTycon denv infoReader ad m (* width *) x = TastDefinitionPrinting.layoutTyconDefn denv infoReader ad m true WordL.keywordType (mkLocalEntityRef x) (* |> Display.squashTo width *) let layoutEntityRef denv infoReader ad m x = TastDefinitionPrinting.layoutEntityRef denv infoReader ad m x diff --git a/src/fsharp/fsi/fsi.fs b/src/fsharp/fsi/fsi.fs index 7c3648added..3babe0e3f43 100644 --- a/src/fsharp/fsi/fsi.fs +++ b/src/fsharp/fsi/fsi.fs @@ -433,7 +433,7 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, tcConfigB: Tc // Ilreflect knows what the AbsIL was generated to. // Combining these allows for obtaining the (obj,objTy) by reflection where possible. // This assumes the v:Val was given appropriate storage, e.g. StaticField. - if fsi.ShowDeclarationValues then + if fsi.ShowDeclarationValues && not v.LiteralValue.IsSome then // Adjust "opts" for printing for "declared-values": // - No sequences, because they may have effects or time cost. // - No properties, since they may have unexpected effects. @@ -454,10 +454,10 @@ type internal FsiValuePrinter(fsi: FsiEvaluationSessionHostConfig, tcConfigB: Tc #endif None // lookup may fail match res with - | None -> None - | Some (obj,objTy) -> - let lay = valuePrinter.PrintValue (FsiValuePrinterMode.PrintDecl, opts, obj, objTy) - if isEmptyL lay then None else Some lay // suppress empty layout + | None -> None + | Some (obj,objTy) -> + let lay = valuePrinter.PrintValue (FsiValuePrinterMode.PrintDecl, opts, obj, objTy) + if isEmptyL lay then None else Some lay // suppress empty layout else None diff --git a/tests/fsharp/core/printing/test.fsx b/tests/fsharp/core/printing/test.fsx index 95bc9c6ea10..51c2c82c29f 100644 --- a/tests/fsharp/core/printing/test.fsx +++ b/tests/fsharp/core/printing/test.fsx @@ -1073,6 +1073,16 @@ let ``.ctor`` = 2 // This is a value called '.ctor' in .NET IL, and has no spec let ``.cctor`` = 2 // This is a value called '.cctor' in .NET IL, and has no special properties ;; +// Check line wrapping of very long literals +[] +let SomeLiteralWithASomewhatLongName = "SomeVeryLongLiteralValueWithLotsOfCharacters" + +[] +let SomeLiteralWithASomewhatLongName2 = "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" + +[] +let ShortName = "hi" +;; ;; (* ;; needed, to isolate error regressions *) diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl index 9880b10f365..ec6c7345481 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.47.bsl @@ -2701,4 +2701,14 @@ type Int32 with > val ``.cctor`` : int = 2 +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl index acb9ce8d7fc..a745431f238 100644 --- a/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.1000.stdout.50.bsl @@ -2703,4 +2703,14 @@ type Int32 with > val ``.cctor`` : int = 2 +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl index a435be79bdd..8bf2618f762 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.47.bsl @@ -1946,4 +1946,14 @@ type Int32 with > val ``.cctor`` : int = 2 +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl index db13a4a86e8..1436aecaeaf 100644 --- a/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.200.stdout.50.bsl @@ -1948,4 +1948,14 @@ type Int32 with > val ``.cctor`` : int = 2 +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl index eae02eac40c..706237bb693 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.47.bsl @@ -6248,4 +6248,14 @@ type Int32 with > val ``.cctor`` : int = 2 +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl index 2fe64143240..de121c1f46e 100644 --- a/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.default.stdout.50.bsl @@ -6250,4 +6250,14 @@ type Int32 with > val ``.cctor`` : int = 2 +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl index 15e2cffc793..512975f670b 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.47.bsl @@ -1716,4 +1716,14 @@ type Int32 with > val ``.cctor`` : int +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl index d883d88e52b..08bd46c7c5a 100644 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl @@ -1718,4 +1718,14 @@ type Int32 with > val ``.cctor`` : int +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" + > > > From b8732f55928a024dd60b24ee2b6128d583bf7476 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 15:03:57 +0100 Subject: [PATCH 15/25] fix tests --- .../basic/E_InvalidForwardRef01.fs | 2 +- .../Misc/ReflectionTypeNameMangling01.fsx | 2 +- .../Misc/VerbatimIdentifier01.fsx | 30 +++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeExtensions/basic/E_InvalidForwardRef01.fs b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeExtensions/basic/E_InvalidForwardRef01.fs index 97636a4a522..bdbe89f20b1 100644 --- a/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeExtensions/basic/E_InvalidForwardRef01.fs +++ b/tests/fsharpqa/Source/Conformance/ObjectOrientedTypeDefinitions/TypeExtensions/basic/E_InvalidForwardRef01.fs @@ -2,7 +2,7 @@ #light // Regression test for FSHARP1.0:575 - Augmentations lead to unsoundnesses in the treatment of constraints. Availalbe instances should be lexically scoped -//The member '\( \+ \)' is used in an invalid way\. A use of '\( \+ \)' has been inferred prior to its definition.+ +//The member '\(\+\)' is used in an invalid way\. A use of '\(\+\)' has been inferred prior to its definition.+ type genmat = M of int let x = Unchecked.defaultof<_> // generate an inference variable diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx index f32da41224d..fc9e498460d 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx @@ -18,7 +18,7 @@ // member X: float //val paintObjects: Planet list //type Simulator = -// new : unit -> Simulator +// new: unit -> Simulator type Planet(ipx:float,ivx:float) = diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx index 6e409c496d4..cc91e4e12d6 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx @@ -1,12 +1,38 @@ // #Regression #NoMT #FSI // Regression test for FSHARP1.0:5675 -//val \( A\.B \) : bool = true -//val \( \.\. \) : bool = true +//val ``A\.B`` : bool = true +//val ``+`` : bool = true +//val ``\.\.`` : bool = true +//val ``\.\. \.\.`` : bool = true +//val ``(+)`` : bool = true +//val ``land`` : bool = true +//val ``type`` : bool = true +//val ``or`` : bool = true +//val ``params`` : bool = true //val A: bool = true +//val ``'A`` : bool = true +//val A' : bool = true +//val ``0A`` : bool = true +//val A0 : bool = true +//val ``A-B`` : bool = true +//val ``A B`` : bool = true let ``A.B`` = true;; +let ``+`` = true;; let ``..`` = true;; +let ``.. ..`` = true;; +let ``(+)`` = true;; +let ``land`` = true;; +let ``type`` = true;; +let ``or`` = true;; +let ``params`` = true;; let ``A`` = true;; +let ``'A`` = true;; +let ``A'`` = true;; +let ``0A`` = true;; +let ``A0`` = true;; +let ``A-B`` = true;; +let ``A B`` = true;; exit 0;; From 9686228df4624f533d8fd7bb34e40839cd00f71b Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 15:37:30 +0100 Subject: [PATCH 16/25] fix tests --- .../tools/fsharp41/net45/providerDesigner.dll | Bin 70144 -> 70144 bytes .../fsharp41/net461/providerDesigner.dll | Bin 70144 -> 70144 bytes .../netstandard2.0/providerDesigner.dll | Bin 70144 -> 70144 bytes .../fsharp41/net45/providerDesigner.dll | Bin 70144 -> 70144 bytes .../fsharp41/net461/providerDesigner.dll | Bin 70144 -> 70144 bytes .../netstandard2.0/providerDesigner.dll | Bin 70144 -> 70144 bytes .../Misc/ReflectionTypeNameMangling01.fsx | 2 +- .../Misc/VerbatimIdentifier01.fsx | 4 ++++ tests/service/ProjectAnalysisTests.fs | 4 ++-- 9 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll b/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll index 780564082ac45fcd38db423ed85acfe90bfa2df8..7a4c62cf4c66fc4daa0ca77ffd7b266307971684 100644 GIT binary patch delta 35 rcmZoz!qTvWWkLrN^Mj3DQEhz84-67bj+QK3?#kTE{9yB^Hok5E1Q-tz delta 35 rcmZoz!qTvWWkLtjJc*56QEhzlBn%Qwj+QK3?#kRePh#_@Hok5E{XGtg diff --git a/tests/fsharp/tools/fsharp41/net461/providerDesigner.dll b/tests/fsharp/tools/fsharp41/net461/providerDesigner.dll index de9449b2940270fadd5ab552f8f00da7687bcf1b..387247dd91e4908c75424957bbdce681b44a75b5 100644 GIT binary patch delta 35 tcmV+;0Nnq8qy&JZ1dxaV{ok>QT80k&-!Ne`#dM*kMFWHV-?Q?D4vRLg5&ZxF delta 35 rcmZoz!qTvWWkLtjbcu~!QEhzFB@7Zxj+QK3?#kReU1Ia6Hok5E`_T?| diff --git a/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll b/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll index e0e5b42c555de631ad56a3ec360ca8bf131e7b60..5fcb19457298593424e9e559abc16dcb86ce405e 100644 GIT binary patch delta 35 rcmZoz!qTvWWkLrN`-6>LQEhze4-67bj+QK3?#kTE{$TT`Hok5E1n3VQ delta 35 rcmZoz!qTvWWkLtjLWzxCQEhw+B@7Zxj+QK3?#kS}P-63^Hok5E{n-wb diff --git a/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll index 04b58fa8e7970d1213222c4a23ffaa6edcc24395..4a6372ba2340e89feeb8f60d215b325545656dc1 100644 GIT binary patch delta 35 rcmZoz!qTvWWkLs&*n^E-QEhx;4-67bj+QK3?#kRO_F(g;Hok5E2lNk1 delta 35 rcmZoz!qTvWWkLtj28oSbQEhx1Bn%Qwj+QK3?#kS}L1Oc#Hok5E0Q3&Q diff --git a/tests/fsharp/typeProviders/fsharp41/net461/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/net461/providerDesigner.dll index bbb5f84c70fd900497e1a7918398f6c42f4a8619..8a4e0e03d2e3c937a37dd926da4054fdcc9eeb8b 100644 GIT binary patch delta 35 rcmZoz!qTvWWkLrN|AUQPQEhzu4-67bj+QK3?#kTE|6uc{Hok5E28a(f delta 35 rcmZoz!qTvWWkLtjN{NkKQEhxHB@7Zxj+QK3?#kS}QeyL`Hok5E|9K9q diff --git a/tests/fsharp/typeProviders/fsharp41/netstandard2.0/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/netstandard2.0/providerDesigner.dll index fe27177d2dfa123ff1c6440fb59e2c5b21a7e431..bc93c4ae173eba8ed9253fd97f5129f52b84c9e9 100644 GIT binary patch delta 35 rcmZoz!qTvWWkLs&)Ps#(QEhxu4-67bj+QK3?#kRO^This type test or downcast will always hold // match paintObject with // ---------------------\^\^\^\^\^\^\^\^\^\^\^ -//Incomplete pattern matches on this expression\. For example, the value '\( some-other-subtype \)' may indicate a case not covered by the pattern\(s\) +//Incomplete pattern matches on this expression\. For example, the value '``some-other-subtype``' may indicate a case not covered by the pattern\(s\) // match lastTimeOption with // --------------\^\^\^\^\^\^\^\^\^\^\^\^\^\^ //Incomplete pattern matches on this expression\. For example, the value 'None' may indicate a case not covered by the pattern\(s\) diff --git a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx index cc91e4e12d6..e0d3100b557 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx @@ -16,6 +16,8 @@ //val A0 : bool = true //val ``A-B`` : bool = true //val ``A B`` : bool = true +//val ``base`` : bool = true +//val ``or`` : bool = true let ``A.B`` = true;; let ``+`` = true;; @@ -33,6 +35,8 @@ let ``0A`` = true;; let ``A0`` = true;; let ``A-B`` = true;; let ``A B`` = true;; +let ``base`` = true;; +let ``or`` = true;; exit 0;; diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index 974bc949e1c..c398991c87f 100644 --- a/tests/service/ProjectAnalysisTests.fs +++ b/tests/service/ProjectAnalysisTests.fs @@ -4113,8 +4113,8 @@ let ``Test project30 Format attributes`` () = |> set |> shouldEqual (set - [("[ (4))>]", - "[ (4))>]")]) + [("[ (4))>]", + "[ (4))>]")]) let memberSymbol = wholeProjectResults.GetAllUsesOfAllSymbols() |> Array.find (fun su -> su.Symbol.DisplayName = "Member") let memberEntity = memberSymbol.Symbol :?> FSharpMemberOrFunctionOrValue From 5ca7a72ea3a2be7d0a465ef6dbd3ea532bbcca8b Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 2 Sep 2021 23:23:25 +0100 Subject: [PATCH 17/25] fix names in completion list --- src/fsharp/InfoReader.fs | 7 +- src/fsharp/NameResolution.fs | 10 +++ src/fsharp/NameResolution.fsi | 2 + src/fsharp/NicePrint.fs | 20 +++-- src/fsharp/PrettyNaming.fs | 6 ++ src/fsharp/PrettyNaming.fsi | 13 +++ src/fsharp/TypedTreeOps.fs | 41 ++++----- src/fsharp/service/ServiceDeclarationLists.fs | 84 +++++++++---------- .../service/ServiceDeclarationLists.fsi | 7 +- .../CompletionTests.fs | 79 +++++++++++++++++ tests/service/CSharpProjectAnalysis.fs | 14 ++++ .../data/CSharp_Analysis/CSharpClass.cs | 15 ++++ .../CSharp_Analysis/CSharp_Analysis.csproj | 1 + 13 files changed, 224 insertions(+), 75 deletions(-) diff --git a/src/fsharp/InfoReader.fs b/src/fsharp/InfoReader.fs index dbd8ec3ba01..63d58c596f0 100644 --- a/src/fsharp/InfoReader.fs +++ b/src/fsharp/InfoReader.fs @@ -1056,9 +1056,10 @@ let GetXmlDocSigOfMethInfo (infoReader: InfoReader) m (minfo: MethInfo) = | Some (ccuFileName, formalTypars, formalTypeInfo) -> let filminfo = ILMethInfo(g, formalTypeInfo.ToType, None, ilminfo.RawMetadata, fmtps) let args = - match ilminfo.IsILExtensionMethod with - | true -> filminfo.GetRawArgTypes(amap, m, minfo.FormalMethodInst) - | false -> filminfo.GetParamTypes(amap, m, minfo.FormalMethodInst) + if ilminfo.IsILExtensionMethod then + filminfo.GetRawArgTypes(amap, m, minfo.FormalMethodInst) + else + filminfo.GetParamTypes(amap, m, minfo.FormalMethodInst) // http://msdn.microsoft.com/en-us/library/fsbx0t7x.aspx // If the name of the item itself has periods, they are replaced by the hash-sign ('#'). diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 14ac5c99eee..9873d7ae9a0 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -273,6 +273,16 @@ type Item = | Item.CustomBuilder (nm, _) -> nm | _ -> "" + member d.DeclarationListText = + match d with + | Item.Value v -> ConvertValCoreNameToDeclarationListText v.CoreDisplayName + | Item.Property(_, FSProp(_, _, Some v, _) :: _) + | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> ConvertValCoreNameToDeclarationListText v.CoreDisplayName + | Item.Property(nm, _) -> ConvertValCoreNameToDeclarationListText nm + | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> ConvertValCoreNameToDeclarationListText v.CoreDisplayName + | Item.MethodGroup(nm, _, _) -> ConvertValCoreNameToDeclarationListText nm + | _ -> d.DisplayName + let valRefHash (vref: ValRef) = match vref.TryDeref with | ValueNone -> 0 diff --git a/src/fsharp/NameResolution.fsi b/src/fsharp/NameResolution.fsi index 73349bb7e85..98757f1a47f 100755 --- a/src/fsharp/NameResolution.fsi +++ b/src/fsharp/NameResolution.fsi @@ -130,6 +130,8 @@ type Item = member DisplayName: string + member DeclarationListText: string + [] /// Pairs an Item with a TyparInst showing how generic type variables of the item are instantiated at /// a particular usage point. diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 5476ec937c4..0455c145d74 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -266,6 +266,13 @@ module internal PrintUtilities = else restL + let layoutXmlDocOfILFieldInfo (denv: DisplayEnv) (infoReader: InfoReader) (finfo: ILFieldInfo) restL = + if denv.showDocumentation then + GetXmlDocSigOfILFieldInfo infoReader Range.range0 finfo + |> layoutXmlDocFromSig denv infoReader XmlDoc.Empty restL + else + restL + let layoutXmlDocOfRecdFieldRef (denv: DisplayEnv) (infoReader: InfoReader) (rfref: RecdFieldRef) restL = if denv.showDocumentation then GetXmlDocSigOfRecdFieldRef rfref @@ -1581,11 +1588,12 @@ module private TastDefinitionPrinting = #endif | TNoRepr -> false - let private layoutILFieldInfo denv amap m (einfo: ILFieldInfo) = - let staticL = if einfo.IsStatic then WordL.keywordStatic else emptyL - let nameL = ConvertDisplayNameToDisplayLayout (tagField >> wordL) einfo.FieldName - let typL = layoutType denv (einfo.FieldType(amap, m)) - staticL ^^ WordL.keywordVal ^^ (nameL |> addColonL) ^^ typL + let private layoutILFieldInfo denv (infoReader: InfoReader) m (finfo: ILFieldInfo) = + let staticL = if finfo.IsStatic then WordL.keywordStatic else emptyL + let nameL = ConvertDisplayNameToDisplayLayout (tagField >> wordL) finfo.FieldName + let typL = layoutType denv (finfo.FieldType(infoReader.amap, m)) + let fieldL = staticL ^^ WordL.keywordVal ^^ (nameL |> addColonL) ^^ typL + layoutXmlDocOfILFieldInfo denv infoReader finfo fieldL let private layoutEventInfo denv (infoReader: InfoReader) m (einfo: EventInfo) = let amap = infoReader.amap @@ -1744,7 +1752,7 @@ module private TastDefinitionPrinting = let fieldLs = ilFields - |> List.map (fun x -> (true, x.IsStatic, x.FieldName, 0, 0), layoutILFieldInfo denv amap m x) + |> List.map (fun x -> (true, x.IsStatic, x.FieldName, 0, 0), layoutILFieldInfo denv infoReader m x) |> List.sortBy fst |> List.map snd diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index abf485500bd..6f5ef2ddc5f 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -475,6 +475,12 @@ let NormalizeIdentifierBackticks (name: string) : string = else name AddBackticksToIdentifierIfNeeded s +let ConvertValCoreNameToDeclarationListText name = + if IsMangledOpName name then + DecompileOpName name + else + name + let ConvertValCoreNameToDisplayName isBaseVal name = if isBaseVal && name = "base" then "base" diff --git a/src/fsharp/PrettyNaming.fsi b/src/fsharp/PrettyNaming.fsi index 307e34fc824..25ab83533a9 100644 --- a/src/fsharp/PrettyNaming.fsi +++ b/src/fsharp/PrettyNaming.fsi @@ -90,6 +90,19 @@ val CompileOpName: string -> string /// Used on names of all kinds val DecompileOpName: string -> string +/// Take a core display name (e.g. op_Addition or PropertyName) and convert it to text used in a declaration list +/// Foo --> Foo +/// + --> + +/// op_Addition --> + +/// op_Multiply --> * +/// op_DereferencePercent --> !% +/// A-B --> A-B +/// |A|_| --> |A|_| +/// base --> base +/// or --> or +/// mod --> mod +val internal ConvertValCoreNameToDeclarationListText: name: string -> string + /// Take a core display name (e.g. op_Addition or PropertyName) and convert it to display text /// Foo --> Foo /// + --> ``+`` diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index e0e7fa7d09e..4b1e132bc7e 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -8205,6 +8205,14 @@ let rec typeEnc g (gtpsType, gtpsMethod) ty = | TType_forall _ -> "Microsoft.FSharp.Core.FSharpTypeFunc" + | _ when isByrefTy g ty -> + let ety = destByrefTy g ty + typeEnc g (gtpsType, gtpsMethod) ety + "@" + + | _ when isNativePtrTy g ty -> + let ety = destNativePtrTy g ty + typeEnc g (gtpsType, gtpsMethod) ety + "*" + | _ when isArrayTy g ty -> let tcref, tinst = destAppTy g ty let arraySuffix = @@ -8216,25 +8224,20 @@ let rec typeEnc g (gtpsType, gtpsMethod) ty = | _ -> failwith "impossible: rankOfArrayTyconRef: unsupported array rank" typeEnc g (gtpsType, gtpsMethod) (List.head tinst) + arraySuffix - | TType_ucase (UnionCaseRef(tcref, _), tinst) - | TType_app (tcref, tinst) -> - if tyconRefEq g g.byref_tcr tcref then - typeEnc g (gtpsType, gtpsMethod) (List.head tinst) + "@" - elif tyconRefEq g tcref g.nativeptr_tcr then - typeEnc g (gtpsType, gtpsMethod) (List.head tinst) + "*" - else - let tyName = - let ty = stripTyEqnsAndMeasureEqns g ty - match ty with - | TType_app (tcref, _tinst) -> - // Generic type names are (name + "`" + digits) where name does not contain "`". - // In XML doc, when used in type instances, these do not use the ticks. - let path = Array.toList (fullMangledPathToTyconRef tcref) @ [tcref.CompiledName] - textOfPath (List.map DemangleGenericTypeName path) - | _ -> - assert false - failwith "impossible" - tyName + tyargsEnc g (gtpsType, gtpsMethod) tinst + | TType_ucase (_, tinst) + | TType_app (_, tinst) -> + let tyName = + let ty = stripTyEqnsAndMeasureEqns g ty + match ty with + | TType_app (tcref, _tinst) -> + // Generic type names are (name + "`" + digits) where name does not contain "`". + // In XML doc, when used in type instances, these do not use the ticks. + let path = Array.toList (fullMangledPathToTyconRef tcref) @ [tcref.CompiledName] + textOfPath (List.map DemangleGenericTypeName path) + | _ -> + assert false + failwith "impossible" + tyName + tyargsEnc g (gtpsType, gtpsMethod) tinst | TType_anon (anonInfo, tinst) -> sprintf "%s%s" anonInfo.ILTypeRef.FullName (tyargsEnc g (gtpsType, gtpsMethod) tinst) diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index ecee790d880..904274e2f4a 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -912,11 +912,11 @@ module internal DescriptionListsImpl = /// An intellisense declaration [] -type DeclarationListItem(name: string, nameInCode: string, fullName: string, glyph: FSharpGlyph, info, accessibility: FSharpAccessibility, +type DeclarationListItem(textInDeclList: string, textInCode: string, fullName: string, glyph: FSharpGlyph, info, accessibility: FSharpAccessibility, kind: CompletionItemKind, isOwnMember: bool, priority: int, isResolved: bool, namespaceToOpen: string option) = - member _.Name = name + member _.Name = textInDeclList - member _.NameInCode = nameInCode + member _.NameInCode = textInCode member _.Description = match info with @@ -946,6 +946,23 @@ type DeclarationListItem(name: string, nameInCode: string, fullName: string, gly type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, isError: bool) = static let fsharpNamespace = [|"Microsoft"; "FSharp"|] + // Check whether this item looks like an operator. + static let isOperatorItem name (items: CompletionItem list) = + match items with + | [item] -> + match item.Item with + | Item.Value _ | Item.MethodGroup _ | Item.UnionCase _ -> IsOperatorDisplayName name + | _ -> false + | _ -> false + + static let isActivePatternItem (items: CompletionItem list) = + match items with + | [item] -> + match item.Item with + | Item.Value vref -> IsActivePatternName vref.CoreDisplayName + | _ -> false + | _ -> false + member _.Items = declarations member _.IsForType = isForType @@ -992,7 +1009,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i if verbose then dprintf "service.ml: mkDecls: %d found groups after filtering\n" (List.length items); // Group by full name for unresolved items and by display name for resolved ones. - let items = + let decls = items |> List.rev // Prefer items from file check results to ones from referenced assemblies via GetAssemblyContent ("all entities") @@ -1006,41 +1023,26 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i | [||] -> u.DisplayName | ns -> (ns |> String.concat ".") + "." + u.DisplayName | None -> x.Item.DisplayName) + |> List.map (fun (_, items) -> let item = items.Head - let name = + let textInDeclList = + match item.Unresolved with + | Some u -> u.DisplayName + | None -> item.Item.DeclarationListText + let textInCode = match item.Unresolved with | Some u -> u.DisplayName | None -> item.Item.DisplayName - name, items) - - // Filter out operators, active patterns (as values) and the empty list - let items = - // Check whether this item looks like an operator. - let isOperatorItem name (items: CompletionItem list) = - match items with - | [item] -> - match item.Item with - | Item.Value _ | Item.MethodGroup _ | Item.UnionCase _ -> IsOperatorDisplayName name - | _ -> false - | _ -> false - - let isActivePatternItem (items: CompletionItem list) = - match items with - | [item] -> - match item.Item with - | Item.Value vref -> IsActivePatternName vref.CoreDisplayName - | _ -> false - | _ -> false - - items |> List.filter (fun (displayName, items) -> - not (isOperatorItem displayName items) && - not (displayName = "[]") && // list shows up as a Type and a UnionCase, only such entity with a symbolic name, but want to filter out of intellisense + textInDeclList, textInCode, items) + + // Filter out operators, active patterns (as values) and the empty list + |> List.filter (fun (_textInDeclList, textInCode, items) -> + not (isOperatorItem textInCode items) && + not (textInCode = "[]") && // list shows up as a Type and a UnionCase, only such entity with a symbolic name, but want to filter out of intellisense not (isActivePatternItem items)) - let decls = - items - |> List.map (fun (displayName, itemsWithSameFullName) -> + |> List.map (fun (textInDeclList, textInCode, itemsWithSameFullName) -> match itemsWithSameFullName with | [] -> failwith "Unexpected empty bag" | _ -> @@ -1053,16 +1055,8 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i let item = items.Head let glyph = GlyphOfItem(denv, item.Item) - let name, nameInCode = - if displayName.StartsWithOrdinal("( ") && displayName.EndsWithOrdinal(" )") then - let cleanName = displayName.[2..displayName.Length - 3] - cleanName, - if IsOperatorDisplayName displayName then cleanName else "``" + cleanName + "``" - else - displayName, - match item.Unresolved with - | Some _ -> displayName - | None -> AddBackticksToIdentifierIfNeeded displayName + let textInDeclList = ConvertValCoreNameToDeclarationListText textInDeclList + let textInCode = textInCode let isAttributeItem = lazy (IsAttribute infoReader item.Item) @@ -1071,8 +1065,8 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i name.[0..name.Length - "Attribute".Length - 1] else name - let name = cutAttributeSuffix name - let nameInCode = cutAttributeSuffix nameInCode + let textInDeclList = cutAttributeSuffix textInDeclList + let textInCode = cutAttributeSuffix textInCode let fullName = match item.Unresolved with @@ -1097,7 +1091,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i | ns -> Some (System.String.Join(".", ns))) DeclarationListItem( - name, nameInCode, fullName, glyph, Choice1Of2 (items, infoReader, ad, m, denv), getAccessibility item.Item, + textInDeclList, textInCode, fullName, glyph, Choice1Of2 (items, infoReader, ad, m, denv), getAccessibility item.Item, item.Kind, item.IsOwnMember, item.MinorPriority, item.Unresolved.IsNone, namespaceToOpen)) DeclarationListInfo(Array.ofList decls, isForType, false) diff --git a/src/fsharp/service/ServiceDeclarationLists.fsi b/src/fsharp/service/ServiceDeclarationLists.fsi index e59d8ba6a65..d8a302cef94 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fsi +++ b/src/fsharp/service/ServiceDeclarationLists.fsi @@ -94,19 +94,22 @@ type internal CompletionItem = // // Note: this type holds a weak reference to compiler resources. type public DeclarationListItem = - /// Get the display name for the declaration. + /// Get the text to display in the declaration list for the declaration. member Name: string - /// Get the name for the declaration as it's presented in source code. + /// Get the text for the declaration as it's to be inserted into source code. member NameInCode: string /// Get the description member Description: ToolTipText + /// Get the glyph to use member Glyph: FSharpGlyph + /// Get the accessibility of the item member Accessibility: FSharpAccessibility + /// Get the completion kind of the item member Kind: CompletionItemKind member IsOwnMember: bool diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs index 8355739c4a7..74062d0b028 100644 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs +++ b/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs @@ -79,3 +79,82 @@ type CompletionTests() = let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "Select") Assert.Equal(1, matchingCompletions.Length) } |> Async.StartAsTask :> Task + + [] + member _.``Completions with strange names for static members``() = + use script = new FSharpScript() + let lines = [ "type C() =" + " static member ``Long Name`` = 1" + " static member ``-``(a:C, b:C) = C()" + " static member op_Addition(a:C, b:C) = C()" + " static member ``base``(a:C, b:C) = C()" + " static member ``|A|_|``(a:C, b:C) = C()" + "C." ] + let completions = script.GetCompletionItems(String.Join("\n", lines), 7, 2) |> Async.RunSynchronously + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "Long Name") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("``Long Name``", matchingCompletions.[0].NameInCode) + + // Things with names like op_Addition are suppressed from completion by FCS + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "+") + Assert.Equal(0, matchingCompletions.Length) + + // Strange names like ``+`` and ``-`` are just normal text and not operators + // and are present in competion lists + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "-") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("``-``", matchingCompletions.[0].NameInCode) + + // ``base`` is a strange name but is still present. In this case the inserted + // text NameInCode is ``base`` because the thing is not a base value mapping to + // the base keyword + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "base") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("``base``", matchingCompletions.[0].NameInCode) + + // ``|A|_|`` is a strange name like the name of an active pattern but is still present. + // In this case the inserted is (|A|_|) + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "|A|_|") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("(|A|_|)", matchingCompletions.[0].NameInCode) + + + [] + member _.``Completions with strange names for module``() = + use script = new FSharpScript() + let lines = [ "module M =" + " let ``Long Name`` = 1" + " let ``-``(a:int, b:int) = 1" + " let op_Addition(a:int, b:int) = 1" + " let ``base``(a:int, b:int) = 1" + " let (|A|_|)(a:int, b:int) = None" + "M." ] + let completions = script.GetCompletionItems(String.Join("\n", lines), 7, 2) |> Async.RunSynchronously + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "Long Name") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("``Long Name``", matchingCompletions.[0].NameInCode) + + // Things with names like op_Addition are suppressed from completion by FCS + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "+") + Assert.Equal(0, matchingCompletions.Length) + + // Strange names like ``+`` and ``-`` are just normal text and not operators + // and are present in competion lists + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "-") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("``-``", matchingCompletions.[0].NameInCode) + + // ``base`` is a strange name but is still present. In this case the inserted + // text NameInCode is ``base`` because the thing is not a base value mapping to + // the base keyword + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "base") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("``base``", matchingCompletions.[0].NameInCode) + + // (|A|_|) is an active pattern and the completion item is the + // active pattern case A. In this case the inserted is A + let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "A") + Assert.Equal(1, matchingCompletions.Length) + Assert.Equal("A", matchingCompletions.[0].NameInCode) + + diff --git a/tests/service/CSharpProjectAnalysis.fs b/tests/service/CSharpProjectAnalysis.fs index d72549822ae..72ebc1d7607 100644 --- a/tests/service/CSharpProjectAnalysis.fs +++ b/tests/service/CSharpProjectAnalysis.fs @@ -57,7 +57,9 @@ let internal getProjectReferences (content: string, dllFiles, libDirs, otherFlag results, assemblies [] +#if NETCOREAPP [] +#endif let ``Test that csharp references are recognized as such`` () = let csharpAssembly = PathRelativeToTestAssembly "CSharp_Analysis.dll" let _, table = getProjectReferences("""module M""", [csharpAssembly], None, None) @@ -86,6 +88,10 @@ let ``Test that csharp references are recognized as such`` () = //// Check that we get xml docs members.[".ctor"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.#ctor(System.Int32,System.String)" members.["Method"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.Method(System.String)" + members.["Method2"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.Method2(System.String)" + members.["Method3"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.Method3(System.String[])" + members.["MethodWithOutref"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.MethodWithOutref(System.Int32@)" + members.["MethodWithInref"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.MethodWithInref(System.Int32@)" members.["Property"].XmlDocSig |> shouldEqual "P:FSharp.Compiler.Service.Tests.CSharpClass.Property" members.["Event"].XmlDocSig |> shouldEqual "E:FSharp.Compiler.Service.Tests.CSharpClass.Event" members.["InterfaceMethod"].XmlDocSig |> shouldEqual "M:FSharp.Compiler.Service.Tests.CSharpClass.InterfaceMethod(System.String)" @@ -93,7 +99,9 @@ let ``Test that csharp references are recognized as such`` () = members.["InterfaceEvent"].XmlDocSig |> shouldEqual "E:FSharp.Compiler.Service.Tests.CSharpClass.InterfaceEvent" [] +#if NETCOREAPP [] +#endif let ``Test that symbols of csharp inner classes/enums are reported`` () = let csharpAssembly = PathRelativeToTestAssembly "CSharp_Analysis.dll" let content = """ @@ -113,7 +121,9 @@ let _ = CSharpOuterClass.InnerClass.StaticMember() "member StaticMember"; "NestedEnumClass"|] [] +#if NETCOREAPP [] +#endif let ``Ctor test`` () = let csharpAssembly = PathRelativeToTestAssembly "CSharp_Analysis.dll" let content = """ @@ -145,7 +155,9 @@ let getEntitiesUses source = |> List.ofSeq [] +#if NETCOREAPP [] +#endif let ``Different types with the same short name equality check`` () = let source = """ module CtorTest @@ -163,7 +175,9 @@ let (s2: FSharp.Compiler.Service.Tests.String) = null | _ -> sprintf "Expecting two symbols, got %A" stringSymbols |> failwith [] +#if NETCOREAPP [] +#endif let ``Different namespaces with the same short name equality check`` () = let source = """ module CtorTest diff --git a/tests/service/data/CSharp_Analysis/CSharpClass.cs b/tests/service/data/CSharp_Analysis/CSharpClass.cs index 13a9e257642..9324b71815f 100644 --- a/tests/service/data/CSharp_Analysis/CSharpClass.cs +++ b/tests/service/data/CSharp_Analysis/CSharpClass.cs @@ -47,21 +47,36 @@ public CSharpClass(int first, string param) } + /// Some docs for Method public int Method(string parameter) { throw new NotImplementedException(); } + /// Some docs for Method2 public int Method2(string optParameter = "empty") { throw new NotImplementedException(); } + /// Some docs for Method3 public int Method3(params string[] variadicParameter) { throw new NotImplementedException(); } + /// Some docs for MethodWithOutref + public int MethodWithOutref(out int outParameter) + { + throw new NotImplementedException(); + } + + /// Some docs for MethodWithInref + public int MethodWithInref(in int outParameter) + { + throw new NotImplementedException(); + } + public void GenericMethod(T input) { throw new NotImplementedException(); diff --git a/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj b/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj index 51649639ca5..2053b1138bb 100644 --- a/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj +++ b/tests/service/data/CSharp_Analysis/CSharp_Analysis.csproj @@ -6,6 +6,7 @@ 1.0.0.0 none $(NoWarn);0067;1591 + true From 14fd44ae20886b1b1253f0cc3f5abda40ed03653 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 02:35:53 +0100 Subject: [PATCH 18/25] systematize the demangling (DisplayNameCore) and addition of parens/backticks (DisplayName) --- src/fsharp/CheckDeclarations.fs | 16 +-- src/fsharp/CheckExpressions.fs | 20 +-- src/fsharp/ConstraintSolver.fs | 4 +- src/fsharp/IlxGen.fs | 20 +-- src/fsharp/InfoReader.fs | 2 +- src/fsharp/NameResolution.fs | 96 +++++++------- src/fsharp/NameResolution.fsi | 10 +- src/fsharp/NicePrint.fs | 84 ++++++------ src/fsharp/PostInferenceChecks.fs | 9 +- src/fsharp/PrettyNaming.fs | 21 ++- src/fsharp/PrettyNaming.fsi | 28 ++-- src/fsharp/QuotationTranslator.fs | 2 +- src/fsharp/SignatureConformance.fs | 12 +- src/fsharp/TypedTree.fs | 120 ++++++++++++++---- src/fsharp/TypedTreeOps.fs | 12 +- src/fsharp/TypedTreePickle.fs | 2 + src/fsharp/infos.fs | 41 ++++-- src/fsharp/infos.fsi | 33 ++++- src/fsharp/service/ItemKey.fs | 15 +-- src/fsharp/service/ServiceDeclarationLists.fs | 15 +-- src/fsharp/symbols/Exprs.fs | 6 +- src/fsharp/symbols/SymbolHelpers.fs | 8 +- src/fsharp/symbols/Symbols.fs | 22 ++-- src/fsharp/symbols/Symbols.fsi | 5 +- 24 files changed, 358 insertions(+), 245 deletions(-) diff --git a/src/fsharp/CheckDeclarations.fs b/src/fsharp/CheckDeclarations.fs index 11c6de5a15f..4b45fc856ee 100644 --- a/src/fsharp/CheckDeclarations.fs +++ b/src/fsharp/CheckDeclarations.fs @@ -455,7 +455,7 @@ module TcRecdUnionAndEnumDeclarations = let ValidateFieldNames (synFields: SynField list, tastFields: RecdField list) = let seen = Dictionary() (synFields, tastFields) ||> List.iter2 (fun sf f -> - match seen.TryGetValue f.Name with + match seen.TryGetValue f.LogicalName with | true, synField -> match sf, synField with | SynField(_, _, Some id, _, _, _, _, _), SynField(_, _, Some _, _, _, _, _, _) -> @@ -465,7 +465,7 @@ module TcRecdUnionAndEnumDeclarations = error(Error(FSComp.SR.tcFieldNameConflictsWithGeneratedNameForAnonymousField(id.idText), id.idRange)) | _ -> assert false | _ -> - seen.Add(f.Name, sf)) + seen.Add(f.LogicalName, sf)) let TcUnionCaseDecl cenv env parent thisTy thisTyInst tpenv (SynUnionCase(Attributes synAttrs, id, args, xmldoc, vis, m)) = let attrs = TcAttributes cenv env AttributeTargets.UnionCaseDecl synAttrs // the attributes of a union case decl get attached to the generated "static factory" method @@ -503,7 +503,7 @@ module TcRecdUnionAndEnumDeclarations = if not (typeEquiv cenv.g recordTy thisTy) then error(Error(FSComp.SR.tcReturnTypesForUnionMustBeSameAsType(), m)) rfields, recordTy - let names = rfields |> List.map (fun f -> f.Name) + let names = rfields |> List.map (fun f -> f.DisplayNameCore) let doc = xmldoc.ToXmlDoc(true, Some names) Construct.NewUnionCase id rfields recordTy attrs doc vis @@ -1379,7 +1379,7 @@ module IncrClassChecking = [ for b in memberBinds do yield b.Var.CompiledName cenv.g.CompilerGlobalState yield b.Var.DisplayName - yield b.Var.CoreDisplayName + yield b.Var.DisplayNameCoreMangled yield b.Var.LogicalName ] let reps = IncrClassReprInfo.Empty(g, takenFieldNames) @@ -2040,7 +2040,7 @@ module MutRecBindingChecking = if needsSafeStaticInit && hasStaticBindings then let rfield = MakeSafeInitField g envForDecls tcref.Range true - SafeInitField(mkRecdFieldRef tcref rfield.Name, rfield) + SafeInitField(mkRecdFieldRef tcref rfield.LogicalName, rfield) else NoSafeInitInfo @@ -3147,7 +3147,7 @@ module EstablishTypeDefinitionCores = if InstanceMembersNeedSafeInitCheck cenv m thisTy then let rfield = MakeSafeInitField cenv.g env m false let tcref = tcrefOfAppTy cenv.g thisTy - SafeInitField (mkRecdFieldRef tcref rfield.Name, rfield) + SafeInitField (mkRecdFieldRef tcref rfield.LogicalName, rfield) else NoSafeInitInfo @@ -3848,7 +3848,7 @@ module EstablishTypeDefinitionCores = for fspec in fields do if not fspec.IsCompilerGenerated then let info = RecdFieldInfo(thisTyInst, thisTyconRef.MakeNestedRecdFieldRef fspec) - let nenv' = AddFakeNameToNameEnv fspec.Name nenv (Item.RecdField info) + let nenv' = AddFakeNameToNameEnv fspec.LogicalName nenv (Item.RecdField info) // Name resolution gives better info for tooltips let item = Item.RecdField(FreshenRecdFieldRef cenv.nameResolver m (thisTyconRef.MakeNestedRecdFieldRef fspec)) CallNameResolutionSink cenv.tcSink (fspec.Range, nenv, item, emptyTyparInst, ItemOccurence.Binding, ad) @@ -3928,7 +3928,7 @@ module EstablishTypeDefinitionCores = let unionCases = TcRecdUnionAndEnumDeclarations.TcUnionCaseDecls cenv envinner innerParent thisTy thisTyInst tpenv unionCases if tycon.IsStructRecordOrUnionTycon && unionCases.Length > 1 then - let fieldNames = [ for uc in unionCases do for ft in uc.FieldTable.TrueInstanceFieldsAsList do yield ft.Name ] + let fieldNames = [ for uc in unionCases do for ft in uc.FieldTable.TrueInstanceFieldsAsList do yield ft.LogicalName ] if fieldNames |> List.distinct |> List.length <> fieldNames.Length then errorR(Error(FSComp.SR.tcStructUnionMultiCaseDistinctFields(), m)) diff --git a/src/fsharp/CheckExpressions.fs b/src/fsharp/CheckExpressions.fs index 9d393e6fe5e..48e93649a01 100644 --- a/src/fsharp/CheckExpressions.fs +++ b/src/fsharp/CheckExpressions.fs @@ -1453,7 +1453,7 @@ let MakeAndPublishVal cenv env (altActualParent, inSig, declKind, vrec, vscheme, (hasDeclaredTypars || inSig), isGeneratedEventVal, konst, actualParent) - CheckForAbnormalOperatorNames cenv id.idRange vspec.CoreDisplayName memberInfoOpt + CheckForAbnormalOperatorNames cenv id.idRange vspec.DisplayNameCoreMangled memberInfoOpt PublishValueDefn cenv env declKind vspec @@ -1960,7 +1960,7 @@ let rec ApplyUnionCaseOrExn (makerForUnionCase, makerForExnTag) m cenv env overa | Item.UnionCase(ucinfo, showDeprecated) -> if showDeprecated then - warning(Deprecated(FSComp.SR.nrUnionTypeNeedsQualifiedAccess(ucinfo.Name, ucinfo.Tycon.DisplayName) |> snd, m)) + warning(Deprecated(FSComp.SR.nrUnionTypeNeedsQualifiedAccess(ucinfo.DisplayName, ucinfo.Tycon.DisplayName) |> snd, m)) let ucref = ucinfo.UnionCaseRef CheckUnionCaseAttributes cenv.g ucref m |> CommitOperationResult @@ -5105,7 +5105,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p extraPatterns.Add pat match item with | Item.UnionCase(uci, _) -> - errorR (Error (FSComp.SR.tcUnionCaseConstructorDoesNotHaveFieldWithGivenName (uci.Name, id.idText), id.idRange)) + errorR (Error (FSComp.SR.tcUnionCaseConstructorDoesNotHaveFieldWithGivenName (uci.DisplayName, id.idText), id.idRange)) | Item.ExnCase tcref -> errorR (Error (FSComp.SR.tcExceptionConstructorDoesNotHaveFieldWithGivenName (tcref.DisplayName, id.idText), id.idRange)) | _ -> @@ -5203,7 +5203,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | Item.RecdField rfinfo -> CheckRecdFieldInfoAccessible cenv.amap lidRange env.AccessRights rfinfo - if not rfinfo.IsStatic then errorR (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.Name), lidRange)) + if not rfinfo.IsStatic then errorR (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.DisplayName), lidRange)) CheckRecdFieldInfoAttributes cenv.g rfinfo lidRange |> CommitOperationResult match rfinfo.LiteralValue with | None -> error (Error(FSComp.SR.tcFieldNotLiteralCannotBeUsedInPattern(), lidRange)) @@ -6473,7 +6473,7 @@ and TcRecordConstruction cenv (overallTy: TType) env tpenv optOrigExprInfo objTy [ for fname, fexpr in fldsList do let fspec = try - fspecs |> List.find (fun fspec -> fspec.Name = fname) + fspecs |> List.find (fun fspec -> fspec.LogicalName = fname) with :? KeyNotFoundException -> error (Error(FSComp.SR.tcUndefinedField(fname, NicePrint.minimalStringOfType env.DisplayEnv objTy), m)) let fty = actualTyOfRecdFieldForTycon tycon tinst fspec @@ -6496,8 +6496,8 @@ and TcRecordConstruction cenv (overallTy: TType) env tpenv optOrigExprInfo objTy let fieldNameUnbound nom = List.forall (fun (name, _) -> name <> nom) fldsList let flds = fspecs |> List.choose (fun rfld -> - if fieldNameUnbound rfld.Name && not rfld.IsZeroInit - then Some(rfld.Name, mkRecdFieldGetViaExprAddr (oldvaddre, tcref.MakeNestedRecdFieldRef rfld, tinst, m)) + if fieldNameUnbound rfld.LogicalName && not rfld.IsZeroInit + then Some(rfld.LogicalName, mkRecdFieldGetViaExprAddr (oldvaddre, tcref.MakeNestedRecdFieldRef rfld, tinst, m)) else None) flds @@ -6508,7 +6508,7 @@ and TcRecordConstruction cenv (overallTy: TType) env tpenv optOrigExprInfo objTy // Check all fields are bound fspecs |> List.iter (fun fspec -> - if not (fldsList |> List.exists (fun (fname, _) -> fname = fspec.Name)) then + if not (fldsList |> List.exists (fun (fname, _) -> fname = fspec.LogicalName)) then error(Error(FSComp.SR.tcFieldRequiresAssignment(fspec.rfield_id.idText, fullDisplayTextOfTyconRef tcref), m))) // Other checks (overlap with above check now clear) @@ -8105,7 +8105,7 @@ and TcItemThen cenv (overallTy: OverallTy) env tpenv (tinstEnclosing, item, mIte else match item with | Item.UnionCase(uci, _) -> - error(Error(FSComp.SR.tcUnionCaseConstructorDoesNotHaveFieldWithGivenName(uci.Name, id.idText), id.idRange)) + error(Error(FSComp.SR.tcUnionCaseConstructorDoesNotHaveFieldWithGivenName(uci.DisplayName, id.idText), id.idRange)) | Item.ExnCase tcref -> error(Error(FSComp.SR.tcExceptionConstructorDoesNotHaveFieldWithGivenName(tcref.DisplayName, id.idText), id.idRange)) | Item.ActivePatternResult _ -> @@ -8547,7 +8547,7 @@ and TcItemThen cenv (overallTy: OverallTy) env tpenv (tinstEnclosing, item, mIte | Item.RecdField rfinfo -> // Get static F# field or literal CheckRecdFieldInfoAccessible cenv.amap mItem ad rfinfo - if not rfinfo.IsStatic then error (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.Name), mItem)) + if not rfinfo.IsStatic then error (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.DisplayName), mItem)) CheckRecdFieldInfoAttributes g rfinfo mItem |> CommitOperationResult let fref = rfinfo.RecdFieldRef let fieldTy = rfinfo.FieldType diff --git a/src/fsharp/ConstraintSolver.fs b/src/fsharp/ConstraintSolver.fs index bdb35b6a497..fc4f7387dd9 100644 --- a/src/fsharp/ConstraintSolver.fs +++ b/src/fsharp/ConstraintSolver.fs @@ -2341,7 +2341,7 @@ and CanMemberSigsMatchUpToCheck | AssignedRecdFieldSetter(rfinfo) -> let calledArgTy = rfinfo.FieldType - rfinfo.Name, calledArgTy + rfinfo.LogicalName, calledArgTy subsumeOrConvertArg (CalledArg((-1, 0), false, NotOptional, NoCallerInfo, false, false, Some (mkSynId m name), ReflectedArgInfo.None, calledArgTy)) caller ) @@ -2534,7 +2534,7 @@ and ReportNoCandidatesError (csenv: ConstraintSolverEnv) (nUnnamedCallerArgs, nN if minfo.IsConstructor then let suggestFields (addToBuffer: string -> unit) = for p in minfo.DeclaringTyconRef.AllInstanceFieldsAsList do - addToBuffer(p.Name.Replace("@", "")) + addToBuffer(p.LogicalName.Replace("@", "")) ErrorWithSuggestions((msgNum, FSComp.SR.csCtorHasNoArgumentOrReturnProperty(methodName, id.idText, msgText)), id.idRange, id.idText, suggestFields) else diff --git a/src/fsharp/IlxGen.fs b/src/fsharp/IlxGen.fs index 444a3eb00c9..5943c5fe2ac 100644 --- a/src/fsharp/IlxGen.fs +++ b/src/fsharp/IlxGen.fs @@ -570,7 +570,7 @@ and GenTypeAux amap m (tyenv: TypeReprEnv) voidOK ptrsOK ty = and GenUnionCaseRef (amap: ImportMap) m tyenv i (fspecs: RecdField[]) = let g = amap.g fspecs |> Array.mapi (fun j fspec -> - let ilFieldDef = mkILInstanceField(fspec.Name, GenType amap m tyenv fspec.FormalType, None, ILMemberAccess.Public) + let ilFieldDef = mkILInstanceField(fspec.LogicalName, GenType amap m tyenv fspec.FormalType, None, ILMemberAccess.Public) // These properties on the "field" of an alternative end up going on a property generated by cu_erase.fs IlxUnionCaseField (ilFieldDef.With(customAttrs = mkILCustomAttrs [(mkCompilationMappingAttrWithVariantNumAndSeqNum g (int SourceConstructFlags.Field) i j )]))) @@ -3189,7 +3189,7 @@ and GenGetExnField cenv cgbuf eenv (e, ecref, fieldNum, m) sequel = let fld = List.item fieldNum exnc.TrueInstanceFieldsAsList let ftyp = GenType cenv.amap m eenv.tyenv fld.FormalType - let mspec = mkILNonGenericInstanceMethSpecInTy (ty, "get_" + fld.Name, [], ftyp) + let mspec = mkILNonGenericInstanceMethSpecInTy (ty, "get_" + fld.LogicalName, [], ftyp) CG.EmitInstr cgbuf (pop 1) (Push [ftyp]) (mkNormalCall mspec) GenSequel cenv eenv.cloc cgbuf sequel @@ -4903,11 +4903,11 @@ and GenStructStateMachine cenv cgbuf eenvouter (res: LoweredStateMachine) sequel [ // Fields copied from the template struct for templateFld in infoReader.GetRecordOrClassFieldsOfType (None, AccessibilityLogic.AccessorDomain.AccessibleFromSomewhere, m, templateStructTy) do // Suppress the "ResumptionDynamicInfo" from generated state machines - if templateFld.Name <> "ResumptionDynamicInfo" then + if templateFld.LogicalName <> "ResumptionDynamicInfo" then let access = ComputeMemberAccess false let fty = GenType cenv.amap m eenvinner.tyenv templateFld.FieldType let fdef = - ILFieldDef(name = templateFld.Name, fieldType = fty, attributes = enum 0, data = None, literalValue = None, offset = None, marshal = None, customAttrs = mkILCustomAttrs []) + ILFieldDef(name = templateFld.LogicalName, fieldType = fty, attributes = enum 0, data = None, literalValue = None, offset = None, marshal = None, customAttrs = mkILCustomAttrs []) .WithAccess(access) .WithStatic(false) yield fdef @@ -8137,7 +8137,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = [ for i, (useGenuineField, _, isFSharpMutable, isStatic, propAttribs, ilPropType, _, fspec) in Seq.indexed fieldSummaries do if not useGenuineField then let ilCallingConv = if isStatic then ILCallingConv.Static else ILCallingConv.Instance - let ilPropName = fspec.Name + let ilPropName = fspec.LogicalName let ilHasSetter = isCLIMutable || isFSharpMutable let ilFieldAttrs = GenAttrs cenv eenv propAttribs @ [mkCompilationMappingAttrWithSeqNum g (int SourceConstructFlags.Field) i] yield @@ -8155,7 +8155,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = [ // Generate property getter methods for those fields that have properties for useGenuineField, ilFieldName, _, isStatic, _, ilPropType, isPropHidden, fspec in fieldSummaries do if not useGenuineField then - let ilPropName = fspec.Name + let ilPropName = fspec.LogicalName let ilMethName = "get_" + ilPropName let access = ComputeMemberAccess isPropHidden yield mkLdfldMethodDef (ilMethName, access, isStatic, ilThisTy, ilFieldName, ilPropType) @@ -8164,7 +8164,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = for useGenuineField, ilFieldName, isFSharpMutable, isStatic, _, ilPropType, isPropHidden, fspec in fieldSummaries do let ilHasSetter = (isCLIMutable || isFSharpMutable) && not useGenuineField if ilHasSetter then - let ilPropName = fspec.Name + let ilPropName = fspec.LogicalName let ilFieldSpec = mkILFieldSpecInTy(ilThisTy, ilFieldName, ilPropType) let ilMethName = "set_" + ilPropName let ilParams = [mkILParamNamed("value", ilPropType)] @@ -8240,7 +8240,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let fieldNamesAndTypes = relevantFields - |> List.map (fun (_, ilFieldName, _, _, _, ilPropType, _, fspec) -> (fspec.Name, ilFieldName, ilPropType)) + |> List.map (fun (_, ilFieldName, _, _, _, ilPropType, _, fspec) -> (fspec.LogicalName, ilFieldName, ilPropType)) let isStructRecord = tycon.IsStructRecordOrUnionTycon @@ -8511,9 +8511,9 @@ and GenExnDef cenv mgbuf eenv m (exnc: Tycon) = let ilMethodDefsForProperties, ilFieldDefs, ilPropertyDefs, fieldNamesAndTypes = [ for i, fld in Seq.indexed fspecs do - let ilPropName = fld.Name + let ilPropName = fld.LogicalName let ilPropType = GenType cenv.amap m eenv.tyenv fld.FormalType - let ilMethName = "get_" + fld.Name + let ilMethName = "get_" + fld.LogicalName let ilFieldName = ComputeFieldName exnc fld let ilMethodDef = mkLdfldMethodDef (ilMethName, reprAccess, false, ilThisTy, ilFieldName, ilPropType) let ilFieldDef = mkILInstanceField(ilFieldName, ilPropType, None, ILMemberAccess.Assembly) diff --git a/src/fsharp/InfoReader.fs b/src/fsharp/InfoReader.fs index 63d58c596f0..cd5f95eb116 100644 --- a/src/fsharp/InfoReader.fs +++ b/src/fsharp/InfoReader.fs @@ -1031,7 +1031,7 @@ let GetXmlDocSigOfRecdFieldRef (rfref: RecdFieldRef) = let tcref = rfref.TyconRef let ccuFileName = libFileOfEntityRef tcref if rfref.RecdField.XmlDocSig = "" then - rfref.RecdField.XmlDocSig <- XmlDocSigOfProperty [tcref.CompiledRepresentationForNamedType.FullName; rfref.RecdField.Name] + rfref.RecdField.XmlDocSig <- XmlDocSigOfProperty [tcref.CompiledRepresentationForNamedType.FullName; rfref.RecdField.LogicalName] Some (ccuFileName, rfref.RecdField.XmlDocSig) let GetXmlDocSigOfUnionCaseRef (ucref: UnionCaseRef) = diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 9873d7ae9a0..028db8fe9a7 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -243,45 +243,50 @@ type Item = let minfos = minfos |> List.sortBy (fun minfo -> minfo.NumArgs |> List.sum) Item.CtorGroup (nm, minfos) - member d.DisplayName = + member d.DisplayNameCore = match d with - | Item.Value v -> v.DisplayName - | Item.ActivePatternCase apref -> apref.Name - | Item.UnionCase(uinfo, _) -> DecompileOpName uinfo.UnionCase.DisplayName - | Item.ExnCase tcref -> tcref.LogicalName - | Item.RecdField rfinfo -> DecompileOpName rfinfo.RecdField.Name - | Item.UnionCaseField (uci, fieldIndex) -> uci.UnionCase.GetFieldByIndex(fieldIndex).Name - | Item.AnonRecdField (anonInfo, _tys, i, _m) -> anonInfo.SortedNames.[i] - | Item.NewDef id -> id.idText - | Item.ILField finfo -> finfo.FieldName - | Item.Event einfo -> einfo.EventName + | Item.Value v -> v.DisplayNameCore + | Item.ActivePatternCase apref -> apref.Name + | Item.UnionCase(uinfo, _) -> uinfo.DisplayNameCore + | Item.ExnCase tcref -> tcref.DisplayNameCore + | Item.RecdField rfinfo -> rfinfo.DisplayNameCore + | Item.UnionCaseField (uci, fieldIndex) -> uci.UnionCase.GetFieldByIndex(fieldIndex).DisplayNameCore + | Item.AnonRecdField (anonInfo, _tys, i, _m) -> anonInfo.SortedNames.[i] + | Item.NewDef id -> id.idText + | Item.ILField finfo -> finfo.FieldName + | Item.Event einfo -> einfo.EventName | Item.Property(_, FSProp(_, _, Some v, _) :: _) - | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> v.DisplayName - | Item.Property(nm, _) -> ConvertValCoreNameToDisplayName false nm - | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayName - | Item.MethodGroup(nm, _, _) -> ConvertValCoreNameToDisplayName false nm - | Item.CtorGroup(nm, _) -> DemangleGenericTypeName nm + | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> v.DisplayNameCore + | Item.Property(nm, _) -> nm |> DecompileOpName + | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayNameCore + | Item.MethodGroup(nm, _, _) -> nm |> DecompileOpName + | Item.CtorGroup(nm, _) -> nm |> DemangleGenericTypeName | Item.FakeInterfaceCtor (AbbrevOrAppTy tcref) - | Item.DelegateCtor (AbbrevOrAppTy tcref) -> DemangleGenericTypeName tcref.DisplayName - | Item.Types(nm, _) -> DemangleGenericTypeName nm - | Item.UnqualifiedType(tcref :: _) -> tcref.DisplayName - | Item.TypeVar (nm, _) -> nm - | Item.ModuleOrNamespaces(modref :: _) -> modref.DemangledModuleOrNamespaceName - | Item.ArgName (id, _, _) -> id.idText - | Item.SetterArg (id, _) -> id.idText - | Item.CustomOperation (customOpName, _, _) -> customOpName - | Item.CustomBuilder (nm, _) -> nm + | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.DisplayNameCore + | Item.Types(nm, _) -> nm |> DemangleGenericTypeName + | Item.UnqualifiedType(tcref :: _) -> tcref.DisplayNameCore + | Item.TypeVar (nm, _) -> nm + | Item.ModuleOrNamespaces(modref :: _) -> modref.DisplayNameCore + | Item.ArgName (id, _, _) -> id.idText + | Item.SetterArg (id, _) -> id.idText + | Item.CustomOperation (customOpName, _, _) -> customOpName + | Item.CustomBuilder (nm, _) -> nm | _ -> "" - member d.DeclarationListText = + member d.DisplayName = match d with - | Item.Value v -> ConvertValCoreNameToDeclarationListText v.CoreDisplayName + | Item.Value v -> v.DisplayName + | Item.UnionCase(uinfo, _) -> uinfo.DisplayName + | Item.ExnCase tcref -> tcref.DisplayName + | Item.RecdField rfinfo -> rfinfo.DisplayName + | Item.UnionCaseField (uci, fieldIndex) -> uci.UnionCase.GetFieldByIndex(fieldIndex).DisplayName | Item.Property(_, FSProp(_, _, Some v, _) :: _) - | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> ConvertValCoreNameToDeclarationListText v.CoreDisplayName - | Item.Property(nm, _) -> ConvertValCoreNameToDeclarationListText nm - | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> ConvertValCoreNameToDeclarationListText v.CoreDisplayName - | Item.MethodGroup(nm, _, _) -> ConvertValCoreNameToDeclarationListText nm - | _ -> d.DisplayName + | Item.Property(_, FSProp(_, _, _, Some v) :: _) -> v.DisplayName + | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayName + | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.DisplayName + | Item.UnqualifiedType(tcref :: _) -> tcref.DisplayName + | Item.ModuleOrNamespaces(modref :: _) -> modref.DisplayName + | _ -> d.DisplayNameCore |> ConvertNameToDisplayName let valRefHash (vref: ValRef) = match vref.TryDeref with @@ -1068,7 +1073,7 @@ let ChoosePropInfosForNameEnv g ty (pinfos: PropInfo list) = let ChooseFSharpFieldInfosForNameEnv g ty (rfinfos: RecdFieldInfo list) = rfinfos |> List.filter (fun rfinfo -> rfinfo.IsStatic && typeEquiv g rfinfo.DeclaringType ty) - |> List.map (fun rfinfo -> KeyValuePair(rfinfo.Name, Item.RecdField rfinfo)) + |> List.map (fun rfinfo -> KeyValuePair(rfinfo.LogicalName, Item.RecdField rfinfo)) let ChooseILFieldInfosForNameEnv g ty (finfos: ILFieldInfo list) = finfos @@ -2242,7 +2247,6 @@ let rec ResolveLongIdentAsModuleOrNamespace sink (atMostOne: ResultCollectionSet for tcref in tcrefs do if IsEntityAccessible amap m ad tcref then addToBuffer tcref.DisplayName - addToBuffer tcref.DemangledModuleOrNamespaceName UndefinedName(depth, error, id, suggestNames) @@ -2399,10 +2403,10 @@ let TryFindAnonRecdFieldOfType g typ nm = | None -> None | ValueNone -> None -let CoreDisplayName(pinfo: PropInfo) = +let DisplayNameCoreMangled(pinfo: PropInfo) = match pinfo with - | FSProp(_, _, _, Some set) -> set.CoreDisplayName - | FSProp(_, _, Some get, _) -> get.CoreDisplayName + | FSProp(_, _, _, Some set) -> set.DisplayNameCoreMangled + | FSProp(_, _, Some get, _) -> get.DisplayNameCoreMangled | FSProp _ -> failwith "unexpected (property must have either getter or setter)" | ILProp(ILPropInfo(_, def)) -> def.Name #if !NO_EXTENSIONTYPING @@ -2412,7 +2416,7 @@ let CoreDisplayName(pinfo: PropInfo) = let DecodeFSharpEvent (pinfos: PropInfo list) ad g (ncenv: NameResolver) m = match pinfos with | [pinfo] when pinfo.IsFSharpEventProperty -> - let nm = CoreDisplayName pinfo + let nm = DisplayNameCoreMangled pinfo let minfos1 = GetImmediateIntrinsicMethInfosOfType (Some("add_"+nm), ad) g ncenv.amap m pinfo.ApparentEnclosingType let minfos2 = GetImmediateIntrinsicMethInfosOfType (Some("remove_"+nm), ad) g ncenv.amap m pinfo.ApparentEnclosingType match minfos1, minfos2 with @@ -2423,7 +2427,7 @@ let DecodeFSharpEvent (pinfos: PropInfo list) ad g (ncenv: NameResolver) m = // FOUND PROPERTY-AS-EVENT BUT DIDN'T FIND CORRESPONDING ADD/REMOVE METHODS Some(Item.Property (nm, pinfos)) | pinfo :: _ -> - let nm = CoreDisplayName pinfo + let nm = DisplayNameCoreMangled pinfo Some(Item.Property (nm, pinfos)) | _ -> None @@ -2855,13 +2859,12 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified for modref in kv.Value do if IsEntityAccessible ncenv.amap m ad modref then addToBuffer modref.DisplayName - addToBuffer modref.DemangledModuleOrNamespaceName // check if the user forgot to use qualified access for e in nenv.eTyconsByDemangledNameAndArity do let hasRequireQualifiedAccessAttribute = HasFSharpAttribute ncenv.g ncenv.g.attrib_RequireQualifiedAccessAttribute e.Value.Attribs if hasRequireQualifiedAccessAttribute then - if e.Value.IsUnionTycon && e.Value.UnionCasesArray |> Array.exists (fun c -> c.DisplayName = id.idText) then + if e.Value.IsUnionTycon && e.Value.UnionCasesArray |> Array.exists (fun c -> c.LogicalName = id.idText) then addToBuffer (e.Value.DisplayName + "." + id.idText) raze (UndefinedName(0, FSComp.SR.undefinedNameValueOfConstructor, id, suggestNamesAndTypes)) @@ -2936,7 +2939,6 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified for modref in kv.Value do if IsEntityAccessible ncenv.amap m ad modref then addToBuffer modref.DisplayName - addToBuffer modref.DemangledModuleOrNamespaceName for e in nenv.TyconsByDemangledNameAndArity fullyQualified do if IsEntityAccessible ncenv.amap m ad e.Value then @@ -3036,7 +3038,6 @@ let rec ResolvePatternLongIdentInModuleOrNamespace (ncenv: NameResolver) nenv nu for kv in mty.ModulesAndNamespacesByDemangledName do if IsEntityAccessible ncenv.amap m ad (modref.NestedTyconRef kv.Value) then addToBuffer kv.Value.DisplayName - addToBuffer kv.Value.DemangledModuleOrNamespaceName for e in nenv.TyconsByDemangledNameAndArity FullyQualifiedFlag.OpenQualified do if IsEntityAccessible ncenv.amap m ad e.Value then @@ -3195,7 +3196,6 @@ let SuggestTypeLongIdentInModuleOrNamespace depth (modref: ModuleOrNamespaceRef) for e in modref.ModuleOrNamespaceType.AllEntities do if IsEntityAccessible amap m ad (modref.NestedTyconRef e) then addToBuffer e.DisplayName - addToBuffer e.DemangledModuleOrNamespaceName let errorTextF s = FSComp.SR.undefinedNameTypeIn(s, fullDisplayTextOfModRef modref) UndefinedName(depth, errorTextF, id, suggestPossibleTypes) @@ -3223,7 +3223,6 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace sink nenv (ncenv: NameRe for kv in modref.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName do if IsEntityAccessible ncenv.amap m ad (modref.NestedTyconRef kv.Value) then addToBuffer kv.Value.DisplayName - addToBuffer kv.Value.DemangledModuleOrNamespaceName raze (UndefinedName(depth, FSComp.SR.undefinedNameNamespaceOrModule, id, suggestPossibleModules)) @@ -3278,7 +3277,6 @@ let rec ResolveTypeLongIdentPrim sink (ncenv: NameResolver) occurence first full for kv in nenv.TyconsByDemangledNameAndArity fullyQualified do if IsEntityAccessible ncenv.amap m ad kv.Value then addToBuffer kv.Value.DisplayName - addToBuffer kv.Value.DemangledModuleOrNamespaceName match occurence with | ItemOccurence.UseInAttribute -> if kv.Value.DisplayName.EndsWithOrdinal("Attribute") then @@ -3456,7 +3454,7 @@ let SuggestLabelsOfRelatedRecords g (nenv: NameResolutionEnv) (id: Ident) (allFi for e in nenv.eTyconsByDemangledNameAndArity do let hasRequireQualifiedAccessAttribute = HasFSharpAttribute g g.attrib_RequireQualifiedAccessAttribute e.Value.Attribs if hasRequireQualifiedAccessAttribute then - if e.Value.IsRecordTycon && e.Value.AllFieldsArray |> Seq.exists (fun x -> x.Name = id.idText) then + if e.Value.IsRecordTycon && e.Value.AllFieldsArray |> Seq.exists (fun x -> x.LogicalName = id.idText) then addToBuffer (e.Value.DisplayName + "." + id.idText) UndefinedName(0, FSComp.SR.undefinedNameRecordLabel, id, suggestLabels) @@ -4057,7 +4055,7 @@ let rec ResolvePartialLongIdentInType (ncenv: NameResolver) nenv isApplicableMet let rfinfos = ncenv.InfoReader.GetRecordOrClassFieldsOfType(None, ad, m, ty) - |> List.filter (fun fref -> fref.Name = id && IsRecdFieldAccessible ncenv.amap m ad fref.RecdFieldRef && fref.RecdField.IsStatic = statics) + |> List.filter (fun fref -> fref.LogicalName = id && IsRecdFieldAccessible ncenv.amap m ad fref.RecdFieldRef && fref.RecdField.IsStatic = statics) let nestedTypes = ty @@ -4746,7 +4744,7 @@ let rec ResolvePartialLongIdentInTypeForItem (ncenv: NameResolver) nenv m ad sta let rfinfos = ncenv.InfoReader.GetRecordOrClassFieldsOfType(None, ad, m, ty) - |> List.filter (fun fref -> fref.Name = id && IsRecdFieldAccessible ncenv.amap m ad fref.RecdFieldRef && fref.RecdField.IsStatic = statics) + |> List.filter (fun fref -> fref.LogicalName = id && IsRecdFieldAccessible ncenv.amap m ad fref.RecdFieldRef && fref.RecdField.IsStatic = statics) let nestedTypes = ty |> GetNestedTypesOfType (ad, ncenv, Some id, TypeNameResolutionStaticArgsInfo.Indefinite, false, m) diff --git a/src/fsharp/NameResolution.fsi b/src/fsharp/NameResolution.fsi index 98757f1a47f..ec2f3186af0 100755 --- a/src/fsharp/NameResolution.fsi +++ b/src/fsharp/NameResolution.fsi @@ -128,9 +128,15 @@ type Item = /// Represents the potential resolution of an unqualified name to a type. | UnqualifiedType of TyconRef list - member DisplayName: string + /// The text for the item to use in the declaration list. + /// This does not include backticks, parens etc. + /// + /// Note: here "Core" means "without added backticks or parens" + member DisplayNameCore: string - member DeclarationListText: string + /// The full text for the item to show in error messages and to use in code. + /// This includes backticks, parens etc. + member DisplayName: string [] /// Pairs an Item with a TyparInst showing how generic type variables of the item are instantiated at diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 0455c145d74..fe1ab73313b 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -54,6 +54,8 @@ module internal PrintUtilities = let comment str = wordL (tagText (sprintf "(* %s *)" str)) + let isDiscard (name: string) = name.StartsWith("_") + let ensureFloat (s: string) = if String.forall (fun c -> Char.IsDigit c || c = '-') s then s + ".0" @@ -418,7 +420,7 @@ module private PrintIL = | Some s -> WordL.equals ^^ wordL s let layoutILEnumCase nm litVal = - let nameL = ConvertDisplayNameToDisplayLayout (tagEnum >> wordL) nm + let nameL = ConvertNameToDisplayLayout (tagEnum >> wordL) nm WordL.bar ^^ nameL ^^ layoutILFieldInit litVal module private PrintTypes = @@ -751,7 +753,7 @@ module private PrintTypes = (layoutTyparRefWithInfo denv env tp)) |> longConstraintPrefix] and private layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = - let nameL = ConvertValCoreNameToDisplayLayout false (tagMember >> wordL) nm + let nameL = ConvertValNameToDisplayLayout false (tagMember >> wordL) nm if denv.shortConstraints then WordL.keywordMember ^^ nameL else @@ -890,7 +892,7 @@ module private PrintTypes = match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy g ty with // Layout an optional argument | Some id, true, _, ValueSome ty -> - let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> rightL) id.idText + let idL = ConvertValNameToDisplayLayout false (tagParameter >> rightL) id.idText LeftL.questionMark ^^ (idL |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty @@ -901,7 +903,7 @@ module private PrintTypes = // Layout a named argument | Some id, _, isParamArray, _ -> - let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> wordL) id.idText + let idL = ConvertValNameToDisplayLayout false (tagParameter >> wordL) id.idText let prefix = if isParamArray then layoutBuiltinAttribute denv g.attrib_ParamArrayAttribute ^^ idL @@ -1019,7 +1021,7 @@ module private PrintTypes = let prettyLayoutOfMemberSig denv (memberToParentInst, nm, methTypars, argInfos, retTy) = let _, niceMethodTypars, tauL = prettyLayoutOfMemberSigCore denv memberToParentInst (emptyTyparInst, methTypars, argInfos, retTy) - let nameL = ConvertValCoreNameToDisplayLayout false (tagMember >> wordL) nm + let nameL = ConvertValNameToDisplayLayout false (tagMember >> wordL) nm let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars @@ -1106,7 +1108,7 @@ module private PrintTastMemberOrVals = info.Name <- None let mkNameL niceMethodTypars tagFunction name = - let nameL = ConvertValCoreNameToDisplayLayout v.IsBaseVal (tagFunction >> mkNav v.DefinitionRange >> wordL) name + let nameL = ConvertValNameToDisplayLayout v.IsBaseVal (tagFunction >> mkNav v.DefinitionRange >> wordL) name let nameL = if denv.showMemberContainers then layoutTyconRefUse denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL @@ -1123,7 +1125,7 @@ module private PrintTastMemberOrVals = let resL = if short then tauL else - let nameL = mkNameL niceMethodTypars tagMember v.CoreDisplayName + let nameL = mkNameL niceMethodTypars tagMember v.DisplayNameCoreMangled let nameL = if short then nameL else mkInlineL denv v.Deref nameL stat --- ((nameL |> addColonL) ^^ tauL) prettyTyparInst, resL @@ -1145,7 +1147,7 @@ module private PrintTastMemberOrVals = if isNil argInfos then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertyGetter(), v.Id.idRange)) - let nameL = mkNameL [] tagProperty v.CoreDisplayName + let nameL = mkNameL [] tagProperty v.DisplayNameCoreMangled let resL = if short then nameL --- (WordL.keywordWith ^^ WordL.keywordGet) else stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordGet) @@ -1161,7 +1163,7 @@ module private PrintTastMemberOrVals = if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet) else - let nameL = mkNameL niceMethodTypars tagProperty v.CoreDisplayName + let nameL = mkNameL niceMethodTypars tagProperty v.DisplayNameCoreMangled stat --- ((nameL |> addColonL) ^^ (if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet))) prettyTyparInst, resL @@ -1169,7 +1171,7 @@ module private PrintTastMemberOrVals = if argInfos.Length <> 1 || isNil argInfos.Head then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertySetter(), v.Id.idRange)) - let nameL = mkNameL [] tagProperty v.CoreDisplayName + let nameL = mkNameL [] tagProperty v.DisplayNameCoreMangled let resL = stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordSet) emptyTyparInst, resL else @@ -1179,7 +1181,7 @@ module private PrintTastMemberOrVals = if short then (tauL --- (WordL.keywordWith ^^ WordL.keywordSet)) else - let nameL = mkNameL niceMethodTypars tagProperty v.CoreDisplayName + let nameL = mkNameL niceMethodTypars tagProperty v.DisplayNameCoreMangled stat --- ((nameL |> addColonL) ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) prettyTyparInst, resL @@ -1218,15 +1220,14 @@ module private PrintTastMemberOrVals = let cxs = env.postfixConstraints let argInfos, rty = GetTopTauTypeInFSharpForm denv.g (arityOfVal v).ArgInfos tau v.Range let nameL = - let isDiscard (str: string) = str.StartsWith("_") let tagF = - if isForallFunctionTy denv.g v.Type && not (isDiscard v.DisplayName) then + if isForallFunctionTy denv.g v.Type && not (isDiscard v.DisplayNameCore) then if IsOperatorDisplayName v.DisplayName then tagOperator else tagFunction - elif not v.IsCompiledAsTopLevel && not(isDiscard v.DisplayName) then + elif not v.IsCompiledAsTopLevel && not(isDiscard v.DisplayNameCore) then tagLocal elif v.IsModuleBinding then tagModuleBinding @@ -1319,7 +1320,7 @@ module InfoMemberPrinting = match isParamArray, nmOpt, isOptArg with // Layout an optional argument | _, Some id, true -> - let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> rightL) id.idText + let idL = ConvertValNameToDisplayLayout false (tagParameter >> rightL) id.idText let pty = match ptyOpt with ValueSome x -> x | _ -> pty LeftL.questionMark ^^ (idL |> addColonL) ^^ @@ -1331,14 +1332,14 @@ module InfoMemberPrinting = // Layout a named ParamArray argument | true, Some id, _ -> - let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> wordL) id.idText + let idL = ConvertValNameToDisplayLayout false (tagParameter >> wordL) id.idText layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ (idL |> addColonL) ^^ PrintTypes.layoutType denv pty // Layout a named normal argument | false, Some id, _ -> - let idL = ConvertValCoreNameToDisplayLayout false (tagParameter >> wordL) id.idText + let idL = ConvertValNameToDisplayLayout false (tagParameter >> wordL) id.idText (idL |> addColonL) ^^ PrintTypes.layoutType denv pty @@ -1366,7 +1367,7 @@ module InfoMemberPrinting = if minfo.IsConstructor then WordL.keywordNew else - let idL = ConvertValCoreNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName + let idL = ConvertValNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName WordL.keywordMember ^^ PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars @@ -1412,7 +1413,7 @@ module InfoMemberPrinting = if minfo.IsConstructor then SepL.leftParen else - let idL = ConvertValCoreNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName + let idL = ConvertValNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName SepL.dot ^^ PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars ^^ SepL.leftParen @@ -1479,7 +1480,7 @@ module InfoMemberPrinting = let rty = pinfo.GetPropertyType(amap, m) let rty = if pinfo.IsIndexer then mkRefTupledTy g (pinfo.GetParamTypes(amap, m)) --> rty else rty let rty, _ = PrettyTypes.PrettifyType g rty - let nameL = ConvertValCoreNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName + let nameL = ConvertValNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let getterSetter = match pinfo.HasGetter, pinfo.HasSetter with | true, false -> @@ -1528,7 +1529,7 @@ module private TastDefinitionPrinting = aboveListL (List.map (layoutExtensionMember denv infoReader) vs) let layoutRecdField addAccess denv infoReader (enclosingTcref: TyconRef) (fld: RecdField) = - let lhs = ConvertDisplayNameToDisplayLayout (tagRecordField >> mkNav fld.DefinitionRange >> wordL) fld.Name + let lhs = ConvertNameToDisplayLayout (tagRecordField >> mkNav fld.DefinitionRange >> wordL) fld.DisplayNameCore let lhs = (if addAccess then layoutAccessibility denv fld.Accessibility lhs else lhs) let lhs = if fld.IsMutable then wordL (tagKeyword "mutable") --- lhs else lhs let fieldL = (lhs |> addColonL) --- layoutType denv fld.FormalType @@ -1544,11 +1545,11 @@ module private TastDefinitionPrinting = else layoutRecdField false denv infoReader enclosingTcref fld let isGeneratedUnionCaseField pos (f: RecdField) = - if pos < 0 then f.Name = "Item" - else f.Name = "Item" + string (pos + 1) + if pos < 0 then f.LogicalName = "Item" + else f.LogicalName = "Item" + string (pos + 1) let isGeneratedExceptionField pos (f: RecdField) = - f.Name = "Data" + (string pos) + f.LogicalName = "Data" + (string pos) let layoutUnionCaseFields denv infoReader isUnionCase enclosingTcref fields = match fields with @@ -1558,7 +1559,7 @@ module private TastDefinitionPrinting = sepListL WordL.star (List.mapi (layoutUnionOrExceptionField denv infoReader isGenerated enclosingTcref) fields) let layoutUnionCase denv infoReader prefixL enclosingTcref (ucase: UnionCase) = - let nmL = ConvertDisplayNameToDisplayLayout (tagUnionCase >> mkNav ucase.DefinitionRange >> wordL) ucase.Id.idText + let nmL = ConvertNameToDisplayLayout (tagUnionCase >> mkNav ucase.DefinitionRange >> wordL) ucase.Id.idText //let nmL = layoutAccessibility denv ucase.Accessibility nmL let caseL = match ucase.RecdFields with @@ -1590,7 +1591,7 @@ module private TastDefinitionPrinting = let private layoutILFieldInfo denv (infoReader: InfoReader) m (finfo: ILFieldInfo) = let staticL = if finfo.IsStatic then WordL.keywordStatic else emptyL - let nameL = ConvertDisplayNameToDisplayLayout (tagField >> wordL) finfo.FieldName + let nameL = ConvertNameToDisplayLayout (tagField >> wordL) finfo.FieldName let typL = layoutType denv (finfo.FieldType(infoReader.amap, m)) let fieldL = staticL ^^ WordL.keywordVal ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfILFieldInfo denv infoReader finfo fieldL @@ -1598,7 +1599,7 @@ module private TastDefinitionPrinting = let private layoutEventInfo denv (infoReader: InfoReader) m (einfo: EventInfo) = let amap = infoReader.amap let staticL = if einfo.IsStatic then WordL.keywordStatic else emptyL - let nameL = ConvertValCoreNameToDisplayLayout false (tagEvent >> tagNavArbValRef einfo.ArbitraryValRef >> wordL) einfo.EventName + let nameL = ConvertValNameToDisplayLayout false (tagEvent >> tagNavArbValRef einfo.ArbitraryValRef >> wordL) einfo.EventName let typL = layoutType denv (einfo.GetDelegateType(amap, m)) let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfEventInfo denv infoReader einfo overallL @@ -1617,7 +1618,7 @@ module private TastDefinitionPrinting = else WordL.keywordMember - let nameL = ConvertValCoreNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName + let nameL = ConvertValNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let typL = layoutType denv (pinfo.GetPropertyType(amap, m)) let overallL = modifierAndMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfPropInfo denv infoReader pinfo overallL @@ -1647,7 +1648,7 @@ module private TastDefinitionPrinting = else None, tagUnknownType - let nameL = ConvertDisplayNameToDisplayLayout (tagger >> mkNav tycon.DefinitionRange >> wordL) tycon.DisplayName + let nameL = ConvertNameToDisplayLayout (tagger >> mkNav tycon.DefinitionRange >> wordL) tycon.DisplayName let nameL = layoutAccessibility denv tycon.Accessibility nameL let denv = denv.AddAccessibility tycon.Accessibility @@ -1673,8 +1674,6 @@ module private TastDefinitionPrinting = (denv.showObsoleteMembers || not (CheckFSharpAttributesForObsolete denv.g vr.Attribs)) && (denv.showHiddenMembers || not (CheckFSharpAttributesForHidden denv.g vr.Attribs)) - let isDiscard (name: string) = name.StartsWith("_") - let ctors = GetIntrinsicConstructorInfosOfType infoReader m ty |> List.filter (fun v -> IsMethInfoAccessible amap m ad v && not v.IsClassConstructor && shouldShow v.ArbitraryValRef) @@ -1761,7 +1760,7 @@ module private TastDefinitionPrinting = [] else tycon.TrueFieldsAsList - |> List.filter (fun f -> IsAccessible ad f.Accessibility && f.IsStatic && not (isDiscard f.Name)) + |> List.filter (fun f -> IsAccessible ad f.Accessibility && f.IsStatic && not (isDiscard f.DisplayNameCore)) |> List.map (fun f -> WordL.keywordStatic ^^ WordL.keywordVal ^^ layoutRecdField true denv infoReader tcref f) let instanceValsLs = @@ -1769,7 +1768,7 @@ module private TastDefinitionPrinting = [] else tycon.TrueInstanceFieldsAsList - |> List.filter (fun f -> IsAccessible ad f.Accessibility && not (isDiscard f.Name)) + |> List.filter (fun f -> IsAccessible ad f.Accessibility && not (isDiscard f.DisplayNameCore)) |> List.map (fun f -> WordL.keywordVal ^^ layoutRecdField true denv infoReader tcref f) let propLs = @@ -1899,7 +1898,7 @@ module private TastDefinitionPrinting = | None -> emptyL | Some c -> WordL.bar ^^ - wordL (tagField f.Name) ^^ + wordL (tagField f.DisplayName) ^^ WordL.equals ^^ layoutConst denv.g ty c) |> aboveListL @@ -1960,7 +1959,7 @@ module private TastDefinitionPrinting = // Layout: exception definition let layoutExnDefn denv infoReader (exncref: EntityRef) = let exnc = exncref.Deref - let nameL = ConvertDisplayNameToDisplayLayout (tagClass >> mkNav exncref.DefinitionRange >> wordL) exnc.DisplayName + let nameL = ConvertNameToDisplayLayout (tagClass >> mkNav exncref.DefinitionRange >> wordL) exnc.DisplayName let nameL = layoutAccessibility denv exnc.TypeReprAccessibility nameL let exnL = wordL (tagKeyword "exception") ^^ nameL // need to tack on the Exception at the right of the name for goto definition let reprL = @@ -1992,7 +1991,7 @@ module private TastDefinitionPrinting = if mspec.IsNamespace then match mspec.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions |> List.tryHead with | Some next when next.IsNamespace -> - fullPath next (acc @ [next.DemangledModuleOrNamespaceName]) + fullPath next (acc @ [next.DisplayNameCore]) | _ -> acc, mspec else @@ -2000,7 +1999,7 @@ module private TastDefinitionPrinting = let outerPath = mspec.CompilationPath.AccessPath - let path, mspec = fullPath mspec [mspec.DemangledModuleOrNamespaceName] + let path, mspec = fullPath mspec [mspec.DisplayNameCore] let denv = let outerPath = outerPath |> List.map fst @@ -2009,19 +2008,19 @@ module private TastDefinitionPrinting = let headerL = if mspec.IsNamespace then // This is a container namespace. We print the header when we get to the first concrete module. - let pathL = path |> List.map (ConvertDisplayNameToDisplayLayout (tagNamespace >> wordL)) + let pathL = path |> List.map (ConvertNameToDisplayLayout (tagNamespace >> wordL)) wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL else // This is a module let name = path |> List.last - let nameL = ConvertDisplayNameToDisplayLayout (tagModule >> mkNav mspec.DefinitionRange >> wordL) name + let nameL = ConvertNameToDisplayLayout (tagModule >> mkNav mspec.DefinitionRange >> wordL) name let nameL = match path with | [_] -> nameL | _ -> let innerPath = path.[..path.Length - 2] - let innerPathL = innerPath |> List.map (ConvertDisplayNameToDisplayLayout (tagNamespace >> wordL)) + let innerPathL = innerPath |> List.map (ConvertNameToDisplayLayout (tagNamespace >> wordL)) sepListL SepL.dot innerPathL ^^ SepL.dot ^^ nameL let modNameL = wordL (tagKeyword "module") ^^ nameL @@ -2162,7 +2161,6 @@ module private InferredSigPrinting = | TMAbstract mexpr -> imexprLP denv mexpr and imbindL denv (mspec, def) = - let nm = mspec.DemangledModuleOrNamespaceName let innerPath = (fullCompPathOfModuleOrNamespace mspec).AccessPath let outerPath = mspec.CompilationPath.AccessPath @@ -2172,7 +2170,7 @@ module private InferredSigPrinting = let basicL = // Check if this namespace contains anything interesting if isConcreteNamespace def then - let pathL = innerPath |> List.map (fst >> ConvertDisplayNameToDisplayLayout (tagNamespace >> wordL)) + let pathL = innerPath |> List.map (fst >> ConvertNameToDisplayLayout (tagNamespace >> wordL)) // This is a container namespace. We print the header when we get to the first concrete module. let headerL = wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL @@ -2186,7 +2184,7 @@ module private InferredSigPrinting = basicL else // This is a module - let nmL = ConvertDisplayNameToDisplayLayout (tagModule >> mkNav mspec.DefinitionRange >> wordL) nm + let nmL = ConvertNameToDisplayLayout (tagModule >> mkNav mspec.DefinitionRange >> wordL) mspec.DisplayNameCore let nmL = layoutAccessibility denv mspec.Accessibility nmL let denv = denv.AddAccessibility mspec.Accessibility let basic = imdefL denv def diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs index 7db94437827..ad226c2b510 100644 --- a/src/fsharp/PostInferenceChecks.fs +++ b/src/fsharp/PostInferenceChecks.fs @@ -2095,7 +2095,8 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = if tcref.UnionCasesArray.Length = 1 && hasNoArgs then let ucase1 = tcref.UnionCasesArray.[0] for f in ucase1.RecdFieldsArray do - if f.Name = nm then error(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.typeInfoGeneratedProperty(), f.Name, ucase1.Range)) + if f.LogicalName = nm then + error(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.typeInfoGeneratedProperty(), f.LogicalName, ucase1.Range)) // Default augmentation contains the nasty 'Case' etc. let prefix = "New" @@ -2112,10 +2113,10 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = | None -> () match tcref.GetFieldByName nm with - | Some rf -> error(NameClash(nm, kind, v.DisplayName, v.Range, "field", rf.Name, rf.Range)) + | Some rf -> error(NameClash(nm, kind, v.DisplayName, v.Range, "field", rf.LogicalName, rf.Range)) | None -> () - check false v.CoreDisplayName + check false v.DisplayNameCoreMangled check false v.DisplayName check false (v.CompiledName cenv.g.CompilerGlobalState) @@ -2162,7 +2163,7 @@ let CheckRecdField isUnion cenv env (tycon: Tycon) (rfield: RecdField) = IsHiddenTyconRepr env.sigToImplRemapInfo tycon || (not isUnion && IsHiddenRecdField env.sigToImplRemapInfo (tcref.MakeNestedRecdFieldRef rfield)) let access = AdjustAccess isHidden (fun () -> tycon.CompilationPath) rfield.Accessibility - CheckTypeForAccess cenv env (fun () -> rfield.Name) access m fieldTy + CheckTypeForAccess cenv env (fun () -> rfield.LogicalName) access m fieldTy if TyconRefHasAttribute g m g.attrib_IsByRefLikeAttribute tcref then // Permit Span fields in IsByRefLike types diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index 6f5ef2ddc5f..1c22eebdd5d 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -475,13 +475,10 @@ let NormalizeIdentifierBackticks (name: string) : string = else name AddBackticksToIdentifierIfNeeded s -let ConvertValCoreNameToDeclarationListText name = - if IsMangledOpName name then - DecompileOpName name - else - name - -let ConvertValCoreNameToDisplayName isBaseVal name = +let ConvertNameToDisplayName name = + AddBackticksToIdentifierIfNeeded name + +let ConvertValNameToDisplayName isBaseVal name = if isBaseVal && name = "base" then "base" elif IsUnencodedOpName name || IsMangledOpName name || IsActivePatternName name then @@ -494,28 +491,28 @@ let ConvertValCoreNameToDisplayName isBaseVal name = else "(" + nm + ")" else - AddBackticksToIdentifierIfNeeded name + ConvertNameToDisplayName name -let ConvertDisplayNameToDisplayLayout nonOpLayout name = +let ConvertNameToDisplayLayout nonOpLayout name = if DoesIdentifierNeedBackticks name then leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator name) ^^ rightL (TaggedText.tagPunctuation "``") else nonOpLayout name -let ConvertValCoreNameToDisplayLayout isBaseVal nonOpLayout name = +let ConvertValNameToDisplayLayout isBaseVal nonOpLayout name = if isBaseVal && name = "base" then nonOpLayout "base" elif IsUnencodedOpName name || IsMangledOpName name || IsActivePatternName name then let nm = DecompileOpName name // Check for no decompilation, e.g. op_Implicit, op_NotAMangledOpName, op_A-B if IsMangledOpName name && (nm = name) then - ConvertDisplayNameToDisplayLayout nonOpLayout name + ConvertNameToDisplayLayout nonOpLayout name elif nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*" then wordL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ wordL (TaggedText.tagPunctuation ")") else leftL (TaggedText.tagPunctuation "(") ^^ wordL (TaggedText.tagOperator nm) ^^ rightL (TaggedText.tagPunctuation ")") else - ConvertDisplayNameToDisplayLayout nonOpLayout name + ConvertNameToDisplayLayout nonOpLayout name let opNameCons = CompileOpName "::" diff --git a/src/fsharp/PrettyNaming.fsi b/src/fsharp/PrettyNaming.fsi index 25ab83533a9..53479e93468 100644 --- a/src/fsharp/PrettyNaming.fsi +++ b/src/fsharp/PrettyNaming.fsi @@ -90,20 +90,14 @@ val CompileOpName: string -> string /// Used on names of all kinds val DecompileOpName: string -> string -/// Take a core display name (e.g. op_Addition or PropertyName) and convert it to text used in a declaration list +/// Take a core display name (e.g. "List" or "Strange module name") and convert it to display text +/// by adding backticks if necessary. /// Foo --> Foo -/// + --> + -/// op_Addition --> + -/// op_Multiply --> * -/// op_DereferencePercent --> !% -/// A-B --> A-B -/// |A|_| --> |A|_| -/// base --> base -/// or --> or -/// mod --> mod -val internal ConvertValCoreNameToDeclarationListText: name: string -> string +/// + --> ``+`` +/// A-B --> ``A-B`` +val internal ConvertNameToDisplayName: name: string -> string -/// Take a core display name (e.g. op_Addition or PropertyName) and convert it to display text +/// Take a core display name for a value (e.g. op_Addition or PropertyName) and convert it to display text /// Foo --> Foo /// + --> ``+`` /// op_Addition --> (+) @@ -114,13 +108,13 @@ val internal ConvertValCoreNameToDeclarationListText: name: string -> string /// base --> base /// or --> or /// mod --> mod -val internal ConvertValCoreNameToDisplayName: isBaseVal: bool -> name: string -> string +val internal ConvertValNameToDisplayName: isBaseVal: bool -> name: string -> string -/// Like ConvertValCoreNameToDisplayName but produces a tagged layout -val internal ConvertValCoreNameToDisplayLayout: isBaseVal: bool -> nonOpLayout: (string -> Layout) -> name: string -> Layout +/// Like ConvertNameToDisplayName but produces a tagged layout +val internal ConvertNameToDisplayLayout: nonOpLayout: (string -> Layout) -> name: string -> Layout -/// Used for type names, module names etc. -val internal ConvertDisplayNameToDisplayLayout: nonOpLayout: (string -> Layout) -> name: string -> Layout +/// Like ConvertValNameToDisplayName but produces a tagged layout +val internal ConvertValNameToDisplayLayout: isBaseVal: bool -> nonOpLayout: (string -> Layout) -> name: string -> Layout val internal opNameCons: string diff --git a/src/fsharp/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs index 26b3b207461..c383eac6f74 100644 --- a/src/fsharp/QuotationTranslator.fs +++ b/src/fsharp/QuotationTranslator.fs @@ -618,7 +618,7 @@ and private ConvExprCore cenv (env : QuotationTranslationEnv) (expr: Expr) : QP. let propRetTypeR = ConvType cenv env m fspec.FormalType let callArgR = ConvExpr cenv env obj let exnTypeR = ConvType cenv env m (generalizedTyconRef tcref) - QP.mkPropGet( (parentTyconR, fspec.Name, propRetTypeR, []), [], [QP.mkCoerce (exnTypeR, callArgR)]) + QP.mkPropGet( (parentTyconR, fspec.LogicalName, propRetTypeR, []), [], [QP.mkCoerce (exnTypeR, callArgR)]) | TOp.Coerce, [tgtTy;srcTy], [x] -> let xR = ConvExpr cenv env x diff --git a/src/fsharp/SignatureConformance.fs b/src/fsharp/SignatureConformance.fs index c1cc93f2fdf..ab6d5bcced8 100644 --- a/src/fsharp/SignatureConformance.fs +++ b/src/fsharp/SignatureConformance.fs @@ -418,8 +418,8 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = and checkRecordFields m aenv infoReader (implTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList - let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) - let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) + let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) + let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) NameMap.suball2 (fun fieldName _ -> errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, fieldName), m)); false) (checkField aenv infoReader implTycon) m1 m2 && @@ -436,8 +436,8 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = and checkRecordFieldsForExn _g _denv err aenv (infoReader: InfoReader) (enclosingTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList - let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) - let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) + let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) + let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInSigButNotImpl(s, x, y))); false) (checkField aenv infoReader enclosingTycon) m1 m2 && NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInImplButNotSig(s, x, y))); false) (fun x y -> checkField aenv infoReader enclosingTycon y x) m2 m1 && // This check is required because constructors etc. are externally visible @@ -462,8 +462,8 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = and checkClassFields isStruct m aenv infoReader (implTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList - let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) - let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.Name) + let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) + let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) NameMap.suball2 (fun fieldName _ -> errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, fieldName), m)); false) (checkField aenv infoReader implTycon) m1 m2 && diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index 675076dfd74..62ed23908e3 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -652,17 +652,38 @@ type Entity = | Some optData -> optData.entity_compiled_name <- name | _ -> x.entity_opt_data <- Some { Entity.NewEmptyEntityOptData() with entity_compiled_name = name } + /// The display name of the namespace, module or type, e.g. List instead of List`1, and no static parameters. + /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. + /// + /// No backticks are added for entities with non-identifier names + member x.DisplayNameCore = x.GetDisplayName(coreName=true) + /// The display name of the namespace, module or type, e.g. List instead of List`1, and no static parameters - member x.DisplayName = x.GetDisplayName() + /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. + /// + /// Backticks are added implicitly for entities with non-identifier names + member x.DisplayName = x.GetDisplayName(coreName=false) /// The display name of the namespace, module or type with <'T, 'U, 'V> added for generic types, plus static parameters if any - member x.DisplayNameWithStaticParametersAndTypars = x.GetDisplayName(withStaticParameters=true, withTypars=true, withUnderscoreTypars=false) + /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. + /// + /// Backticks are added implicitly for entities with non-identifier names + member x.DisplayNameWithStaticParametersAndTypars = + x.GetDisplayName(coreName=false, withStaticParameters=true, withTypars=true, withUnderscoreTypars=false) /// The display name of the namespace, module or type with <_, _, _> added for generic types, plus static parameters if any - member x.DisplayNameWithStaticParametersAndUnderscoreTypars = x.GetDisplayName(withStaticParameters=true, withTypars=false, withUnderscoreTypars=true) + /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. + /// + /// Backticks are added implicitly for entities with non-identifier names + member x.DisplayNameWithStaticParametersAndUnderscoreTypars = + x.GetDisplayName(coreName=false, withStaticParameters=true, withTypars=false, withUnderscoreTypars=true) /// The display name of the namespace, module or type, e.g. List instead of List`1, including static parameters if any - member x.DisplayNameWithStaticParameters = x.GetDisplayName(withStaticParameters=true, withTypars=false, withUnderscoreTypars=false) + /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. + /// + /// Backticks are added implicitly for entities with non-identifier names + member x.DisplayNameWithStaticParameters = + x.GetDisplayName(coreName=false, withStaticParameters=true, withTypars=false, withUnderscoreTypars=false) #if !NO_EXTENSIONTYPING member x.IsStaticInstantiationTycon = @@ -671,17 +692,19 @@ type Entity = args.Length > 0 #endif - member x.GetDisplayName(?withStaticParameters, ?withTypars, ?withUnderscoreTypars) = + member x.GetDisplayName(coreName, ?withStaticParameters, ?withTypars, ?withUnderscoreTypars) = let withStaticParameters = defaultArg withStaticParameters false let withTypars = defaultArg withTypars false let withUnderscoreTypars = defaultArg withUnderscoreTypars false let nm = x.LogicalName + if x.IsModuleOrNamespace then x.DemangledModuleOrNamespaceName else let getName () = match x.TyparsNoRange with | [] -> nm | tps -> let nm = DemangleGenericTypeName nm + let nm = if coreName then nm else ConvertNameToDisplayName nm if (withUnderscoreTypars || withTypars) && not (List.isEmpty tps) then let typearNames = tps |> List.map (fun typar -> if withUnderscoreTypars then "_" else typar.Name) nm + "<" + String.concat "," typearNames + ">" @@ -1656,13 +1679,29 @@ type UnionCase = | Some (m, false) -> m | _ -> uc.Range + /// Get the logical name of the union case + member uc.LogicalName = uc.Id.idText + + /// Get the core of the display name of the union case + /// + /// Backticks and parens are not added for non-identifiers. + /// + /// Note logical names op_Nil and op_ConsCons become [] and :: respectively. + member uc.DisplayNameCore = uc.LogicalName |> DecompileOpName + /// Get the display name of the union case - member uc.DisplayName = uc.Id.idText + /// + /// Backticks and parens are added for non-identifiers. + /// + /// Note logical names op_Nil and op_ConsCons become ([]) and (::) respectively. + member uc.DisplayName = uc.DisplayNameCore |> ConvertValNameToDisplayName false /// Get the name of the case in generated IL code. + /// Note logical names `op_Nil` and `op_ConsCons` become `Empty` and `Cons` respectively. + /// This is because this is how ILX union code gen expects to see them. member uc.CompiledName = let idText = uc.Id.idText - if idText = opNameCons then "Cons" + if idText = opNameCons then "Cons" elif idText = opNameNil then "Empty" else idText @@ -1684,7 +1723,7 @@ type UnionCase = [] member x.DebugText = x.ToString() - override x.ToString() = "UnionCase(" + x.DisplayName + ")" + override x.ToString() = "UnionCase(" + x.LogicalName + ")" /// Represents a class, struct or record field in an F# type definition. /// This may represent a "field" in either a struct, class, record or union. @@ -1764,7 +1803,13 @@ type RecdField = member v.Id = v.rfield_id /// Name of the field - member v.Name = v.rfield_id.idText + member v.LogicalName = v.rfield_id.idText + + /// Name of the field. For fields this is the same as the logical name. + member v.DisplayNameCore = v.LogicalName + + /// Name of the field + member v.DisplayName = v.DisplayNameCore |> ConvertNameToDisplayName /// Indicates a compiler generated field, not visible to Intellisense or name resolution member v.IsCompilerGenerated = v.rfield_secret @@ -1806,7 +1851,7 @@ type RecdField = [] member x.DebugText = x.ToString() - override x.ToString() = x.Name + override x.ToString() = x.LogicalName /// Represents the implementation of an F# exception definition. [] @@ -2884,18 +2929,22 @@ type Val = /// The name of the property. /// - If this is a property then this is 'Foo' - /// - If this is an implementation of an abstract slot then this is the name of the property implemented by the abstract slot member x.PropertyName = let logicalName = x.LogicalName ChopPropertyName logicalName - /// The name of the method. + /// The display name of the value or method but without operator names decompiled and without backticks etc. + /// This is very close to LogicalName except that properties have get_ removed. + /// + /// Note: here "Core" means "without added backticks or parens" + /// Note: here "Mangled" means "op_Addition" + /// /// - If this is a property --> Foo /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot /// - If this is an active pattern --> |A|_| /// - If this is an operator --> op_Addition /// - If this is an identifier needing backticks --> A-B - member x.CoreDisplayName = + member x.DisplayNameCoreMangled = match x.MemberInfo with | Some membInfo -> match membInfo.MemberFlags.MemberKind with @@ -2907,6 +2956,15 @@ type Val = | SynMemberKind.PropertyGet -> x.PropertyName | None -> x.LogicalName + /// The display name of the value or method with operator names decompiled but without backticks etc. + /// + /// Note: here "Core" means "without added backticks or parens" + member x.DisplayNameCore = + x.DisplayNameCoreMangled |> DecompileOpName + + /// The full text for the value to show in error messages and to use in code. + /// This includes backticks, parens etc. + /// /// - If this is a property --> Foo /// - If this is an implementation of an abstract slot then this is the name of the method implemented by the abstract slot /// - If this is an active pattern --> (|A|_|) @@ -2915,7 +2973,7 @@ type Val = /// - If this is a base value --> base /// - If this is a value named ``base`` --> ``base`` member x.DisplayName = - ConvertValCoreNameToDisplayName x.IsBaseVal x.CoreDisplayName + ConvertValNameToDisplayName x.IsBaseVal x.DisplayNameCoreMangled member x.SetValRec b = x.val_flags <- x.val_flags.WithRecursiveValInfo b @@ -3318,15 +3376,28 @@ type EntityRef = member x.CompiledName = x.Deref.CompiledName /// The display name of the namespace, module or type, e.g. List instead of List`1, not including static parameters + /// + /// No backticks are added for entities with non-identifier names + member x.DisplayNameCore = x.Deref.DisplayNameCore + + /// The display name of the namespace, module or type, e.g. List instead of List`1, not including static parameters + /// + /// Backticks are added implicitly for entities with non-identifier names member x.DisplayName = x.Deref.DisplayName /// The display name of the namespace, module or type with <'T, 'U, 'V> added for generic types, including static parameters + /// + /// Backticks are added implicitly for entities with non-identifier names member x.DisplayNameWithStaticParametersAndTypars = x.Deref.DisplayNameWithStaticParametersAndTypars /// The display name of the namespace, module or type with <_, _, _> added for generic types, including static parameters + /// + /// Backticks are added implicitly for entities with non-identifier names member x.DisplayNameWithStaticParametersAndUnderscoreTypars = x.Deref.DisplayNameWithStaticParametersAndUnderscoreTypars /// The display name of the namespace, module or type, e.g. List instead of List`1, including static parameters + /// + /// Backticks are added implicitly for entities with non-identifier names member x.DisplayNameWithStaticParameters = x.Deref.DisplayNameWithStaticParameters /// The code location where the module, namespace or type is defined. @@ -3595,7 +3666,7 @@ type EntityRef = member x.AllFieldAsRefList = x.AllFieldsAsList |> List.map x.MakeNestedRecdFieldRef - member x.MakeNestedRecdFieldRef (rf: RecdField) = RecdFieldRef (x, rf.Name) + member x.MakeNestedRecdFieldRef (rf: RecdField) = RecdFieldRef (x, rf.LogicalName) member x.MakeNestedUnionCaseRef (uc: UnionCase) = UnionCaseRef (x, uc.Id.idText) @@ -3673,9 +3744,11 @@ type ValRef = member x.LogicalName = x.Deref.LogicalName - member x.DisplayName = x.Deref.DisplayName + member x.DisplayNameCoreMangled = x.Deref.DisplayNameCoreMangled + + member x.DisplayNameCore = x.Deref.DisplayNameCore - member x.CoreDisplayName = x.Deref.CoreDisplayName + member x.DisplayName = x.Deref.DisplayName member x.Range = x.Deref.Range @@ -3887,7 +3960,7 @@ type UnionCaseRef = member x.Index = try // REVIEW: this could be faster, e.g. by storing the index in the NameMap - x.TyconRef.UnionCasesArray |> Array.findIndex (fun ucspec -> ucspec.DisplayName = x.CaseName) + x.TyconRef.UnionCasesArray |> Array.findIndex (fun uc -> uc.LogicalName = x.CaseName) with :? KeyNotFoundException -> error(InternalError(sprintf "union case %s not found in type %s" x.CaseName x.TyconRef.LogicalName, x.TyconRef.Range)) @@ -3913,9 +3986,12 @@ type RecdFieldRef = /// Get a reference to the type containing this union case member x.TyconRef = let (RecdFieldRef(tcref, _)) = x in tcref - /// Get the name off the field + /// Get the name of the field member x.FieldName = let (RecdFieldRef(_, id)) = x in id + /// Get the name of the field, with backticks added for non-identifier names + member x.DisplayName = x.FieldName |> ConvertNameToDisplayName + /// Get the Entity for the type containing this union case member x.Tycon = x.TyconRef.Deref @@ -3947,7 +4023,7 @@ type RecdFieldRef = let (RecdFieldRef(tcref, id)) = x try // REVIEW: this could be faster, e.g. by storing the index in the NameMap - tcref.AllFieldsArray |> Array.findIndex (fun rfspec -> rfspec.Name = id) + tcref.AllFieldsArray |> Array.findIndex (fun rfspec -> rfspec.LogicalName = id) with :? KeyNotFoundException -> error(InternalError(sprintf "field %s not found in type %s" id tcref.LogicalName, tcref.Range)) @@ -5599,13 +5675,13 @@ type Construct() = /// Create the field tables for a record or class type static member MakeRecdFieldsTable ucs: TyconRecdFields = { FieldsByIndex = Array.ofList ucs - FieldsByName = ucs |> NameMap.ofKeyedList (fun rfld -> rfld.Name) } + FieldsByName = ucs |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) } /// Create the union case tables for a union type static member MakeUnionCases ucs: TyconUnionData = { CasesTable = { CasesByIndex = Array.ofList ucs - CasesByName = NameMap.ofKeyedList (fun uc -> uc.DisplayName) ucs } + CasesByName = NameMap.ofKeyedList (fun uc -> uc.LogicalName) ucs } CompiledRepresentation=newCache() } /// Create a node for a union type diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index 4b1e132bc7e..c229a02aa1a 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -3826,7 +3826,7 @@ module DebugPrint = let layoutUnionCaseArgTypes argtys = sepListL (wordL(tagText "*")) (List.map typeL argtys) let ucaseL prefixL (ucase: UnionCase) = - let nmL = wordL (tagText (ConvertValCoreNameToDisplayName false ucase.Id.idText)) + let nmL = wordL (tagText (ConvertValNameToDisplayName false ucase.Id.idText)) match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL(tagText "of")) --- layoutUnionCaseArgTypes argtys @@ -3836,7 +3836,7 @@ module DebugPrint = List.map (ucaseL prefixL) ucases let layoutRecdField (fld: RecdField) = - let lhs = wordL (tagText fld.Name) + let lhs = wordL (tagText fld.LogicalName) let lhs = if fld.IsMutable then wordL(tagText "mutable") --- lhs else lhs (lhs ^^ rightL(tagText ":")) --- typeL fld.FormalType @@ -4233,7 +4233,7 @@ let accEntityRemap (msigty: ModuleOrNamespaceType) (entity: Entity) (mrpi, mhi) // Find the fields that have been hidden or which were non-public anyway. let mhi = (entity.AllFieldsArray, mhi) ||> Array.foldBack (fun rfield mhi -> - match sigtycon.GetFieldByName(rfield.Name) with + match sigtycon.GetFieldByName(rfield.LogicalName) with | Some _ -> // The field is in the signature. Hence it is not hidden. mhi @@ -4244,7 +4244,7 @@ let accEntityRemap (msigty: ModuleOrNamespaceType) (entity: Entity) (mrpi, mhi) let mhi = (entity.UnionCasesAsList, mhi) ||> List.foldBack (fun ucase mhi -> - match sigtycon.GetUnionCaseByName ucase.DisplayName with + match sigtycon.GetUnionCaseByName ucase.LogicalName with | Some _ -> // The constructor is in the signature. Hence it is not hidden. mhi @@ -8650,12 +8650,12 @@ let GetMemberCallInfo g (vref: ValRef, vFlags) = //--------------------------------------------------------------------------- let TryGetActivePatternInfo (vref: ValRef) = - // First is an optimization to prevent calls to CoreDisplayName, which calls ConvertValCoreNameToDisplayName + // First is an optimization to prevent calls to DisplayNameCoreMangled, which calls ConvertValNameToDisplayName let logicalName = vref.LogicalName if logicalName.Length = 0 || logicalName.[0] <> '|' then None else - ActivePatternInfoOfValName vref.CoreDisplayName vref.Range + ActivePatternInfoOfValName vref.DisplayNameCoreMangled vref.Range type ActivePatternElemRef with member x.Name = diff --git a/src/fsharp/TypedTreePickle.fs b/src/fsharp/TypedTreePickle.fs index f8072693a8e..d8f9b0342b6 100644 --- a/src/fsharp/TypedTreePickle.fs +++ b/src/fsharp/TypedTreePickle.fs @@ -1857,6 +1857,8 @@ and p_attribs_ext f x st = p_list_ext f p_attrib x st and p_unioncase_spec x st = p_rfield_table x.FieldTable st p_ty x.ReturnType st + // The union case compiled name is now computed from Id field when needed and is not stored in UnionCase record. + // So this field doesn't really need to be stored but it exists for legacy compat p_string x.CompiledName st p_ident x.Id st // The XmlDoc are only written for the extended in-memory format. We encode their presence using a marker bit here diff --git a/src/fsharp/infos.fs b/src/fsharp/infos.fs index fb0b58e5272..7c7daced570 100755 --- a/src/fsharp/infos.fs +++ b/src/fsharp/infos.fs @@ -1000,7 +1000,7 @@ type MethInfo = member x.DisplayName = match x with | FSMeth(_, _, vref, _) -> vref.DisplayName - | _ -> x.LogicalName + | _ -> x.LogicalName |> PrettyNaming.ConvertNameToDisplayName /// Indicates if this is a method defined in this assembly with an internal XML comment member x.HasDirectXmlComment = @@ -1807,21 +1807,25 @@ type RecdFieldInfo = /// Get the F# metadata for the F#-declared record, class or struct type member x.Tycon = x.RecdFieldRef.Tycon - /// Get the name of the field in an F#-declared record, class or struct type - member x.Name = x.RecdField.Name + /// Get the logical name of the field in an F#-declared record, class or struct type + member x.LogicalName = x.RecdField.LogicalName + + member x.DisplayNameCore = x.RecdField.DisplayNameCore + + member x.DisplayName = x.RecdField.DisplayName /// Get the (instantiated) type of the field in an F#-declared record, class or struct type member x.FieldType = actualTyOfRecdFieldRef x.RecdFieldRef x.TypeInst /// Get the enclosing (declaring) type of the field in an F#-declared record, class or struct type member x.DeclaringType = TType_app (x.RecdFieldRef.TyconRef, x.TypeInst) - override x.ToString() = x.TyconRef.ToString() + "::" + x.Name + override x.ToString() = x.TyconRef.ToString() + "::" + x.LogicalName /// Describes an F# use of a union case [] type UnionCaseInfo = - | UnionCaseInfo of TypeInst * UnionCaseRef + | UnionCaseInfo of typeInst: TypeInst * unionCaseRef: UnionCaseRef /// Get the list of types for the instantiation of the type parameters of the declaring type of the union case member x.TypeInst = let (UnionCaseInfo(tinst, _)) = x in tinst @@ -1838,13 +1842,27 @@ type UnionCaseInfo = /// Get the F# metadata for the declaring union type member x.Tycon = x.UnionCaseRef.Tycon - /// Get the name of the union case - member x.Name = x.UnionCase.DisplayName + /// Get the logical name of the union case. + member x.LogicalName = x.UnionCase.LogicalName + + /// Get the core of the display name of the union case + /// + /// Backticks and parens are not added for non-identifiers. + /// + /// Note logical names op_Nil and op_ConsCons become [] and :: respectively. + member x.DisplayNameCore = x.UnionCase.DisplayNameCore + + /// Get the display name of the union case + /// + /// Backticks and parens are added implicitly for non-identifiers. + /// + /// Note logical names op_Nil and op_ConsCons become ([]) and (::) respectively. + member x.DisplayName = x.UnionCase.DisplayName /// Get the instantiation of the type parameters of the declaring type of the union case member x.GetTyparInst m = mkTyparInst (x.TyconRef.Typars m) x.TypeInst - override x.ToString() = x.TyconRef.ToString() + "::" + x.Name + override x.ToString() = x.TyconRef.ToString() + "::" + x.DisplayNameCore /// Describes an F# use of a property backed by Abstract IL metadata [] @@ -2301,11 +2319,12 @@ type ILEventInfo = member x.TypeRef = x.ILTypeInfo.ILTypeRef /// Get the name of the event - member x.Name = x.RawMetadata.Name + member x.EventName = x.RawMetadata.Name /// Indicates if the property is static member x.IsStatic = x.AddMethod.IsStatic - override x.ToString() = x.ILTypeInfo.ToString() + "::" + x.Name + + override x.ToString() = x.ILTypeInfo.ToString() + "::" + x.EventName //------------------------------------------------------------------------- // Helpers for EventInfo @@ -2404,7 +2423,7 @@ type EventInfo = /// Get the logical name of the event. member x.EventName = match x with - | ILEvent ileinfo -> ileinfo.Name + | ILEvent ileinfo -> ileinfo.EventName | FSEvent (_, p, _, _) -> p.PropertyName #if !NO_EXTENSIONTYPING | ProvidedEvent (_, ei, m) -> ei.PUntaint((fun ei -> ei.Name), m) diff --git a/src/fsharp/infos.fsi b/src/fsharp/infos.fsi index 5b0c29f11a8..c63cef18e6f 100644 --- a/src/fsharp/infos.fsi +++ b/src/fsharp/infos.fsi @@ -657,8 +657,15 @@ type RecdFieldInfo = /// Indicate if the field is a literal field in an F#-declared record, class or struct type member LiteralValue: Const option - /// Get the name of the field in an F#-declared record, class or struct type - member Name: string + /// Get the logical name of the field in an F#-declared record, class or struct type + member LogicalName: string + + /// Get the name of the field, same as LogicalName + /// Note: no double-backticks added for non-identifiers + member DisplayNameCore: string + + /// Get the name of the field, with double-backticks added if necessary + member DisplayName: string /// Get the F# metadata for the uninstantiated field member RecdField: RecdField @@ -678,10 +685,24 @@ type RecdFieldInfo = /// Describes an F# use of a union case [] type UnionCaseInfo = - | UnionCaseInfo of TypeInst * UnionCaseRef + | UnionCaseInfo of typeInst: TypeInst * unionCaseRef: UnionCaseRef - /// Get the name of the union case - member Name: string + /// Get the logical name of the union case. + member LogicalName: string + + /// Get the core of the display name of the union case + /// + /// Backticks and parens are not added for non-identifiers. + /// + /// Note logical names op_Nil and op_ConsCons become [] and :: respectively. + member DisplayNameCore: string + + /// Get the display name of the union case + /// + /// Backticks and parens are added implicitly for non-identifiers. + /// + /// Note logical names op_Nil and op_ConsCons become ([]) and (::) respectively. + member DisplayName: string /// Get the F# metadata for the declaring union type member Tycon: Entity @@ -909,7 +930,7 @@ type ILEventInfo = member IsStatic: bool /// Get the name of the event - member Name: string + member EventName: string /// Get the raw Abstract IL metadata for the event member RawMetadata: ILEventDef diff --git a/src/fsharp/service/ItemKey.fs b/src/fsharp/service/ItemKey.fs index ebeafff9ff9..0613af95551 100644 --- a/src/fsharp/service/ItemKey.fs +++ b/src/fsharp/service/ItemKey.fs @@ -301,18 +301,17 @@ and [] ItemKeyStoreBuilder() = | Item.UnionCase(info, _) -> writeString ItemKeyTags.typeUnionCase writeEntityRef info.TyconRef - writeString info.Name + writeString info.LogicalName | Item.ActivePatternResult(info, _, _, _) -> writeString ItemKeyTags.itemActivePattern - info.ActiveTagsWithRanges - |> List.iter (fun (nm, _) -> - writeString nm) + info.ActiveTags + |> List.iter writeString | Item.ActivePatternCase elemRef -> writeString ItemKeyTags.itemActivePattern - elemRef.ActivePatternInfo.ActiveTagsWithRanges - |> List.iter (fun (nm, _) -> writeString nm) + elemRef.ActivePatternInfo.ActiveTags + |> List.iter writeString | Item.ExnCase tcref -> writeString ItemKeyTags.itemExnCase @@ -321,13 +320,13 @@ and [] ItemKeyStoreBuilder() = | Item.RecdField info -> writeString ItemKeyTags.itemRecordField writeEntityRef info.TyconRef - writeString info.Name + writeString info.LogicalName writeType false info.FieldType | Item.UnionCaseField(info, fieldIndex) -> writeString ItemKeyTags.typeUnionCase writeEntityRef info.TyconRef - writeString info.Name + writeString info.LogicalName writeInt32 fieldIndex | Item.AnonRecdField(info, tys, i, _) -> diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index 904274e2f4a..758e34b43bb 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -238,7 +238,7 @@ module DeclarationListHelpers = let layout = NicePrint.layoutTyconRef denv rfinfo.TyconRef ^^ SepL.dot ^^ - wordL (tagRecordField (DecompileOpName rfield.Name) |> mkNav rfield.DefinitionRange) ^^ + wordL (tagRecordField rfield.DisplayName |> mkNav rfield.DefinitionRange) ^^ RightL.colon ^^ NicePrint.layoutType denv ty ^^ ( @@ -492,10 +492,8 @@ module internal DescriptionListsImpl = let display = NicePrint.prettyLayoutOfType denv f.FormalType let display = toArray display MethodGroupItemParameter( - name = f.Name, + name = f.DisplayNameCore, canonicalTypeTextForSorting = printCanonicalizedTypeName g denv f.FormalType, - // Note: the instantiation of any type parameters is currently incorporated directly into the type - // rather than being returned separately. display = display, isOptional=false) @@ -505,8 +503,6 @@ module internal DescriptionListsImpl = if isGenerated i f then initial.Display else - // TODO: in this case ucinst is ignored - it gives the instantiation of the type parameters of - // the union type containing this case. let display = NicePrint.layoutOfParamData denv (ParamData(false, false, false, NotOptional, NoCallerInfo, Some f.Id, ReflectedArgInfo.None, f.FormalType)) toArray display @@ -959,7 +955,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i match items with | [item] -> match item.Item with - | Item.Value vref -> IsActivePatternName vref.CoreDisplayName + | Item.Value vref -> IsActivePatternName vref.DisplayNameCoreMangled | _ -> false | _ -> false @@ -1029,7 +1025,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i let textInDeclList = match item.Unresolved with | Some u -> u.DisplayName - | None -> item.Item.DeclarationListText + | None -> item.Item.DisplayNameCore let textInCode = match item.Unresolved with | Some u -> u.DisplayName @@ -1055,9 +1051,6 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i let item = items.Head let glyph = GlyphOfItem(denv, item.Item) - let textInDeclList = ConvertValCoreNameToDeclarationListText textInDeclList - let textInCode = textInCode - let isAttributeItem = lazy (IsAttribute infoReader item.Item) let cutAttributeSuffix (name: string) = diff --git a/src/fsharp/symbols/Exprs.fs b/src/fsharp/symbols/Exprs.fs index 2c0be748dd6..84da9a9be1f 100644 --- a/src/fsharp/symbols/Exprs.fs +++ b/src/fsharp/symbols/Exprs.fs @@ -211,7 +211,7 @@ module FSharpExprConvert = rfref.RecdField.IsCompilerGenerated && rfref.RecdField.IsStatic && rfref.RecdField.IsMutable && - rfref.RecdField.Name.StartsWithOrdinal("init") + rfref.RecdField.LogicalName.StartsWithOrdinal("init") // Match "if [AI_clt](init@41, 6) then IntrinsicFunctions.FailStaticInit () else ()" let (|StaticInitializationCheck|_|) e = @@ -811,7 +811,7 @@ module FSharpExprConvert = | TOp.ExnFieldGet (tcref, i), [], [obj] -> let exnc = stripExnEqns tcref let fspec = exnc.TrueInstanceFieldsAsList.[i] - let fref = mkRecdFieldRef tcref fspec.Name + let fref = mkRecdFieldRef tcref fspec.LogicalName let typR = ConvType cenv (mkAppTy tcref tyargs) let objR = ConvExpr cenv env (mkCoerceExpr (obj, mkAppTy tcref [], m, cenv.g.exn_ty)) E.FSharpFieldGet(Some objR, typR, ConvRecdFieldRef cenv fref) @@ -819,7 +819,7 @@ module FSharpExprConvert = | TOp.ExnFieldSet (tcref, i), [], [obj;e2] -> let exnc = stripExnEqns tcref let fspec = exnc.TrueInstanceFieldsAsList.[i] - let fref = mkRecdFieldRef tcref fspec.Name + let fref = mkRecdFieldRef tcref fspec.LogicalName let typR = ConvType cenv (mkAppTy tcref tyargs) let objR = ConvExpr cenv env (mkCoerceExpr (obj, mkAppTy tcref [], m, cenv.g.exn_ty)) E.FSharpFieldSet(Some objR, typR, ConvRecdFieldRef cenv fref, ConvExpr cenv env e2) diff --git a/src/fsharp/symbols/SymbolHelpers.fs b/src/fsharp/symbols/SymbolHelpers.fs index fe53650be26..9a269a67a40 100644 --- a/src/fsharp/symbols/SymbolHelpers.fs +++ b/src/fsharp/symbols/SymbolHelpers.fs @@ -666,12 +666,12 @@ module internal SymbolHelpers = | _ -> "" | Item.ModuleOrNamespaces(modref :: _ as modrefs) -> let definiteNamespace = modrefs |> List.forall (fun modref -> modref.IsNamespace) - if definiteNamespace then fullDisplayTextOfModRef modref else modref.DemangledModuleOrNamespaceName + if definiteNamespace then fullDisplayTextOfModRef modref else modref.DisplayName | Item.TypeVar (id, _) -> id | Item.ArgName (id, _, _) -> id.idText | Item.SetterArg (_, item) -> FullNameOfItem g item | Item.ImplicitOp(id, _) -> id.idText - | Item.UnionCaseField (UnionCaseInfo (_, ucref), fieldIndex) -> ucref.FieldByIndex(fieldIndex).Name + | Item.UnionCaseField (UnionCaseInfo (_, ucref), fieldIndex) -> ucref.FieldByIndex(fieldIndex).DisplayName // unreachable | Item.UnqualifiedType([]) | Item.Types(_, []) @@ -871,10 +871,10 @@ module internal SymbolHelpers = GetF1Keyword g (Item.Value apref.ActivePatternVal) | Item.UnionCase(ucinfo, _) -> - (ucinfo.TyconRef |> ticksAndArgCountTextOfTyconRef) + "."+ucinfo.Name |> Some + (ucinfo.TyconRef |> ticksAndArgCountTextOfTyconRef) + "."+ucinfo.DisplayName |> Some | Item.RecdField rfi -> - (rfi.TyconRef |> ticksAndArgCountTextOfTyconRef) + "." + rfi.Name |> Some + (rfi.TyconRef |> ticksAndArgCountTextOfTyconRef) + "." + rfi.DisplayName |> Some | Item.AnonRecdField _ -> None diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs index b190c30f080..6e0ede97a98 100644 --- a/src/fsharp/symbols/Symbols.fs +++ b/src/fsharp/symbols/Symbols.fs @@ -239,8 +239,11 @@ type FSharpSymbol(cenv: SymbolEnv, item: unit -> Item, access: FSharpSymbol -> C member x.GetEffectivelySameAsHash() = ItemsAreEffectivelyEqualHash cenv.g x.Item member internal _.SymbolEnv = cenv + member internal _.Item = item() + member _.DisplayNameCore = item().DisplayNameCore + member _.DisplayName = item().DisplayName // This is actually overridden in all cases below. However some symbols are still just of type FSharpSymbol, @@ -253,7 +256,7 @@ type FSharpSymbol(cenv: SymbolEnv, item: unit -> Item, access: FSharpSymbol -> C override x.GetHashCode() = hash x.ImplementationLocation - override x.ToString() = "symbol " + (try item().DisplayName with _ -> "?") + override x.ToString() = "symbol " + (try item().DisplayNameCore with _ -> "?") // TODO: there are several cases where we may need to report more interesting // symbol information below. By default we return a vanilla symbol. @@ -384,10 +387,13 @@ type FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = checkIsResolved() entity.CompiledName + member _.DisplayNameCore = + checkIsResolved() + entity.DisplayNameCore + member _.DisplayName = checkIsResolved() - if entity.IsModuleOrNamespace then entity.DemangledModuleOrNamespaceName - else entity.DisplayName + entity.DisplayName member _.AccessPath = checkIsResolved() @@ -711,7 +717,7 @@ type FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = else entity.AllFieldsAsList - |> List.map (fun x -> FSharpField(cenv, mkRecdFieldRef entity x.Name)) + |> List.map (fun x -> FSharpField(cenv, mkRecdFieldRef entity x.LogicalName)) |> makeReadOnlyCollection member x.AbbreviatedType = @@ -929,7 +935,7 @@ type FSharpUnionCase(cenv, v: UnionCaseRef) = member _.Name = checkIsResolved() - v.UnionCase.DisplayName + v.UnionCase.LogicalName member _.DeclarationLocation = checkIsResolved() @@ -947,7 +953,7 @@ type FSharpUnionCase(cenv, v: UnionCaseRef) = checkIsResolved() FSharpType(cenv, v.ReturnType) - member _.CompiledName = + member _.CompiledName = checkIsResolved() v.UnionCase.CompiledName @@ -1175,7 +1181,7 @@ type FSharpField(cenv: SymbolEnv, d: FSharpFieldData) = member _.Name = checkIsResolved() match d.TryRecdField with - | Choice1Of3 r -> r.Name + | Choice1Of3 r -> r.LogicalName | Choice2Of3 f -> f.FieldName | Choice3Of3 (anonInfo, _tinst, n, _) -> anonInfo.SortedNames.[n] @@ -1927,7 +1933,7 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = member _.IsActivePattern = if isUnresolved() then false else match fsharpInfo() with - | Some v -> ActivePatternInfoOfValName v.CoreDisplayName v.Range |> Option.isSome + | Some v -> ActivePatternInfoOfValName v.DisplayNameCoreMangled v.Range |> Option.isSome | None -> false member x.CompiledName = diff --git a/src/fsharp/symbols/Symbols.fsi b/src/fsharp/symbols/Symbols.fsi index f0a7c01329b..99a7a4a53b6 100644 --- a/src/fsharp/symbols/Symbols.fsi +++ b/src/fsharp/symbols/Symbols.fsi @@ -93,7 +93,10 @@ type FSharpSymbol = /// Get the declaration location for the symbol member DeclarationLocation: range option - /// Gets the short display name for the symbol + /// Gets the display name for the symbol where double backticks are not added for non-identifiers + member DisplayNameCore: string + + /// Gets the display name for the symbol. Double backticks are added if the name is not a valid identifier. member DisplayName: string /// Get the implementation location for the symbol if it was declared in a signature that has an implementation From 2973d18e164c7f9421034f696f339a0cd08b4e65 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 03:07:03 +0100 Subject: [PATCH 19/25] fix a test case --- src/fsharp/NicePrint.fs | 18 ++-- src/fsharp/PrettyNaming.fs | 86 ++++++++++++------- src/fsharp/infos.fs | 8 +- src/fsharp/infos.fsi | 3 + src/fsharp/service/ServiceDeclarationLists.fs | 7 +- 5 files changed, 76 insertions(+), 46 deletions(-) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index fe1ab73313b..1c63ae02048 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1515,7 +1515,7 @@ module private TastDefinitionPrinting = let layoutExtensionMember denv infoReader (vref: ValRef) = let tycon = vref.MemberApparentEntity.Deref - let nameL = tagMethod tycon.DisplayName |> mkNav vref.DefinitionRange |> wordL + let nameL = ConvertNameToDisplayLayout (tagMethod >> mkNav vref.DefinitionRange >> wordL) tycon.DisplayNameCore let nameL = layoutAccessibility denv tycon.Accessibility nameL // "type-accessibility" let tps = match PartitionValTyparsForApparentEnclosingType denv.g vref.Deref with @@ -1648,7 +1648,7 @@ module private TastDefinitionPrinting = else None, tagUnknownType - let nameL = ConvertNameToDisplayLayout (tagger >> mkNav tycon.DefinitionRange >> wordL) tycon.DisplayName + let nameL = ConvertNameToDisplayLayout (tagger >> mkNav tycon.DefinitionRange >> wordL) tycon.DisplayNameCore let nameL = layoutAccessibility denv tycon.Accessibility nameL let denv = denv.AddAccessibility tycon.Accessibility @@ -1662,10 +1662,10 @@ module private TastDefinitionPrinting = let sortKey (v: MethInfo) = (not v.IsConstructor, - not v.IsInstance, // instance first - v.DisplayName, // sort by name - List.sum v.NumArgs, // sort by #curried - v.NumArgs.Length) // sort by arity + not v.IsInstance, // instance first + v.DisplayNameCore, // sort by name + List.sum v.NumArgs, // sort by #curried + v.NumArgs.Length) // sort by arity let shouldShow (valRef: ValRef option) = match valRef with @@ -1738,7 +1738,7 @@ module private TastDefinitionPrinting = let methLs = meths - |> List.groupBy (fun md -> md.DisplayName) + |> List.groupBy (fun md -> md.DisplayNameCore) |> List.collect (fun (_, group) -> if denv.shrinkOverloads then shrinkOverloads (InfoMemberPrinting.layoutMethInfoFSharpStyle infoReader m denv) (fun x xL -> (sortKey x, xL)) group @@ -1959,7 +1959,7 @@ module private TastDefinitionPrinting = // Layout: exception definition let layoutExnDefn denv infoReader (exncref: EntityRef) = let exnc = exncref.Deref - let nameL = ConvertNameToDisplayLayout (tagClass >> mkNav exncref.DefinitionRange >> wordL) exnc.DisplayName + let nameL = ConvertNameToDisplayLayout (tagClass >> mkNav exncref.DefinitionRange >> wordL) exnc.DisplayNameCore let nameL = layoutAccessibility denv exnc.TypeReprAccessibility nameL let exnL = wordL (tagKeyword "exception") ^^ nameL // need to tack on the Exception at the right of the name for goto definition let reprL = @@ -2061,7 +2061,7 @@ module private TastDefinitionPrinting = mspec.ModuleOrNamespaceType.AllValsAndMembers |> QueueList.toList |> List.filter shouldShow - |> List.sortBy (fun v -> v.DisplayName) + |> List.sortBy (fun v -> v.DisplayNameCore) |> List.map (mkLocalValRef >> PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader) if List.isEmpty entityLs && List.isEmpty valLs then diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index 1c22eebdd5d..3cdda3e8a27 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -27,7 +27,7 @@ let [] qmarkSet = "?<-" /// Prefix for compiled (mangled) operator names. let [] opNamePrefix = "op_" -let private opNameTable = +let opNameTable = [|("[]", "op_Nil") ("::", "op_ColonColon") ("+", "op_Addition") @@ -85,7 +85,7 @@ let private opNameTable = (parenSet, "op_ArrayAssign") |] -let private opCharTranslateTable = +let opCharTranslateTable = [|( '>', "Greater") ( '<', "Less") ( '+', "Plus") @@ -113,7 +113,7 @@ let private opCharTranslateTable = ( ']', "RBrack") |] /// The set of characters usable in custom operators. -let private opCharSet = +let opCharSet = let t = HashSet<_>() for c, _ in opCharTranslateTable do t.Add(c) |> ignore @@ -265,6 +265,16 @@ let IsIdentifierName (name: string) = let rec loop i = (i >= nameLen || (IsIdentifierPartCharacter(name.[i]) && loop (i+1))) loop 1 +let rec isCoreActivePatternName (name: string) idx seenNonOpChar = + if idx = name.Length - 1 then + seenNonOpChar + else + let c = name.[idx] + if opCharSet.Contains(c) && c <> '|' && c <> ' ' then + false + else + isCoreActivePatternName name (idx + 1) (seenNonOpChar || c <> '|') + /// Determines if the specified name is a valid name for an active pattern. let IsActivePatternName (name: string) = // The name must contain at least one character between the starting and ending delimiters. @@ -272,22 +282,20 @@ let IsActivePatternName (name: string) = if nameLen < 3 || name.[0] <> '|' || name.[nameLen - 1] <> '|' then false else - let rec isCoreActivePatternName (name: string) idx seenNonOpChar = - if idx = name.Length - 1 then - seenNonOpChar - else - let c = name.[idx] - if opCharSet.Contains(c) && c <> '|' && c <> ' ' then - false - else - isCoreActivePatternName name (idx + 1) (seenNonOpChar || c <> '|') - isCoreActivePatternName name 1 false -/// Returns `true` if given string is an operator display name, e.g. -/// ( |>> ) +/// Returns `true` if given string is an operator display name (DisplayName), e.g. +/// (::) +/// ([]) +/// (|>>) +/// (+) +/// ( * ) +/// Also returns true for core display names (DisplayNameCore) without the parens: +/// :: +/// [] /// |>> -/// .. +/// + +/// * let IsOperatorDisplayName (name: string) = let rec loop (name: string) idx endIndex = if idx = endIndex then @@ -299,11 +307,23 @@ let IsOperatorDisplayName (name: string) = else loop name (idx + 1) endIndex - let skipParens = name.StartsWithOrdinal("( ") && name.EndsWithOrdinal(" )") - let startIndex = if skipParens then 2 else 0 - let endIndex = if skipParens then name.Length - 2 else name.Length - - loop name startIndex endIndex || name = ".. .." + let skipParens2 = name.StartsWithOrdinal("( ") && name.EndsWithOrdinal(" )") + let skipParens1 = name.StartsWithOrdinal("(") && name.EndsWithOrdinal(")") + let skip = if skipParens2 then 2 elif skipParens1 then 1 else 0 + let startIndex = skip + let endIndex = name.Length - skip + (startIndex < endIndex && loop name startIndex endIndex) || + (name = ".. ..") || + (name = "(.. ..)") + +//IsOperatorDisplayName "+" +//IsOperatorDisplayName "(+)" +//IsOperatorDisplayName "(::)" +//IsOperatorDisplayName "::" +//IsOperatorDisplayName "([])" +//IsOperatorDisplayName "( * )" +//IsOperatorDisplayName "( )" +//IsOperatorDisplayName "( +)" let IsMangledOpName (name: string) = name.StartsWithOrdinal(opNamePrefix) @@ -313,7 +333,7 @@ let IsMangledOpName (name: string) = /// This function should only be used for custom operators /// if an operator is or potentially may be a built-in operator, /// use the 'CompileOpName' function instead. -let private compileCustomOpName = +let compileCustomOpName = let t2 = let t2 = Dictionary<_, _> opCharTranslateTable.Length for x, y in opCharTranslateTable do @@ -372,7 +392,7 @@ let CompileOpName op = /// This function should only be used for mangled names of custom operators /// if a mangled name potentially represents a built-in operator, /// use the 'DecompileOpName' function instead. -let private decompileCustomOpName = +let decompileCustomOpName = // Memoize this operation. Custom operators are typically used more than once // so this avoids repeating decompilation. let decompiledOperators = ConcurrentDictionary<_, _> StringComparer.Ordinal @@ -486,8 +506,10 @@ let ConvertValNameToDisplayName isBaseVal name = // Check for no decompilation, e.g. op_Implicit, op_NotAMangledOpName, op_A-B if IsMangledOpName name && (nm = name) then AddBackticksToIdentifierIfNeeded nm + // Add parentheses for multiply-like symbols, with spacing to avoid confusion with comments elif nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*" then "( " + nm + " )" + // Add parentheses for other symbols, no spacing else "(" + nm + ")" else @@ -637,9 +659,9 @@ let (|Control|Equality|Relational|Indexer|FixedTypes|Other|) opName = | _ -> Other -let [] private compilerGeneratedMarker = "@" +let [] compilerGeneratedMarker = "@" -let [] private compilerGeneratedMarkerChar = '@' +let [] compilerGeneratedMarkerChar = '@' let IsCompilerGeneratedName (nm: string) = nm.IndexOf compilerGeneratedMarkerChar <> -1 @@ -659,7 +681,7 @@ let CompilerGeneratedNameSuffix (basicName: string) suffix = // Handle mangled .NET generic type names //------------------------------------------------------------------------- -let [] private mangledGenericTypeNameSym = '`' +let [] mangledGenericTypeNameSym = '`' let TryDemangleGenericNameAndPos (n: string) = // check what comes after the symbol is a number @@ -697,7 +719,7 @@ let DecodeGenericTypeName (mangledName: string) = | ValueSome pos -> DecodeGenericTypeNameWithPos pos mangledName | _ -> NameArityPair(mangledName, 0) -let private chopStringTo (s: string) (c: char) = +let chopStringTo (s: string) (c: char) = match s.IndexOf c with | -1 -> s | idx -> @@ -732,9 +754,9 @@ let SplitNamesForILPath (s : string) : string list = /// Return a string array delimited by the given separator. /// Note that a quoted string is not going to be mangled into pieces. -let inline private isNotQuotedQuotation (text: string) n = n > 0 && text.[n-1] <> '\\' +let inline isNotQuotedQuotation (text: string) n = n > 0 && text.[n-1] <> '\\' -let private splitAroundQuotation (text: string) (separator: char) = +let splitAroundQuotation (text: string) (separator: char) = let length = text.Length let result = ResizeArray() let mutable insideQuotation = false @@ -761,7 +783,7 @@ let private splitAroundQuotation (text: string) (separator: char) = /// Return a string array delimited by the given separator up to the maximum number. /// Note that a quoted string is not going to be mangled into pieces. -let private splitAroundQuotationWithCount (text: string) (separator: char) (count: int)= +let splitAroundQuotationWithCount (text: string) (separator: char) (count: int)= if count <= 1 then [| text |] else let mangledText = splitAroundQuotation text separator match mangledText.Length > count with @@ -808,10 +830,10 @@ let ActivePatternInfoOfValName nm (m: range) = else None -let private mangleStaticStringArg (nm: string, v: string) = +let mangleStaticStringArg (nm: string, v: string) = nm + "=" + "\"" + v.Replace("\\", "\\\\").Replace("\"", "\\\"") + "\"" -let private tryDemangleStaticStringArg (mangledText: string) = +let tryDemangleStaticStringArg (mangledText: string) = match splitAroundQuotationWithCount mangledText '=' 2 with | [| nm; v |] -> if v.Length >= 2 then diff --git a/src/fsharp/infos.fs b/src/fsharp/infos.fs index 7c7daced570..3c60e70ddbd 100755 --- a/src/fsharp/infos.fs +++ b/src/fsharp/infos.fs @@ -1000,7 +1000,13 @@ type MethInfo = member x.DisplayName = match x with | FSMeth(_, _, vref, _) -> vref.DisplayName - | _ -> x.LogicalName |> PrettyNaming.ConvertNameToDisplayName + | _ -> x.LogicalName |> PrettyNaming.ConvertValNameToDisplayName false + + /// Get the method name in DisplayName form + member x.DisplayNameCore = + match x with + | FSMeth(_, _, vref, _) -> vref.DisplayNameCore + | _ -> x.LogicalName |> PrettyNaming.DecompileOpName /// Indicates if this is a method defined in this assembly with an internal XML comment member x.HasDirectXmlComment = diff --git a/src/fsharp/infos.fsi b/src/fsharp/infos.fsi index c63cef18e6f..30a96aeb08a 100644 --- a/src/fsharp/infos.fsi +++ b/src/fsharp/infos.fsi @@ -401,6 +401,9 @@ type MethInfo = /// Get the method name in DisplayName form member DisplayName: string + /// Get the method name in core DisplayName form (no backticks or parens added) + member DisplayNameCore: string + /// Get the extension method priority of the method. If it is not an extension method /// then use the highest possible value since non-extension methods always take priority /// over extension members. diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index 758e34b43bb..6592ea2b126 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -1032,10 +1032,9 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i | None -> item.Item.DisplayName textInDeclList, textInCode, items) - // Filter out operators, active patterns (as values) and the empty list - |> List.filter (fun (_textInDeclList, textInCode, items) -> - not (isOperatorItem textInCode items) && - not (textInCode = "[]") && // list shows up as a Type and a UnionCase, only such entity with a symbolic name, but want to filter out of intellisense + // Filter out operators, active patterns (as values) + |> List.filter (fun (textInDeclList, _textInCode, items) -> + not (isOperatorItem textInDeclList items) && not (isActivePatternItem items)) |> List.map (fun (textInDeclList, textInCode, itemsWithSameFullName) -> From 3eb506ae47ab78ffc24cccbe4b42e79e867cedb7 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 03:28:20 +0100 Subject: [PATCH 20/25] update baseline --- src/fsharp/service/ServiceDeclarationLists.fs | 79 +++++++++---------- .../ErrorMessages/SuggestionsTests.fs | 35 ++++---- ...erService.SurfaceArea.netstandard.expected | 2 + 3 files changed, 57 insertions(+), 59 deletions(-) diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index 6592ea2b126..7959cd2a63b 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -1038,53 +1038,48 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i not (isActivePatternItem items)) |> List.map (fun (textInDeclList, textInCode, itemsWithSameFullName) -> - match itemsWithSameFullName with - | [] -> failwith "Unexpected empty bag" - | _ -> - let items = - match itemsWithSameFullName |> List.partition (fun x -> x.Unresolved.IsNone) with - | [], unresolved -> unresolved - // if there are resolvable items, throw out unresolved to prevent duplicates like `Set` and `FSharp.Collections.Set`. - | resolved, _ -> resolved + let items = + match itemsWithSameFullName |> List.partition (fun x -> x.Unresolved.IsNone) with + | [], unresolved -> unresolved + // if there are resolvable items, throw out unresolved to prevent duplicates like `Set` and `FSharp.Collections.Set`. + | resolved, _ -> resolved - let item = items.Head - let glyph = GlyphOfItem(denv, item.Item) - - let isAttributeItem = lazy (IsAttribute infoReader item.Item) + let item = items.Head + let glyph = GlyphOfItem(denv, item.Item) - let cutAttributeSuffix (name: string) = - if isAttributeApplicationContext && name <> "Attribute" && name.EndsWithOrdinal("Attribute") && isAttributeItem.Value then - name.[0..name.Length - "Attribute".Length - 1] - else name + let cutAttributeSuffix (name: string) = + if isAttributeApplicationContext && name <> "Attribute" && name.EndsWithOrdinal("Attribute") && IsAttribute infoReader item.Item then + name.[0..name.Length - "Attribute".Length - 1] + else name - let textInDeclList = cutAttributeSuffix textInDeclList - let textInCode = cutAttributeSuffix textInCode + let textInDeclList = cutAttributeSuffix textInDeclList + let textInCode = cutAttributeSuffix textInCode - let fullName = - match item.Unresolved with - | Some x -> x.FullName - | None -> FullNameOfItem g item.Item + let fullName = + match item.Unresolved with + | Some x -> x.FullName + | None -> FullNameOfItem g item.Item - let namespaceToOpen = - item.Unresolved - |> Option.map (fun x -> x.Namespace) - |> Option.bind (fun ns -> - if ns |> Array.startsWith fsharpNamespace then None - else Some ns) - |> Option.map (fun ns -> - match currentNamespace with - | Some currentNs -> - if ns |> Array.startsWith currentNs then - ns.[currentNs.Length..] - else ns - | None -> ns) - |> Option.bind (function - | [||] -> None - | ns -> Some (System.String.Join(".", ns))) - - DeclarationListItem( - textInDeclList, textInCode, fullName, glyph, Choice1Of2 (items, infoReader, ad, m, denv), getAccessibility item.Item, - item.Kind, item.IsOwnMember, item.MinorPriority, item.Unresolved.IsNone, namespaceToOpen)) + let namespaceToOpen = + item.Unresolved + |> Option.map (fun x -> x.Namespace) + |> Option.bind (fun ns -> + if ns |> Array.startsWith fsharpNamespace then None + else Some ns) + |> Option.map (fun ns -> + match currentNamespace with + | Some currentNs -> + if ns |> Array.startsWith currentNs then + ns.[currentNs.Length..] + else ns + | None -> ns) + |> Option.bind (function + | [||] -> None + | ns -> Some (System.String.Join(".", ns))) + + DeclarationListItem( + textInDeclList, textInCode, fullName, glyph, Choice1Of2 (items, infoReader, ad, m, denv), getAccessibility item.Item, + item.Kind, item.IsOwnMember, item.MinorPriority, item.Unresolved.IsNone, namespaceToOpen)) DeclarationListInfo(Array.ofList decls, isForType, false) diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs index 759c5bdc737..30872c7b7cf 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs @@ -2,6 +2,7 @@ namespace FSharp.Compiler.ComponentTests.ErrorMessages +open System open Xunit open FSharp.Test.Compiler @@ -17,7 +18,7 @@ let x = { Person.Names = "Isaac" } |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 4, Col 18, Line 4, Col 23, - ("The type 'Person' does not define the field, constructor or member 'Names'. Maybe you want one of the following:" + System.Environment.NewLine + " Name")) + ("The type 'Person' does not define the field, constructor or member 'Names'. Maybe you want one of the following:" + Environment.NewLine + " Name")) [] let ``Suggest Array Module Functions`` () = @@ -25,7 +26,7 @@ let x = { Person.Names = "Isaac" } |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 1, Col 15, Line 1, Col 18, - ("The value, constructor, namespace or type 'blt' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " blit")) + ("The value, constructor, namespace or type 'blt' is not defined. Maybe you want one of the following:" + Environment.NewLine + " blit")) [] let ``Suggest Async Module`` () = @@ -33,7 +34,7 @@ let x = { Person.Names = "Isaac" } |> typecheck |> shouldFail |> withSingleDiagnostic( Error 39, Line 1, Col 9, Line 1, Col 13, - ("The value, namespace, type or module 'Asnc' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " Async" + System.Environment.NewLine + " async" + System.Environment.NewLine + " asin" + System.Environment.NewLine + " snd")) + ("The value, namespace, type or module 'Asnc' is not defined. Maybe you want one of the following:" + Environment.NewLine + " Async" + Environment.NewLine + " async" + Environment.NewLine + " asin" + Environment.NewLine + " snd")) [] let ``Suggest Attribute`` () = @@ -46,7 +47,7 @@ type MyClass<'Bar>() = |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 2, Col 3, Line 2, Col 15, - ("The type 'AbstractClas' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " AbstractClass" + System.Environment.NewLine + " AbstractClassAttribute")) + ("The type 'AbstractClas' is not defined. Maybe you want one of the following:" + Environment.NewLine + " AbstractClass" + Environment.NewLine + " AbstractClassAttribute")) [] let ``Suggest Double Backtick Identifiers`` () = @@ -59,7 +60,7 @@ let x = N.``longe name`` |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 5, Col 11, Line 5, Col 25, - ("The value, constructor, namespace or type 'longe name' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " ``longer name``")) + ("The value, constructor, namespace or type 'longe name' is not defined. Maybe you want one of the following:" + Environment.NewLine + " ``longer name``")) [] let ``Suggest Double Backtick Unions`` () = @@ -76,7 +77,7 @@ let x = N.MyUnion.``My Case2`` |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 9, Col 19, Line 9,Col 31, - ("The type 'MyUnion' does not define the field, constructor or member 'My Case2'. Maybe you want one of the following:" + System.Environment.NewLine + " My Case1" + System.Environment.NewLine + " Case2")) + ("The type 'MyUnion' does not define the field, constructor or member 'My Case2'. Maybe you want one of the following:" + Environment.NewLine + " Case2" + Environment.NewLine + " ``My Case1``")) [] @@ -92,7 +93,7 @@ let c = MyClass(Property = "") |> typecheck |> shouldFail |> withSingleDiagnostic (Error 495, Line 7, Col 17, Line 7, Col 25, - ("The object constructor 'MyClass' has no argument or settable return property 'Property'. The required signature is new: unit -> MyClass. Maybe you want one of the following:" + System.Environment.NewLine + " MyProperty" + System.Environment.NewLine + " MyProperty2" + System.Environment.NewLine + " ABigProperty")) + ("The object constructor 'MyClass' has no argument or settable return property 'Property'. The required signature is new: unit -> MyClass. Maybe you want one of the following:" + Environment.NewLine + " MyProperty" + Environment.NewLine + " MyProperty2" + Environment.NewLine + " ABigProperty")) [] let ``Suggest Generic Type`` () = @@ -102,7 +103,7 @@ type T = System.Collections.Generic.Dictionary |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 2, Col 48, Line 2, Col 53, - ("The type 'int11' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " int16" + System.Environment.NewLine + " int16`1" + System.Environment.NewLine + " int8" + System.Environment.NewLine + " uint16" + System.Environment.NewLine + " int")) + ("The type 'int11' is not defined. Maybe you want one of the following:" + Environment.NewLine + " int16" + Environment.NewLine + " int8" + Environment.NewLine + " uint16" + Environment.NewLine + " int")) [] let ``Suggest Methods`` () = @@ -119,7 +120,7 @@ module Test2 = |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 9, Col 7, Line 9, Col 14, - ("The type 'D' does not define the field, constructor or member 'Method2'. Maybe you want one of the following:" + System.Environment.NewLine + " Method1")) + ("The type 'D' does not define the field, constructor or member 'Method2'. Maybe you want one of the following:" + Environment.NewLine + " Method1")) [] let ``Suggest Modules`` () = @@ -133,7 +134,7 @@ open Collectons |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 6, Col 6, Line 6, Col 16, - ("The namespace or module 'Collectons' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " Collections")) + ("The namespace or module 'Collectons' is not defined. Maybe you want one of the following:" + Environment.NewLine + " Collections")) [] let ``Suggest Namespaces`` () = @@ -157,7 +158,7 @@ let x = r.ello |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 6, Col 11, Line 6, Col 15, - ("The type 'MyRecord' does not define the field, constructor or member 'ello'. Maybe you want one of the following:" + System.Environment.NewLine + " Hello")) + ("The type 'MyRecord' does not define the field, constructor or member 'ello'. Maybe you want one of the following:" + Environment.NewLine + " Hello")) [] let ``Suggest Record Type for RequireQualifiedAccess Records`` () = @@ -173,7 +174,7 @@ let r = { Field1 = "hallo"; Field2 = 1 } |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 8, Col 11, Line 8, Col 17, - ("The record label 'Field1' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " MyRecord.Field1")) + ("The record label 'Field1' is not defined. Maybe you want one of the following:" + Environment.NewLine + " MyRecord.Field1")) [] let ``Suggest Type Parameters`` () = @@ -197,7 +198,7 @@ let x : System.Collections.Generic.Lst = ResizeArray() """ |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 2, Col 36, Line 2, Col 39, - ("The type 'Lst' is not defined in 'System.Collections.Generic'. Maybe you want one of the following:" + System.Environment.NewLine + " List" + System.Environment.NewLine + " IList" + System.Environment.NewLine + " List`1")) + ("The type 'Lst' is not defined in 'System.Collections.Generic'. Maybe you want one of the following:" + Environment.NewLine + " List" + Environment.NewLine + " IList")) [] let ``Suggest Types in Namespace`` () = @@ -207,7 +208,7 @@ let x = System.DateTie.MaxValue |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 2, Col 16, Line 2, Col 23, - ("The value, constructor, namespace or type 'DateTie' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " DateTime" + System.Environment.NewLine + " DateTimeKind" + System.Environment.NewLine + " DateTimeOffset" + System.Environment.NewLine + " Data")) + ("The value, constructor, namespace or type 'DateTie' is not defined. Maybe you want one of the following:" + Environment.NewLine + " DateTime" + Environment.NewLine + " DateTimeKind" + Environment.NewLine + " DateTimeOffset" + Environment.NewLine + " Data")) [] let ``Suggest Union Cases`` () = @@ -221,7 +222,7 @@ let u = MyUnion.AntherCase |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 6, Col 17, Line 6, Col 27, - ("The type 'MyUnion' does not define the field, constructor or member 'AntherCase'. Maybe you want one of the following:" + System.Environment.NewLine + " AnotherCase")) + ("The type 'MyUnion' does not define the field, constructor or member 'AntherCase'. Maybe you want one of the following:" + Environment.NewLine + " AnotherCase")) [] let ``Suggest Union Type for RequireQualifiedAccess Unions`` () = @@ -236,7 +237,7 @@ let x : MyUnion = MyCase1 |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 7, Col 19, Line 7, Col 26, - ("The value or constructor 'MyCase1' is not defined. Maybe you want one of the following:" + System.Environment.NewLine + " MyUnion.MyCase1")) + ("The value or constructor 'MyCase1' is not defined. Maybe you want one of the following:" + Environment.NewLine + " MyUnion.MyCase1")) [] @@ -257,4 +258,4 @@ let x = |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 11, Col 15, Line 11, Col 19, - ("The type 'MyUnion' does not define the field, constructor or member 'Cas1'. Maybe you want one of the following:" + System.Environment.NewLine + " Case1" + System.Environment.NewLine + " Case2")) + ("The type 'MyUnion' does not define the field, constructor or member 'Cas1'. Maybe you want one of the following:" + Environment.NewLine + " Case1" + Environment.NewLine + " Case2")) diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected index 5942acab78f..857e6a2d5a5 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected @@ -4980,9 +4980,11 @@ FSharp.Compiler.Symbols.FSharpSymbol: Microsoft.FSharp.Core.FSharpOption`1[FShar FSharp.Compiler.Symbols.FSharpSymbol: System.Collections.Generic.IList`1[FSharp.Compiler.Symbols.FSharpAttribute] Attributes FSharp.Compiler.Symbols.FSharpSymbol: System.Collections.Generic.IList`1[FSharp.Compiler.Symbols.FSharpAttribute] get_Attributes() FSharp.Compiler.Symbols.FSharpSymbol: System.String DisplayName +FSharp.Compiler.Symbols.FSharpSymbol: System.String DisplayNameCore FSharp.Compiler.Symbols.FSharpSymbol: System.String FullName FSharp.Compiler.Symbols.FSharpSymbol: System.String ToString() FSharp.Compiler.Symbols.FSharpSymbol: System.String get_DisplayName() +FSharp.Compiler.Symbols.FSharpSymbol: System.String get_DisplayNameCore() FSharp.Compiler.Symbols.FSharpSymbol: System.String get_FullName() FSharp.Compiler.Symbols.FSharpSymbolPatterns FSharp.Compiler.Symbols.FSharpSymbolPatterns: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Symbols.FSharpActivePatternCase] |ActivePatternCase|_|(FSharp.Compiler.Symbols.FSharpSymbol) From 822f259c7c04bf7754a0e2249fd9a1df2d614c0f Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 16:39:19 +0100 Subject: [PATCH 21/25] fix signature generation and re-enable tests --- FSharp.sln | 5 + src/fsharp/CompilerOptions.fs | 2 +- src/fsharp/ConstraintSolver.fs | 65 ++- src/fsharp/CreateILModule.fs | 3 +- src/fsharp/NameResolution.fs | 19 +- src/fsharp/NicePrint.fs | 524 ++++++++++-------- src/fsharp/NicePrint.fsi | 4 +- src/fsharp/OptimizeInputs.fs | 2 +- src/fsharp/PrettyNaming.fs | 10 +- src/fsharp/TextLayoutRender.fs | 1 + src/fsharp/TextLayoutRender.fsi | 1 + src/fsharp/TypedTree.fs | 55 +- src/fsharp/TypedTreeOps.fs | 9 +- src/fsharp/fsc.fs | 4 +- src/fsharp/service/ServiceDeclarationLists.fs | 6 +- src/fsharp/symbols/Symbols.fs | 7 +- src/fsharp/utils/sformat.fs | 1 + src/fsharp/utils/sformat.fsi | 1 + .../ErrorMessages/SuggestionsTests.fs | 2 +- .../FSharp.Compiler.Service.Tests.fsproj | 1 + .../Compiler/Language/FixedIndexSliceTests.fs | 78 +-- .../expressions/syntacticsugar/E_Slices01.bsl | 2 +- tests/fsharp/core/auto-widen/preview/test.bsl | 4 +- tests/fsharp/core/genericmeasures/test.fsx | 2 +- tests/fsharp/core/libtest/test.fsx | 4 +- tests/fsharp/core/members/basics/test.fs | 5 + tests/fsharp/single-test.fs | 8 +- tests/fsharp/tests.fs | 10 +- .../tools/fsharp41/net45/providerDesigner.dll | Bin 70144 -> 70144 bytes .../fsharp41/net461/providerDesigner.dll | Bin 70144 -> 70144 bytes .../netstandard2.0/providerDesigner.dll | Bin 70144 -> 70144 bytes .../fsharp41/net45/providerDesigner.dll | Bin 70144 -> 70144 bytes .../fsharp41/net461/providerDesigner.dll | Bin 70144 -> 70144 bytes .../netstandard2.0/providerDesigner.dll | Bin 70144 -> 70144 bytes tests/fsharp/typecheck/sigs/neg20.bsl | 2 +- .../fsharp/typecheck/sigs/version50/neg20.bsl | 2 +- ...InvalidSelfReferentialStructConstructor.fs | 2 +- .../E_StructWithNameConflict02.fsi | 2 +- tests/service/ProjectAnalysisTests.fs | 10 +- 39 files changed, 472 insertions(+), 381 deletions(-) diff --git a/FSharp.sln b/FSharp.sln index 2b07028feb2..ad537855fac 100644 --- a/FSharp.sln +++ b/FSharp.sln @@ -25,6 +25,11 @@ EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Test.Utilities", "tests\FSharp.Test.Utilities\FSharp.Test.Utilities.fsproj", "{60D275B0-B14A-41CB-A1B2-E815A7448FCB}" EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharpSuite.Tests", "tests\fsharp\FSharpSuite.Tests.fsproj", "{C163E892-5BF7-4B59-AA99-B0E8079C67C4}" + ProjectSection(ProjectDependencies) = postProject + {D0E98C0D-490B-4C61-9329-0862F6E87645} = {D0E98C0D-490B-4C61-9329-0862F6E87645} + {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} = {8B3E283D-B5FE-4055-9D80-7E3A32F3967B} + {C94C257C-3C0A-4858-B5D8-D746498D1F08} = {C94C257C-3C0A-4858-B5D8-D746498D1F08} + EndProjectSection EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.UnitTests", "tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj", "{A8D9641A-9170-4CF4-8FE0-6DB8C134E1B5}" EndProject diff --git a/src/fsharp/CompilerOptions.fs b/src/fsharp/CompilerOptions.fs index 253e22747c8..1f862fbfbfd 100644 --- a/src/fsharp/CompilerOptions.fs +++ b/src/fsharp/CompilerOptions.fs @@ -1630,7 +1630,7 @@ let PrintWholeAssemblyImplementation g (tcConfig:TcConfig) outfile header expr = if tcConfig.showTerms then if tcConfig.writeTermsToFiles then let filename = outfile + ".terms" - use f = FileSystem.OpenFileForWriteShim(filename + "-" + string showTermFileCount + "-" + header).GetWriter() + use f = FileSystem.OpenFileForWriteShim(filename + "-" + string showTermFileCount + "-" + header, FileMode.Create).GetWriter() showTermFileCount <- showTermFileCount + 1 LayoutRender.outL f (Display.squashTo 192 (DebugPrint.implFilesL g expr)) else diff --git a/src/fsharp/ConstraintSolver.fs b/src/fsharp/ConstraintSolver.fs index fc4f7387dd9..34f20beda0c 100644 --- a/src/fsharp/ConstraintSolver.fs +++ b/src/fsharp/ConstraintSolver.fs @@ -200,12 +200,14 @@ type OverloadInformation = /// Cases for overload resolution failure that exists in the implementation of the compiler. type OverloadResolutionFailure = - | NoOverloadsFound of methodName: string - * candidates: OverloadInformation list - * cx: TraitConstraintInfo option - | PossibleCandidates of methodName: string - * candidates: OverloadInformation list // methodNames may be different (with operators?), this is refactored from original logic to assemble overload failure message - * cx: TraitConstraintInfo option + | NoOverloadsFound of + methodName: string * + candidates: OverloadInformation list * + cx: TraitConstraintInfo option + | PossibleCandidates of + methodName: string * + candidates: OverloadInformation list * + cx: TraitConstraintInfo option type OverallTy = /// Each branch of the expression must have the type indicated @@ -723,8 +725,18 @@ let SimplifyMeasure g vars ms = else NewNamedInferenceMeasureVar (v.Range, TyparRigidity.Flexible, v.StaticReq, v.Id) let remainingvars = ListSet.remove typarEq v vars let newvarExpr = if SignRational e < 0 then Measure.Inv (Measure.Var newvar) else Measure.Var newvar - let newms = (ProdMeasures (List.map (fun (c, e') -> Measure.RationalPower (Measure.Con c, NegRational (DivRational e' e))) (ListMeasureConOccsWithNonZeroExponents g false ms) - @ List.map (fun (v', e') -> if typarEq v v' then newvarExpr else Measure.RationalPower (Measure.Var v', NegRational (DivRational e' e))) (ListMeasureVarOccsWithNonZeroExponents ms))) + let nonZeroCon = ListMeasureConOccsWithNonZeroExponents g false ms + let nonZeroVar = ListMeasureVarOccsWithNonZeroExponents ms + let newms = + ProdMeasures [ + for (c, e') in nonZeroCon do + Measure.RationalPower (Measure.Con c, NegRational (DivRational e' e)) + for (v', e') in nonZeroVar do + if typarEq v v' then + newvarExpr + else + Measure.RationalPower (Measure.Var v', NegRational (DivRational e' e)) + ] SubstMeasure v newms match vs with | [] -> (remainingvars, Some newvar) @@ -1367,7 +1379,8 @@ and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload | [], [ty], true, "get_Item", argtys when isArrayTy g ty -> - if rankOfArrayTy g ty <> argtys.Length then do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argtys.Length), m, m2)) + if rankOfArrayTy g ty <> argtys.Length then + do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), argtys.Length), m, m2)) for argty in argtys do do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty g.int_ty let ety = destArrayTy g ty @@ -1377,7 +1390,8 @@ and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload | [], [ty], true, "set_Item", argtys when isArrayTy g ty -> - if rankOfArrayTy g ty <> argtys.Length - 1 then do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argtys.Length - 1)), m, m2)) + if rankOfArrayTy g ty <> argtys.Length - 1 then + do! ErrorD(ConstraintSolverError(FSComp.SR.csIndexArgumentMismatch((rankOfArrayTy g ty), (argtys.Length - 1)), m, m2)) let argtys, ety = List.frontAndBack argtys for argty in argtys do do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace argty g.int_ty @@ -1540,7 +1554,10 @@ and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload return! ErrorD (ConstraintSolverError(FSComp.SR.csExpectTypeWithOperatorButGivenTuple(DecompileOpName nm), m, m2)) else match nm, argtys with - | "op_Explicit", [argty] -> return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion((NicePrint.prettyStringOfTy denv argty), (NicePrint.prettyStringOfTy denv rty)), m, m2)) + | "op_Explicit", [argty] -> + let argTyString = NicePrint.prettyStringOfTy denv argty + let rtyString = NicePrint.prettyStringOfTy denv rty + return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeDoesNotSupportConversion(argTyString, rtyString), m, m2)) | _ -> let tyString = match tys with @@ -2170,8 +2187,10 @@ and SolveTypeChoice (csenv: ConstraintSolverEnv) ndeep m2 trace ty tys = AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.SimpleChoice(tys, m)) | _ -> if List.exists (typeEquivAux Erasure.EraseMeasures g ty) tys then CompleteD - else ErrorD (ConstraintSolverError(FSComp.SR.csTypeNotCompatibleBecauseOfPrintf((NicePrint.minimalStringOfType denv ty), (String.concat "," (List.map (NicePrint.prettyStringOfTy denv) tys))), m, m2)) - + else + let tyString = NicePrint.minimalStringOfType denv ty + let tysString = tys |> List.map (NicePrint.prettyStringOfTy denv) |> String.concat "," + ErrorD (ConstraintSolverError(FSComp.SR.csTypeNotCompatibleBecauseOfPrintf(tyString, tysString), m, m2)) and SolveTypeIsReferenceType (csenv: ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g @@ -2249,12 +2268,19 @@ and SolveTypeRequiresDefaultValue (csenv: ConstraintSolverEnv) ndeep m2 trace or // is done by "equateTypes" and "subsumeTypes" and "subsumeArg" and CanMemberSigsMatchUpToCheck (csenv: ConstraintSolverEnv) - permitOptArgs // are we allowed to supply optional and/or "param" arguments? - alwaysCheckReturn // always check the return type? - (unifyTypes: TType -> TType -> OperationResult) // used to equate the formal method instantiation with the actual method instantiation for a generic method, and the return types - (subsumeTypes: TType -> TType -> OperationResult) // used to compare the "obj" type - (subsumeOrConvertTypes: bool -> TType -> TType -> OperationResult) // used to convert the "return" for MustConvertTo - (subsumeOrConvertArg: CalledArg -> CallerArg<_> -> OperationResult) // used to convert the arguments + // are we allowed to supply optional and/or "param" arguments? + permitOptArgs + // always check the return type? + alwaysCheckReturn + // Used to equate the formal method instantiation with the actual method instantiation + // for a generic method, and the return types + (unifyTypes: TType -> TType -> OperationResult) + // Used to compare the "obj" type + (subsumeTypes: TType -> TType -> OperationResult) + // Used to convert the "return" for MustConvertTo + (subsumeOrConvertTypes: bool -> TType -> TType -> OperationResult) + // Used to convert the arguments + (subsumeOrConvertArg: CalledArg -> CallerArg<_> -> OperationResult) (reqdRetTyOpt: OverallTy option) (calledMeth: CalledMeth<_>): OperationResult = trackErrors { @@ -2908,7 +2934,6 @@ and ResolveOverloading if indexedApplicableMeths |> List.forall (fun (j, other) -> i = j || let res = better candidate other - //eprintfn "\n-------\nCandidate: %s\nOther: %s\nResult: %d\n" (NicePrint.stringOfMethInfo amap m denv (fst candidate).Method) (NicePrint.stringOfMethInfo amap m denv (fst other).Method) res res > 0) then Some candidate else diff --git a/src/fsharp/CreateILModule.fs b/src/fsharp/CreateILModule.fs index 1cbb4584175..8807031c3a8 100644 --- a/src/fsharp/CreateILModule.fs +++ b/src/fsharp/CreateILModule.fs @@ -468,7 +468,8 @@ module MainModuleBuilder = yield! (ManifestResourceFormat.VS_MANIFEST_RESOURCE((FileSystem.OpenFileForReadShim(win32Manifest).ReadAllBytes()), tcConfig.target = CompilerTarget.Dll)) |] if tcConfig.win32res = "" && tcConfig.win32icon <> "" && tcConfig.target <> CompilerTarget.Dll then use ms = new MemoryStream() - Win32ResourceConversions.AppendIconToResourceStream(ms, FileSystem.OpenFileForWriteShim(tcConfig.win32icon)) + use iconStream = FileSystem.OpenFileForReadShim(tcConfig.win32icon) + Win32ResourceConversions.AppendIconToResourceStream(ms, iconStream) yield ILNativeResource.Out [| yield! ResFileFormat.ResFileHeader() yield! ms.ToArray() |] ] diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 028db8fe9a7..4785453d27c 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -286,6 +286,7 @@ type Item = | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.DisplayName | Item.UnqualifiedType(tcref :: _) -> tcref.DisplayName | Item.ModuleOrNamespaces(modref :: _) -> modref.DisplayName + | Item.TypeVar (nm, _) -> nm | _ -> d.DisplayNameCore |> ConvertNameToDisplayName let valRefHash (vref: ValRef) = @@ -2571,7 +2572,7 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf let errorTextF s = match tryTcrefOfAppTy g ty with | ValueSome tcref -> - FSComp.SR.undefinedNameFieldConstructorOrMemberWhenTypeIsKnown(tcref.DisplayNameWithStaticParametersAndTypars, s) + FSComp.SR.undefinedNameFieldConstructorOrMemberWhenTypeIsKnown(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars, s) | _ -> FSComp.SR.undefinedNameFieldConstructorOrMember(s) @@ -2935,18 +2936,18 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified let innerSearch = search +++ (moduleSearch AccessibleFromSomeFSharpCode) +++ (tyconSearch AccessibleFromSomeFSharpCode) let suggestEverythingInScope (addToBuffer: string -> unit) = - for kv in nenv.ModulesAndNamespaces fullyQualified do - for modref in kv.Value do + for (KeyValue(_,modrefs)) in nenv.ModulesAndNamespaces fullyQualified do + for modref in modrefs do if IsEntityAccessible ncenv.amap m ad modref then addToBuffer modref.DisplayName - for e in nenv.TyconsByDemangledNameAndArity fullyQualified do - if IsEntityAccessible ncenv.amap m ad e.Value then - addToBuffer e.Value.DisplayName + for (KeyValue(_,tcref)) in nenv.TyconsByDemangledNameAndArity fullyQualified do + if IsEntityAccessible ncenv.amap m ad tcref then + addToBuffer tcref.DisplayName - for e in nenv.eUnqualifiedItems do - if canSuggestThisItem e.Value then - addToBuffer e.Value.DisplayName + for (KeyValue(_,item)) in nenv.eUnqualifiedItems do + if canSuggestThisItem item then + addToBuffer item.DisplayName match innerSearch with | Exception (UndefinedName(0, _, id1, suggestionsF)) when equals id.idRange id1.idRange -> diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 1c63ae02048..3561df34245 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -134,44 +134,56 @@ module internal PrintUtilities = | x :: rest -> [ resultFunction x (layoutFunction x -- leftL (tagText (match rest.Length with 1 -> FSComp.SR.nicePrintOtherOverloads1() | n -> FSComp.SR.nicePrintOtherOverloadsN(n)))) ] | _ -> [] + let tagEntityRefName(denv: DisplayEnv) (xref: EntityRef) name = + if xref.IsNamespace then tagNamespace name + elif xref.IsModule then tagModule name + elif xref.IsTypeAbbrev then + let ty = xref.TypeAbbrev.Value + match stripTyEqns denv.g ty with + | TType_app(tcref, _) when tcref.IsStructOrEnumTycon -> + tagStruct name + | _ -> + tagAlias name + elif xref.IsFSharpDelegateTycon then tagDelegate name + elif xref.IsILEnumTycon || xref.IsFSharpEnumTycon then tagEnum name + elif xref.IsStructOrEnumTycon then tagStruct name + elif isInterfaceTyconRef xref then tagInterface name + elif xref.IsUnionTycon then tagUnion name + elif xref.IsRecordTycon then tagRecord name + else tagClass name + + let usePrefix (denv: DisplayEnv) (tcref: TyconRef) = + match denv.genericParameterStyle with + | GenericParameterStyle.Implicit -> tcref.IsPrefixDisplay + | GenericParameterStyle.Prefix -> true + | GenericParameterStyle.Suffix -> false + let layoutTyconRefImpl isAttribute (denv: DisplayEnv) (tcref: TyconRef) = - let tagEntityRefName (xref: EntityRef) name = - if xref.IsNamespace then tagNamespace name - elif xref.IsModule then tagModule name - elif xref.IsTypeAbbrev then - let ty = xref.TypeAbbrev.Value - match stripTyEqns denv.g ty with - | TType_app(tcref, _) when tcref.IsStructOrEnumTycon -> - tagStruct name - | _ -> - tagAlias name - elif xref.IsFSharpDelegateTycon then tagDelegate name - elif xref.IsILEnumTycon || xref.IsFSharpEnumTycon then tagEnum name - elif xref.IsStructOrEnumTycon then tagStruct name - elif isInterfaceTyconRef xref then tagInterface name - elif xref.IsUnionTycon then tagUnion name - elif xref.IsRecordTycon then tagRecord name - else tagClass name + let prefix = usePrefix denv tcref + let isArray = not prefix && isArrayTyconRef denv.g tcref let demangled = - let name = - if denv.includeStaticParametersInTypeNames then - tcref.DisplayNameWithStaticParameters - elif tcref.DisplayName = tcref.DisplayNameWithStaticParameters then - tcref.DisplayName // has no static params - else - tcref.DisplayName+"<...>" // shorten - if isAttribute && name.EndsWithOrdinal("Attribute") then - String.dropSuffix name "Attribute" - else - name + if isArray then + tcref.DisplayNameCore // no backticks for arrays "int[]" + else + let name = + if denv.includeStaticParametersInTypeNames then + tcref.DisplayNameWithStaticParameters + elif tcref.DisplayName = tcref.DisplayNameWithStaticParameters then + tcref.DisplayName // has no static params + else + tcref.DisplayName+"<...>" // shorten + if isAttribute && name.EndsWithOrdinal("Attribute") then + String.dropSuffix name "Attribute" + else + name let tyconTagged = - tagEntityRefName tcref demangled + tagEntityRefName denv tcref demangled |> mkNav tcref.DefinitionRange let tyconTextL = - if demangled.StartsWith "[" then + if isArray then tyconTagged |> rightL else tyconTagged |> wordL @@ -196,35 +208,32 @@ module internal PrintUtilities = squareAngleL (layoutTyconRefImpl true denv tcref) /// layout the xml docs immediately before another block - let layoutXmlDoc (denv: DisplayEnv) (xml: XmlDoc) restL = + let layoutXmlDoc (denv: DisplayEnv) alwaysAddEmptyLine (xml: XmlDoc) restL = if denv.showDocumentation then let xmlDocL = - if xml.IsEmpty then - emptyL - else - let linesL = - [ for lineText in xml.UnprocessedLines do - // These lines may have new-lines in them and we need to split them so we can format it - for line in lineText.Split('\n') do - // note here that we don't add a space after the triple-slash, because - // the implicit spacing hasn't been trimmed here. - yield ("///" + line) |> tagText |> wordL - ] - - // Always add an empty line before any "///" comment - let linesL = - if linesL.Length > 0 then - [ yield "" |> tagText |> wordL - yield! linesL ] - else - linesL + let linesL = + [ for lineText in xml.UnprocessedLines do + // These lines may have new-lines in them and we need to split them so we can format it + for line in lineText.Split('\n') do + // note here that we don't add a space after the triple-slash, because + // the implicit spacing hasn't been trimmed here. + yield ("///" + line) |> tagText |> wordL + ] + + // Always add an empty line before any "///" comment + let linesL = + if linesL.Length > 0 || alwaysAddEmptyLine then + [ yield "" |> tagText |> wordL + yield! linesL ] + else + linesL - linesL |> aboveListL + linesL |> aboveListL xmlDocL @@ restL else restL - let private layoutXmlDocFromSig (denv: DisplayEnv) (infoReader: InfoReader) (possibleXmlDoc: XmlDoc) restL (info: (string option * string) option) = + let layoutXmlDocFromSig (denv: DisplayEnv) (infoReader: InfoReader) alwaysAddEmptyLine (possibleXmlDoc: XmlDoc) restL (info: (string option * string) option) = let xmlDoc = if possibleXmlDoc.IsEmpty then match info with @@ -238,65 +247,65 @@ module internal PrintUtilities = possibleXmlDoc else possibleXmlDoc - layoutXmlDoc denv xmlDoc restL + layoutXmlDoc denv alwaysAddEmptyLine xmlDoc restL - let layoutXmlDocOfValRef (denv: DisplayEnv) (infoReader: InfoReader) (vref: ValRef) restL = + let layoutXmlDocOfVal (denv: DisplayEnv) (infoReader: InfoReader) (vref: ValRef) restL = if denv.showDocumentation then GetXmlDocSigOfValRef denv.g vref - |> layoutXmlDocFromSig denv infoReader vref.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader true vref.XmlDoc restL else restL let layoutXmlDocOfMethInfo (denv: DisplayEnv) (infoReader: InfoReader) (minfo: MethInfo) restL = if denv.showDocumentation then GetXmlDocSigOfMethInfo infoReader Range.range0 minfo - |> layoutXmlDocFromSig denv infoReader minfo.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader true minfo.XmlDoc restL else restL let layoutXmlDocOfPropInfo (denv: DisplayEnv) (infoReader: InfoReader) (pinfo: PropInfo) restL = if denv.showDocumentation then GetXmlDocSigOfProp infoReader Range.range0 pinfo - |> layoutXmlDocFromSig denv infoReader pinfo.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader true pinfo.XmlDoc restL else restL let layoutXmlDocOfEventInfo (denv: DisplayEnv) (infoReader: InfoReader) (einfo: EventInfo) restL = if denv.showDocumentation then GetXmlDocSigOfEvent infoReader Range.range0 einfo - |> layoutXmlDocFromSig denv infoReader einfo.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader true einfo.XmlDoc restL else restL let layoutXmlDocOfILFieldInfo (denv: DisplayEnv) (infoReader: InfoReader) (finfo: ILFieldInfo) restL = if denv.showDocumentation then GetXmlDocSigOfILFieldInfo infoReader Range.range0 finfo - |> layoutXmlDocFromSig denv infoReader XmlDoc.Empty restL + |> layoutXmlDocFromSig denv infoReader true XmlDoc.Empty restL else restL - let layoutXmlDocOfRecdFieldRef (denv: DisplayEnv) (infoReader: InfoReader) (rfref: RecdFieldRef) restL = + let layoutXmlDocOfRecdField (denv: DisplayEnv) (infoReader: InfoReader) isClassDecl (rfref: RecdFieldRef) restL = if denv.showDocumentation then GetXmlDocSigOfRecdFieldRef rfref - |> layoutXmlDocFromSig denv infoReader rfref.RecdField.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader isClassDecl rfref.RecdField.XmlDoc restL else restL - let layoutXmlDocOfUnionCaseRef (denv: DisplayEnv) (infoReader: InfoReader) (ucref: UnionCaseRef) restL = + let layoutXmlDocOfUnionCase (denv: DisplayEnv) (infoReader: InfoReader) (ucref: UnionCaseRef) restL = if denv.showDocumentation then GetXmlDocSigOfUnionCaseRef ucref - |> layoutXmlDocFromSig denv infoReader ucref.UnionCase.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader false ucref.UnionCase.XmlDoc restL else restL - let layoutXmlDocOfEntityRef (denv: DisplayEnv) (infoReader: InfoReader) (eref: EntityRef) restL = + let layoutXmlDocOfEntity (denv: DisplayEnv) (infoReader: InfoReader) (eref: EntityRef) restL = if denv.showDocumentation then GetXmlDocSigOfEntityRef infoReader Range.range0 eref - |> layoutXmlDocFromSig denv infoReader eref.XmlDoc restL + |> layoutXmlDocFromSig denv infoReader true eref.XmlDoc restL else restL -module private PrintIL = +module PrintIL = let fullySplitILTypeRef (tref: ILTypeRef) = (List.collect splitNamespace (tref.Enclosing @ [DemangleGenericTypeName tref.Name])) @@ -366,7 +375,7 @@ module private PrintIL = | ILType.Modified (_, _, t) -> layoutILType denv ilTyparSubst t // Just recurse through them to the contained ILType /// Layout a function pointer signature using type-only-F#-style. No argument names are printed. - and private layoutILCallingSignature denv ilTyparSubst cons (signature: ILCallingSignature) = + and layoutILCallingSignature denv ilTyparSubst cons (signature: ILCallingSignature) = // We need a special case for // constructors (Their return types are reported as `void`, but this is // incorrect; so if we're dealing with a constructor we require that the @@ -423,7 +432,7 @@ module private PrintIL = let nameL = ConvertNameToDisplayLayout (tagEnum >> wordL) nm WordL.bar ^^ nameL ^^ layoutILFieldInit litVal -module private PrintTypes = +module PrintTypes = // Note: We need nice printing of constants in order to print literals and attributes let layoutConst g ty c = let str = @@ -472,7 +481,7 @@ module private PrintTypes = | _ -> itemL /// Layout a reference to a type - let layoutTyconRefUse denv tycon = layoutTyconRefImpl false denv tycon + let layoutTyconRef denv tycon = layoutTyconRefImpl false denv tycon /// Layout the flags of a member let layoutMemberFlags (memFlags: SynMemberFlags) = @@ -502,7 +511,7 @@ module private PrintTypes = /// Layout a single attribute arg, following the cases of 'gen_attr_arg' in ilxgen.fs /// This is the subset of expressions we display in the NicePrint pretty printer /// See also dataExprL - there is overlap between these that should be removed - let rec private layoutAttribArg denv arg = + let rec layoutAttribArg denv arg = match arg with | Expr.Const (c, _, ty) -> if isEnumTy denv.g ty then @@ -534,7 +543,7 @@ module private PrintTypes = | _ -> comment "(* unsupported attribute argument *)" /// Layout arguments of an attribute 'arg1, ..., argN' - and private layoutAttribArgs denv args = + and layoutAttribArgs denv args = let argsL = args |> List.map (fun (AttribExpr(e1, _)) -> layoutAttribArg denv e1) sepListL (rightL (tagPunctuation ",")) argsL @@ -589,41 +598,58 @@ module private PrintTypes = PrintIL.layoutILType denv [] ty ++ argsL /// Layout '[]' above another block - and layoutAttribs denv isValue isLiteral ty kind attrs restL = + and layoutAttribs denv startOpt isLiteral kind attrs restL = - if denv.showAttributes then - // Don't display DllImport attributes in generated signatures - let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_DllImportAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_ContextStaticAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_ThreadStaticAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_EntryPointAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_MarshalAsAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_ReflectedDefinitionAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_StructLayoutAttribute >> not) - let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_AutoSerializableAttribute >> not) + let attrsL = + [ if denv.showAttributes then + // Don't display DllImport and other attributes in generated signatures + let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_DllImportAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_ContextStaticAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_ThreadStaticAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_EntryPointAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttributeOpt denv.g denv.g.attrib_MarshalAsAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_ReflectedDefinitionAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_StructLayoutAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_AutoSerializableAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_LiteralAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_MeasureAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_StructAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_ClassAttribute >> not) + let attrs = attrs |> List.filter (IsMatchingFSharpAttribute denv.g denv.g.attrib_InterfaceAttribute >> not) + + for attr in attrs do + layoutAttrib denv attr + + // Always show the 'Struct', 'Class, 'Interface' attributes if needed + match startOpt with + | Some "struct" -> + wordL (tagClass "Struct") + | Some "class" -> + wordL (tagClass "Class") + | Some "interface" -> + wordL (tagClass "Interface") + | _ -> + () + + // Always show the 'Literal' attribute if needed + if isLiteral then + wordL (tagClass "Literal") + + // Always show the 'Measure' attribute if needed + if kind = TyparKind.Measure then + wordL (tagClass "Measure") + ] + + match attrsL with + | [] -> restL + | _ -> squareAngleL (sepListL (rightL (tagPunctuation ";")) attrsL) @@ restL - match attrs with - | [] -> restL - | _ -> - squareAngleL (sepListL (rightL (tagPunctuation ";")) (List.map (layoutAttrib denv) attrs)) @@ - restL - // Always show the 'Struct' attribute - elif not isValue && (isStructTy denv.g ty && not (isEnumTy denv.g ty)) then - squareAngleL (wordL (tagClass "Struct")) @@ restL - // Always show the 'Literal' attribute - elif isLiteral then - squareAngleL (wordL (tagClass "Literal")) @@ restL - else - match kind with - | TyparKind.Type -> restL - | TyparKind.Measure -> squareAngleL (wordL (tagClass "Measure")) @@ restL - and layoutTyparAttribs denv kind attrs restL = match attrs, kind with | [], TyparKind.Type -> restL | _, _ -> squareAngleL (sepListL (rightL (tagPunctuation ";")) ((match kind with TyparKind.Type -> [] | TyparKind.Measure -> [wordL (tagText "Measure")]) @ List.map (layoutAttrib denv) attrs)) ^^ restL - and private layoutTyparRef denv (typar: Typar) = + and layoutTyparRef denv (typar: Typar) = wordL (tagTypeParameter (sprintf "%s%s%s" @@ -640,7 +666,7 @@ module private PrintTypes = /// ('a :> Type) - inplace coercion constraint not singleton. /// ('a.opM: S->T) - inplace operator constraint. /// - and private layoutTyparRefWithInfo denv (env: SimplifyTypes.TypeSimplificationInfo) (typar: Typar) = + and layoutTyparRefWithInfo denv (env: SimplifyTypes.TypeSimplificationInfo) (typar: Typar) = let varL = layoutTyparRef denv typar let varL = if denv.showAttributes then layoutTyparAttribs denv typar.Kind typar.Attribs varL else varL @@ -680,7 +706,7 @@ module private PrintTypes = wordL (tagKeyword "when") ^^ sepListL (wordL (tagKeyword "and")) cxsL /// Layout constraints, taking TypeSimplificationInfo into account - and private layoutConstraintWithInfo denv env (tp, tpc) = + and layoutConstraintWithInfo denv env (tp, tpc) = let longConstraintPrefix l = (layoutTyparRefWithInfo denv env tp |> addColonL) ^^ l match tpc with | TyparConstraint.CoercesTo(tpct, _) -> @@ -752,7 +778,7 @@ module private PrintTypes = WordL.arrow ^^ (layoutTyparRefWithInfo denv env tp)) |> longConstraintPrefix] - and private layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = + and layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = let nameL = ConvertValNameToDisplayLayout false (tagMember >> wordL) nm if denv.shortConstraints then WordL.keywordMember ^^ nameL @@ -771,13 +797,13 @@ module private PrintTypes = (tysL |> addColonL) --- bracketL (stat ++ (nameL |> addColonL) --- sigL) /// Layout a unit of measure expression - and private layoutMeasure denv unt = + and layoutMeasure denv unt = let sortVars vs = vs |> List.sortBy (fun (v: Typar, _) -> v.DisplayName) let sortCons cs = cs |> List.sortBy (fun (c: TyconRef, _) -> c.DisplayName) let negvs, posvs = ListMeasureVarOccsWithNonZeroExponents unt |> sortVars |> List.partition (fun (_, e) -> SignRational e < 0) let negcs, poscs = ListMeasureConOccsWithNonZeroExponents denv.g false unt |> sortCons |> List.partition (fun (_, e) -> SignRational e < 0) let unparL uv = layoutTyparRef denv uv - let unconL tc = layoutTyconRefUse denv tc + let unconL tc = layoutTyconRef denv tc let rationalL e = wordL (tagNumericLiteral (RationalToString e)) let measureToPowerL x e = if e = OneRational then x else x -- wordL (tagPunctuation "^") -- rationalL e let prefix = spaceListL (List.map (fun (v, e) -> measureToPowerL (unparL v) e) posvs @ @@ -789,7 +815,7 @@ module private PrintTypes = | _ -> prefix ^^ sepL (tagPunctuation "/") ^^ (if List.length negvs + List.length negcs > 1 then sepL (tagPunctuation "(") ^^ postfix ^^ sepL (tagPunctuation ")") else postfix) /// Layout type arguments, either NAME or (ty, ..., ty) NAME *) - and private layoutTypeAppWithInfoAndPrec denv env tcL prec prefix args = + and layoutTypeAppWithInfoAndPrec denv env tcL prec prefix args = if prefix then match args with | [] -> tcL @@ -825,12 +851,8 @@ module private PrintTypes = // Layout a type application | TType_ucase (UnionCaseRef(tc, _), args) | TType_app (tc, args) -> - let usePrefix = - match denv.genericParameterStyle with - | GenericParameterStyle.Implicit -> tc.IsPrefixDisplay - | GenericParameterStyle.Prefix -> true - | GenericParameterStyle.Suffix -> false - layoutTypeAppWithInfoAndPrec denv env (layoutTyconRefUse denv tc) prec usePrefix args + let prefix = usePrefix denv tc + layoutTypeAppWithInfoAndPrec denv env (layoutTyconRef denv tc) prec prefix args // Layout a tuple type | TType_anon (anonInfo, tys) -> @@ -842,10 +864,11 @@ module private PrintTypes = // Layout a tuple type | TType_tuple (tupInfo, t) -> + let elsL = layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) t if evalTupInfoIsStruct tupInfo then - WordL.keywordStruct --- bracketL (layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) t) + WordL.keywordStruct --- bracketL elsL else - bracketIfL (prec <= 2) (layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) t) + bracketIfL (prec <= 2) elsL // Layout a first-class generic type. | TType_forall (tps, tau) -> @@ -869,13 +892,13 @@ module private PrintTypes = | TType_measure unt -> layoutMeasure denv unt /// Layout a list of types, separated with the given separator, either '*' or ',' - and private layoutTypesWithInfoAndPrec denv env prec sep typl = + and layoutTypesWithInfoAndPrec denv env prec sep typl = sepListL sep (List.map (layoutTypeWithInfoAndPrec denv env prec) typl) - and private layoutReturnType denv env rty = layoutTypeWithInfoAndPrec denv env 4 rty + and layoutReturnType denv env rty = layoutTypeWithInfoAndPrec denv env 4 rty /// Layout a single type, taking TypeSimplificationInfo into account - and private layoutTypeWithInfo denv env ty = + and layoutTypeWithInfo denv env ty = layoutTypeWithInfoAndPrec denv env 5 ty and layoutType denv ty = @@ -989,13 +1012,13 @@ module private PrintTypes = let cxs = cxs |> List.filter (fun (tp, _) -> not (parentTyparTys |> List.exists (fun ty -> match tryDestTyparTy denv.g ty with ValueSome destTypar -> typarEq tp destTypar | _ -> false))) prettyTyparInst, prettyLayoutOfTopTypeInfoAux denv argInfos retTy cxs - let private prettyArgInfos denv allTyparInst = + let prettyArgInfos denv allTyparInst = function | [] -> [(denv.g.unit_ty, ValReprInfo.unnamedTopArg1)] | infos -> infos |> List.map (map1Of2 (instType allTyparInst)) // Layout: type spec - class, datatype, record, abbrev - let private prettyLayoutOfMemberSigCore denv memberToParentInst (typarInst, methTypars: Typars, argInfos, retTy) = + let prettyLayoutOfMemberSigCore denv memberToParentInst (typarInst, methTypars: Typars, argInfos, retTy) = let niceMethodTypars, allTyparInst = let methTyparNames = methTypars |> List.mapi (fun i tp -> if (PrettyTypes.NeedsPrettyTyparName tp) then sprintf "a%d" (List.length memberToParentInst + i) else tp.Name) PrettyTypes.NewPrettyTypars memberToParentInst methTypars methTyparNames @@ -1086,7 +1109,7 @@ module private PrintTypes = ty.GetAssemblyName() /// Printing TAST objects -module private PrintTastMemberOrVals = +module PrintTastMemberOrVals = open PrintTypes let mkInlineL denv (v: Val) nameL = @@ -1095,7 +1118,18 @@ module private PrintTastMemberOrVals = else nameL - let private prettyLayoutOfMemberShortOption denv typarInst (v:Val) short = + let layoutMemberName (denv: DisplayEnv) (v: ValRef) niceMethodTypars tagFunction name = + let nameL = ConvertValNameToDisplayLayout v.IsBaseVal (tagFunction >> mkNav v.DefinitionRange >> wordL) name + let nameL = + if denv.showMemberContainers then + layoutTyconRef denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL + else + nameL + let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL + let nameL = layoutAccessibility denv v.Accessibility nameL + nameL + + let prettyLayoutOfMemberShortOption denv typarInst (v: Val) short = let v = mkLocalValRef v let membInfo = Option.get v.MemberInfo let stat = layoutMemberFlags membInfo.MemberFlags @@ -1107,17 +1141,6 @@ module private PrintTastMemberOrVals = info.Attribs <- [] info.Name <- None - let mkNameL niceMethodTypars tagFunction name = - let nameL = ConvertValNameToDisplayLayout v.IsBaseVal (tagFunction >> mkNav v.DefinitionRange >> wordL) name - let nameL = - if denv.showMemberContainers then - layoutTyconRefUse denv v.MemberApparentEntity ^^ SepL.dot ^^ nameL - else - nameL - let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL - let nameL = layoutAccessibility denv v.Accessibility nameL - nameL - let prettyTyparInst, memberL = match membInfo.MemberFlags.MemberKind with | SynMemberKind.Member -> @@ -1125,7 +1148,7 @@ module private PrintTastMemberOrVals = let resL = if short then tauL else - let nameL = mkNameL niceMethodTypars tagMember v.DisplayNameCoreMangled + let nameL = layoutMemberName denv v niceMethodTypars tagMember v.DisplayNameCoreMangled let nameL = if short then nameL else mkInlineL denv v.Deref nameL stat --- ((nameL |> addColonL) ^^ tauL) prettyTyparInst, resL @@ -1147,7 +1170,7 @@ module private PrintTastMemberOrVals = if isNil argInfos then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertyGetter(), v.Id.idRange)) - let nameL = mkNameL [] tagProperty v.DisplayNameCoreMangled + let nameL = layoutMemberName denv v [] tagProperty v.DisplayNameCoreMangled let resL = if short then nameL --- (WordL.keywordWith ^^ WordL.keywordGet) else stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordGet) @@ -1163,7 +1186,7 @@ module private PrintTastMemberOrVals = if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet) else - let nameL = mkNameL niceMethodTypars tagProperty v.DisplayNameCoreMangled + let nameL = layoutMemberName denv v niceMethodTypars tagProperty v.DisplayNameCoreMangled stat --- ((nameL |> addColonL) ^^ (if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet))) prettyTyparInst, resL @@ -1171,7 +1194,7 @@ module private PrintTastMemberOrVals = if argInfos.Length <> 1 || isNil argInfos.Head then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertySetter(), v.Id.idRange)) - let nameL = mkNameL [] tagProperty v.DisplayNameCoreMangled + let nameL = layoutMemberName denv v [] tagProperty v.DisplayNameCoreMangled let resL = stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordSet) emptyTyparInst, resL else @@ -1181,7 +1204,7 @@ module private PrintTastMemberOrVals = if short then (tauL --- (WordL.keywordWith ^^ WordL.keywordSet)) else - let nameL = mkNameL niceMethodTypars tagProperty v.DisplayNameCoreMangled + let nameL = layoutMemberName denv v niceMethodTypars tagProperty v.DisplayNameCoreMangled stat --- ((nameL |> addColonL) ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) prettyTyparInst, resL @@ -1215,7 +1238,7 @@ module private PrintTastMemberOrVals = | Const.Zero -> literalValue.ToString() |> tagText |> wordL WordL.equals ++ literalValue - let private layoutNonMemberVal denv (tps, v: Val, tau, cxs) = + let layoutNonMemberVal denv (tps, v: Val, tau, cxs) = let env = SimplifyTypes.CollectInfo true [tau] cxs let cxs = env.postfixConstraints let argInfos, rty = GetTopTauTypeInFSharpForm denv.g (arityOfVal v).ArgInfos tau v.Range @@ -1278,8 +1301,8 @@ module private PrintTastMemberOrVals = let valL = valL - |> layoutAttribs denv true vref.LiteralValue.IsSome vref.Type TyparKind.Type vref.Attribs - |> layoutXmlDocOfValRef denv infoReader vref + |> layoutAttribs denv None vref.LiteralValue.IsSome TyparKind.Type vref.Attribs + |> layoutXmlDocOfVal denv infoReader vref prettyTyparInst, valL @@ -1294,9 +1317,9 @@ let layoutType denv x = x |> PrintTypes.layoutType denv let outputTypars denv nm os x = x |> PrintTypes.layoutTyparDecls denv (wordL nm) true |> bufferL os -let outputTyconRef denv os x = x |> PrintTypes.layoutTyconRefUse denv |> bufferL os +let outputTyconRef denv os x = x |> PrintTypes.layoutTyconRef denv |> bufferL os -let layoutTyconRef denv x = x |> PrintTypes.layoutTyconRefUse denv +let layoutTyconRef denv x = x |> PrintTypes.layoutTyconRef denv let layoutConst g ty c = PrintTypes.layoutConst g ty c @@ -1352,7 +1375,7 @@ module InfoMemberPrinting = // new: argName1: argType1 * ... * argNameN: argTypeN -> retType // Method: argName1: argType1 * ... * argNameN: argTypeN -> retType // - let private layoutMethInfoFSharpStyleCore (infoReader: InfoReader) m denv (minfo: MethInfo) minst = + let layoutMethInfoFSharpStyleCore (infoReader: InfoReader) m denv (minfo: MethInfo) minst = let amap = infoReader.amap match minfo.ArbitraryValRef with @@ -1395,7 +1418,7 @@ module InfoMemberPrinting = // That is, this style: // Container(argName1: argType1, ..., argNameN: argTypeN) : retType // Container.Method(argName1: argType1, ..., argNameN: argTypeN) : retType - let private layoutMethInfoCSharpStyle amap m denv (minfo: MethInfo) minst = + let layoutMethInfoCSharpStyle amap m denv (minfo: MethInfo) minst = let retTy = if minfo.IsConstructor then minfo.ApparentEnclosingType else minfo.GetFSharpReturnTy(amap, m, minst) let layout = if minfo.IsExtensionMember then @@ -1405,7 +1428,7 @@ module InfoMemberPrinting = layout ^^ if isAppTy minfo.TcGlobals minfo.ApparentEnclosingAppType then let tcref = minfo.ApparentEnclosingTyconRef - PrintTypes.layoutTyconRefUse denv tcref + PrintTypes.layoutTyconRef denv tcref else emptyL let layout = @@ -1462,7 +1485,8 @@ module InfoMemberPrinting = match methInfo with | DefaultStructCtor _ -> let prettyTyparInst, _ = PrettyTypes.PrettifyInst amap.g typarInst - prettyTyparInst, PrintTypes.layoutTyconRefUse denv methInfo.ApparentEnclosingTyconRef ^^ wordL (tagPunctuation "()") + let resL = PrintTypes.layoutTyconRef denv methInfo.ApparentEnclosingTyconRef ^^ wordL (tagPunctuation "()") + prettyTyparInst, resL | FSMeth(_, _, vref, _) -> let prettyTyparInst, resL = PrintTastMemberOrVals.prettyLayoutOfValOrMember { denv with showMemberContainers=true } infoReader typarInst vref prettyTyparInst, resL @@ -1510,10 +1534,11 @@ module InfoMemberPrinting = //------------------------------------------------------------------------- /// Printing TAST objects -module private TastDefinitionPrinting = +module TastDefinitionPrinting = open PrintTypes let layoutExtensionMember denv infoReader (vref: ValRef) = + let (@@*) = if denv.printVerboseSignatures then (@@----) else (@@--) let tycon = vref.MemberApparentEntity.Deref let nameL = ConvertNameToDisplayLayout (tagMethod >> mkNav vref.DefinitionRange >> wordL) tycon.DisplayNameCore let nameL = layoutAccessibility denv tycon.Accessibility nameL // "type-accessibility" @@ -1523,26 +1548,30 @@ module private TastDefinitionPrinting = | None -> [] let lhsL = WordL.keywordType ^^ layoutTyparDecls denv nameL tycon.IsPrefixDisplay tps let memberL = PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader vref - (lhsL ^^ WordL.keywordWith) @@-- memberL + (lhsL ^^ WordL.keywordWith) @@* memberL let layoutExtensionMembers denv infoReader vs = aboveListL (List.map (layoutExtensionMember denv infoReader) vs) - let layoutRecdField addAccess denv infoReader (enclosingTcref: TyconRef) (fld: RecdField) = + let layoutRecdField prefix isClassDecl denv infoReader (enclosingTcref: TyconRef) (fld: RecdField) = let lhs = ConvertNameToDisplayLayout (tagRecordField >> mkNav fld.DefinitionRange >> wordL) fld.DisplayNameCore - let lhs = (if addAccess then layoutAccessibility denv fld.Accessibility lhs else lhs) + let lhs = (if isClassDecl then layoutAccessibility denv fld.Accessibility lhs else lhs) let lhs = if fld.IsMutable then wordL (tagKeyword "mutable") --- lhs else lhs let fieldL = (lhs |> addColonL) --- layoutType denv fld.FormalType + let fieldL = prefix fieldL + let fieldL = fieldL |> layoutAttribs denv None false TyparKind.Type (fld.FieldAttribs @ fld.PropertyAttribs) // The enclosing TyconRef might be a union and we can only get fields from union cases, so we need ignore unions here. if not enclosingTcref.IsUnionTycon then - layoutXmlDocOfRecdFieldRef denv infoReader (RecdFieldRef(enclosingTcref, fld.Id.idText)) fieldL + layoutXmlDocOfRecdField denv infoReader isClassDecl (RecdFieldRef(enclosingTcref, fld.Id.idText)) fieldL else fieldL let layoutUnionOrExceptionField denv infoReader isGenerated enclosingTcref i (fld: RecdField) = - if isGenerated i fld then layoutTypeWithInfoAndPrec denv SimplifyTypes.typeSimplificationInfo0 2 fld.FormalType - else layoutRecdField false denv infoReader enclosingTcref fld + if isGenerated i fld then + layoutTypeWithInfoAndPrec denv SimplifyTypes.typeSimplificationInfo0 2 fld.FormalType + else + layoutRecdField id false denv infoReader enclosingTcref fld let isGeneratedUnionCaseField pos (f: RecdField) = if pos < 0 then f.LogicalName = "Item" @@ -1553,7 +1582,8 @@ module private TastDefinitionPrinting = let layoutUnionCaseFields denv infoReader isUnionCase enclosingTcref fields = match fields with - | [f] when isUnionCase -> layoutUnionOrExceptionField denv infoReader isGeneratedUnionCaseField enclosingTcref -1 f + | [f] when isUnionCase -> + layoutUnionOrExceptionField denv infoReader isGeneratedUnionCaseField enclosingTcref -1 f | _ -> let isGenerated = if isUnionCase then isGeneratedUnionCaseField else isGeneratedExceptionField sepListL WordL.star (List.mapi (layoutUnionOrExceptionField denv infoReader isGenerated enclosingTcref) fields) @@ -1565,7 +1595,7 @@ module private TastDefinitionPrinting = match ucase.RecdFields with | [] -> (prefixL ^^ nmL) | fields -> (prefixL ^^ nmL ^^ WordL.keywordOf) --- layoutUnionCaseFields denv infoReader true enclosingTcref fields - layoutXmlDocOfUnionCaseRef denv infoReader (UnionCaseRef(enclosingTcref, ucase.Id.idText)) caseL + layoutXmlDocOfUnionCase denv infoReader (UnionCaseRef(enclosingTcref, ucase.Id.idText)) caseL let layoutUnionCases denv infoReader enclosingTcref ucases = let prefixL = WordL.bar // See bug://2964 - always prefix in case preceded by accessibility modifier @@ -1589,14 +1619,14 @@ module private TastDefinitionPrinting = #endif | TNoRepr -> false - let private layoutILFieldInfo denv (infoReader: InfoReader) m (finfo: ILFieldInfo) = + let layoutILFieldInfo denv (infoReader: InfoReader) m (finfo: ILFieldInfo) = let staticL = if finfo.IsStatic then WordL.keywordStatic else emptyL let nameL = ConvertNameToDisplayLayout (tagField >> wordL) finfo.FieldName let typL = layoutType denv (finfo.FieldType(infoReader.amap, m)) let fieldL = staticL ^^ WordL.keywordVal ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfILFieldInfo denv infoReader finfo fieldL - let private layoutEventInfo denv (infoReader: InfoReader) m (einfo: EventInfo) = + let layoutEventInfo denv (infoReader: InfoReader) m (einfo: EventInfo) = let amap = infoReader.amap let staticL = if einfo.IsStatic then WordL.keywordStatic else emptyL let nameL = ConvertValNameToDisplayLayout false (tagEvent >> tagNavArbValRef einfo.ArbitraryValRef >> wordL) einfo.EventName @@ -1604,7 +1634,7 @@ module private TastDefinitionPrinting = let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfEventInfo denv infoReader einfo overallL - let private layoutPropInfo denv (infoReader: InfoReader) m (pinfo: PropInfo) = + let layoutPropInfo denv (infoReader: InfoReader) m (pinfo: PropInfo) = let amap = infoReader.amap match pinfo.ArbitraryValRef with @@ -1625,8 +1655,13 @@ module private TastDefinitionPrinting = let layoutTyconDefn (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified typewordL (tcref: TyconRef) = let g = denv.g + // use 4-indent + let (-*) = if denv.printVerboseSignatures then (-----) else (---) + let (@@*) = if denv.printVerboseSignatures then (@@----) else (@@--) let amap = infoReader.amap let tycon = tcref.Deref + let repr = tycon.TypeReprInfo + let isMeasure = (tycon.TypeOrMeasureKind = TyparKind.Measure) let _, ty = generalizeTyconRef tcref let start, tagger = @@ -1640,6 +1675,8 @@ module private TastDefinitionPrinting = Some "interface", tagInterface else None, tagInterface + elif isMeasure then + None, tagClass elif isClassTy g ty then if denv.printVerboseSignatures then (if simplified then None else Some "class"), tagClass @@ -1658,7 +1695,6 @@ module private TastDefinitionPrinting = let tpsL = layoutTyparDecls denv nameL tycon.IsPrefixDisplay tps typewordL ^^ tpsL - let start = Option.map tagKeyword start let sortKey (v: MethInfo) = (not v.IsConstructor, @@ -1678,16 +1714,19 @@ module private TastDefinitionPrinting = GetIntrinsicConstructorInfosOfType infoReader m ty |> List.filter (fun v -> IsMethInfoAccessible amap m ad v && not v.IsClassConstructor && shouldShow v.ArbitraryValRef) - let iimplsLs = + let iimpls = if suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty then [] elif isRecdTy g ty || isUnionTy g ty || tycon.IsStructOrEnumTycon then tycon.ImmediateInterfacesOfFSharpTycon |> List.filter (fun (_, compgen, _) -> not compgen) - |> List.map (fun (ty, _, _) -> wordL (tagKeyword "interface") --- layoutType denv ty) + |> List.map p13 else GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g amap m ty - |> List.map (fun ity -> wordL (tagKeyword (if isInterfaceTy g ty then "inherit" else "interface")) --- layoutType denv ity) + + let iimplsLs = + iimpls + |> List.map (fun ity -> wordL (tagKeyword (if isInterfaceTy g ty then "inherit" else "interface")) -* layoutType denv ity) let props = GetImmediateIntrinsicPropInfosOfType (None, ad) g amap m ty @@ -1749,27 +1788,33 @@ module private TastDefinitionPrinting = |> List.sortBy fst |> List.map snd - let fieldLs = + let ilFieldsL = ilFields |> List.map (fun x -> (true, x.IsStatic, x.FieldName, 0, 0), layoutILFieldInfo denv infoReader m x) |> List.sortBy fst |> List.map snd - let staticValsLs = + let staticVals = if isRecdTy g ty then [] else tycon.TrueFieldsAsList |> List.filter (fun f -> IsAccessible ad f.Accessibility && f.IsStatic && not (isDiscard f.DisplayNameCore)) - |> List.map (fun f -> WordL.keywordStatic ^^ WordL.keywordVal ^^ layoutRecdField true denv infoReader tcref f) - let instanceValsLs = + let staticValLs = + staticVals + |> List.map (fun f -> layoutRecdField (fun l -> WordL.keywordStatic ^^ WordL.keywordVal ^^ l) true denv infoReader tcref f) + + let instanceVals = if isRecdTy g ty then [] else tycon.TrueInstanceFieldsAsList |> List.filter (fun f -> IsAccessible ad f.Accessibility && not (isDiscard f.DisplayNameCore)) - |> List.map (fun f -> WordL.keywordVal ^^ layoutRecdField true denv infoReader tcref f) + + let instanceValLs = + instanceVals + |> List.map (fun f -> layoutRecdField (fun l -> WordL.keywordVal ^^ l) true denv infoReader tcref f) let propLs = props @@ -1802,16 +1847,44 @@ module private TastDefinitionPrinting = [] let inherits = - if suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty then - [] - else + [ if not (suppressInheritanceAndInterfacesForTyInSimplifiedDisplays g amap m ty) then match GetSuperTypeOfType g amap m ty with | Some super when not (isObjTy g super) && not (isValueTypeTy g super) -> - [wordL (tagKeyword "inherit") ^^ (layoutType denv super)] - | _ -> [] - - let allDecls = inherits @ iimplsLs @ ctorLs @ instanceValsLs @ methLs @ fieldLs @ propLs @ eventLs @ staticValsLs @ nestedTypeLs - + super + | _ -> () + ] + + let inheritsL = + inherits + |> List.map (fun super -> wordL (tagKeyword "inherit") ^^ (layoutType denv super)) + + let allDecls = inheritsL @ iimplsLs @ ctorLs @ instanceValLs @ methLs @ ilFieldsL @ propLs @ eventLs @ staticValLs @ nestedTypeLs + + let needsStartEnd = + match start with + | Some "class" -> + // 'inherits' is not enough for F# type kind inference to infer a class + // inherits.IsEmpty && + ilFields.IsEmpty && + // 'abstract' is not enough for F# type kind inference to infer a class by default in signatures + // 'static member' is surprisingly not enough for F# type kind inference to infer a class by default in signatures + // 'overrides' is surprisingly not enough for F# type kind inference to infer a class by default in signatures + //(meths |> List.forall (fun m -> m.IsAbstract || m.IsDefiniteFSharpOverride || not m.IsInstance)) && + //(props |> List.forall (fun m -> (not m.HasGetter || m.GetterMethod.IsAbstract))) && + //(props |> List.forall (fun m -> (not m.HasSetter || m.SetterMethod.IsAbstract))) && + ctors.IsEmpty && + instanceVals.IsEmpty && + staticVals.IsEmpty + | Some "struct" -> + true + | Some "interface" -> + meths.IsEmpty && + props.IsEmpty + | _ -> + false + + let start = if needsStartEnd then start else None + let addMaxMembers reprL = if isNil allDecls then reprL @@ -1819,21 +1892,15 @@ module private TastDefinitionPrinting = let memberLs = applyMaxMembers denv.maxMembers allDecls reprL @@ aboveListL memberLs - let repr = tycon.TypeReprInfo - - let addReprAccessL l = layoutAccessibility denv tycon.TypeReprAccessibility l - - let addStartEnd declsL = - match start with - | Some s -> (wordL s @@-- declsL) @@ WordL.keywordEnd - | None -> declsL + let addReprAccessL l = + layoutAccessibility denv tycon.TypeReprAccessibility l let addLhs rhsL = let brk = not (isNil allDecls) || breakTypeDefnEqn repr if brk then - (lhsL ^^ WordL.equals) @@-- rhsL + (lhsL ^^ WordL.equals) @@* rhsL else - (lhsL ^^ WordL.equals) --- rhsL + (lhsL ^^ WordL.equals) -* rhsL let typeDeclL = @@ -1866,7 +1933,7 @@ module private TastDefinitionPrinting = members |> List.exists (fun m -> not m.XmlDoc.IsEmpty) tycon.TrueFieldsAsList - |> List.map (layoutRecdField false denv infoReader tcref) + |> List.map (layoutRecdField id false denv infoReader tcref) |> applyMaxMembers denv.maxMembers |> aboveListL |> (if useMultiLine then braceMultiLineL else braceL) @@ -1887,10 +1954,14 @@ module private TastDefinitionPrinting = | TFSharpObjectRepr { fsobjmodel_kind = TFSharpDelegate slotSig } -> let (TSlotSig(_, _, _, _, paraml, rty)) = slotSig let rty = GetFSharpViewOfReturnType denv.g rty - let delegateL = WordL.keywordDelegate ^^ WordL.keywordOf --- layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) rty [] + let delegateL = WordL.keywordDelegate ^^ WordL.keywordOf -* layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) rty [] delegateL |> addLhs + // Measure declarations are '[] type kg' unless abbreviations + | TFSharpObjectRepr _ when isMeasure -> + lhsL + | TFSharpObjectRepr { fsobjmodel_kind = TFSharpEnum } -> tycon.TrueFieldsAsList |> List.map (fun f -> @@ -1904,14 +1975,13 @@ module private TastDefinitionPrinting = |> aboveListL |> addLhs - | TFSharpObjectRepr _ when isNil allDecls && start.IsNone -> + | TFSharpObjectRepr _ when isNil allDecls -> lhsL | TFSharpObjectRepr _ -> allDecls |> applyMaxMembers denv.maxMembers |> aboveListL - |> addStartEnd |> addLhs | TAsmRepr _ -> @@ -1935,12 +2005,11 @@ module private TastDefinitionPrinting = allDecls |> applyMaxMembers denv.maxMembers |> aboveListL - |> addStartEnd |> addLhs | TNoRepr when tycon.TypeAbbrev.IsSome -> let abbreviatedType = tycon.TypeAbbrev.Value - (lhsL ^^ WordL.equals) --- (layoutType { denv with shortTypeNames = false } abbreviatedType) + (lhsL ^^ WordL.equals) -* (layoutType { denv with shortTypeNames = false } abbreviatedType) | _ when isNil allDecls -> lhsL @@ -1953,27 +2022,29 @@ module private TastDefinitionPrinting = |> aboveListL |> addLhs - let attribsL = layoutAttribs denv false false ty tycon.TypeOrMeasureKind tycon.Attribs typeDeclL - layoutXmlDocOfEntityRef denv infoReader tcref attribsL + typeDeclL + |> layoutAttribs denv start false tycon.TypeOrMeasureKind tycon.Attribs + |> layoutXmlDocOfEntity denv infoReader tcref // Layout: exception definition let layoutExnDefn denv infoReader (exncref: EntityRef) = + let (-*) = if denv.printVerboseSignatures then (-----) else (---) let exnc = exncref.Deref let nameL = ConvertNameToDisplayLayout (tagClass >> mkNav exncref.DefinitionRange >> wordL) exnc.DisplayNameCore let nameL = layoutAccessibility denv exnc.TypeReprAccessibility nameL let exnL = wordL (tagKeyword "exception") ^^ nameL // need to tack on the Exception at the right of the name for goto definition let reprL = match exnc.ExceptionInfo with - | TExnAbbrevRepr ecref -> WordL.equals --- layoutTyconRefUse denv ecref - | TExnAsmRepr _ -> WordL.equals --- wordL (tagText "(# ... #)") + | TExnAbbrevRepr ecref -> WordL.equals -* layoutTyconRef denv ecref + | TExnAsmRepr _ -> WordL.equals -* wordL (tagText "(# ... #)") | TExnNone -> emptyL | TExnFresh r -> match r.TrueFieldsAsList with | [] -> emptyL - | r -> WordL.keywordOf --- layoutUnionCaseFields denv infoReader false exncref r + | r -> WordL.keywordOf -* layoutUnionCaseFields denv infoReader false exncref r let overallL = exnL ^^ reprL - layoutXmlDocOfEntityRef denv infoReader exncref overallL + layoutXmlDocOfEntity denv infoReader exncref overallL // Layout: module spec @@ -1986,16 +2057,18 @@ module private TastDefinitionPrinting = let xs = List.map (mkLocalEntityRef >> layoutTyconDefn denv infoReader ad m false (wordL (tagKeyword "and"))) t aboveListL (x :: xs) - let rec layoutModuleOrNamespace (denv: DisplayEnv) (infoReader: InfoReader) ad m isFirstTopLevel (mspec: ModuleOrNamespace) = - let rec fullPath (mspec: ModuleOrNamespace) acc = - if mspec.IsNamespace then - match mspec.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions |> List.tryHead with - | Some next when next.IsNamespace -> - fullPath next (acc @ [next.DisplayNameCore]) - | _ -> - acc, mspec - else + let rec fullPath (mspec: ModuleOrNamespace) acc = + if mspec.IsNamespace then + match mspec.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions |> List.tryHead with + | Some next when next.IsNamespace -> + fullPath next (acc @ [next.DisplayNameCore]) + | _ -> acc, mspec + else + acc, mspec + + let rec layoutModuleOrNamespace (denv: DisplayEnv) (infoReader: InfoReader) ad m isFirstTopLevel (mspec: ModuleOrNamespace) = + let (@@*) = if denv.printVerboseSignatures then (@@----) else (@@--) let outerPath = mspec.CompilationPath.AccessPath @@ -2042,7 +2115,7 @@ module private TastDefinitionPrinting = modNameEqualsL let headerL = - layoutAttribs denv false false (generalizedTyconRef (mkLocalEntityRef mspec)) mspec.TypeOrMeasureKind mspec.Attribs headerL + layoutAttribs denv None false mspec.TypeOrMeasureKind mspec.Attribs headerL let shouldShow (v: Val) = (denv.showObsoleteMembers || not (CheckFSharpAttributesForObsolete denv.g v.Attribs)) && @@ -2053,7 +2126,7 @@ module private TastDefinitionPrinting = else mspec.ModuleOrNamespaceType.AllEntities |> QueueList.toList - |> List.map (fun entity -> layoutEntityRef denv infoReader ad m (mkLocalEntityRef entity)) + |> List.map (fun entity -> layoutEntityDefn denv infoReader ad m (mkLocalEntityRef entity)) let valLs = if mspec.IsNamespace then [] @@ -2083,12 +2156,12 @@ module private TastDefinitionPrinting = valsL ] else - headerL @@---- entitiesL @@ valsL + headerL @@* entitiesL @@ valsL - and layoutEntityRef (denv: DisplayEnv) (infoReader: InfoReader) ad m (eref: EntityRef) = + and layoutEntityDefn (denv: DisplayEnv) (infoReader: InfoReader) ad m (eref: EntityRef) = if eref.IsModuleOrNamespace then layoutModuleOrNamespace denv infoReader ad m false eref.Deref - |> layoutXmlDocOfEntityRef denv infoReader eref + |> layoutXmlDocOfEntity denv infoReader eref elif eref.IsExceptionDecl then layoutExnDefn denv infoReader eref else @@ -2096,12 +2169,13 @@ module private TastDefinitionPrinting = //-------------------------------------------------------------------------- -module private InferredSigPrinting = +module InferredSigPrinting = open PrintTypes /// Layout the inferred signature of a compilation unit let layoutInferredSigOfModuleExpr showHeader denv infoReader ad m expr = + let (@@*) = if denv.printVerboseSignatures then (@@----) else (@@--) let rec isConcreteNamespace x = match x with | TMDefRec(_, _opens, tycons, mbinds, _) -> @@ -2174,13 +2248,13 @@ module private InferredSigPrinting = // This is a container namespace. We print the header when we get to the first concrete module. let headerL = wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL - headerL @@-- basic + headerL @@* basic else // This is a namespace that only contains namespaces. Skip the header basic // NOTE: explicitly not calling `layoutXmlDoc` here, because even though // `ModuleOrNamespace` has a field for XmlDoc, it is never present at the parser - // level. This should be changed if the parser/spec changes. + // level for namespaces. This should be changed if the parser/spec changes. basicL else // This is a module @@ -2206,30 +2280,30 @@ module private InferredSigPrinting = // We already printed the namespace declaration earlier. So just print the // module now. if isEmptyL basic then - ((modNameEqualsL ^^ wordL (tagKeyword "begin")) @@-- basic) @@ WordL.keywordEnd + modNameEqualsL ^^ WordL.keywordBegin ^^ WordL.keywordEnd else - modNameEqualsL @@-- basic + modNameEqualsL @@* basic else // OK, we're in F# Interactive, presumably the implicit module for each interaction. basic else // OK, this is a nested module, with indentation if isEmptyL basic then - ((modNameEqualsL ^^ wordL (tagKeyword"begin")) @@-- basic) @@ WordL.keywordEnd + ((modNameEqualsL ^^ wordL (tagKeyword"begin")) @@* basic) @@ WordL.keywordEnd else - modNameEqualsL @@-- basic - layoutXmlDoc denv mspec.XmlDoc basicL + modNameEqualsL @@* basic + layoutXmlDoc denv true mspec.XmlDoc basicL imexprL denv expr //-------------------------------------------------------------------------- -module private PrintData = +module PrintData = open PrintTypes /// Nice printing of a subset of expressions, e.g. for refutations in pattern matching let rec dataExprL denv expr = dataExprWrapL denv false expr - and private dataExprWrapL denv isAtomic expr = + and dataExprWrapL denv isAtomic expr = match expr with | Expr.Const (c, _, ty) -> if isEnumTy denv.g ty then @@ -2265,7 +2339,7 @@ module private PrintData = braceL (semiListL (List.map2 lay fields xs)) | Expr.Op (TOp.ValFieldGet (RecdFieldRef.RecdFieldRef (tcref, name)), _, _, _) -> - (layoutTyconRefUse denv tcref) ^^ sepL (tagPunctuation ".") ^^ wordL (tagField name) + (layoutTyconRef denv tcref) ^^ sepL (tagPunctuation ".") ^^ wordL (tagField name) | Expr.Op (TOp.Array, [_], xs, _) -> leftL (tagPunctuation "[|") ^^ semiListL (dataExprsL denv xs) ^^ RightL.rightBracketBar @@ -2273,7 +2347,7 @@ module private PrintData = | _ -> wordL (tagPunctuation "?") - and private dataExprsL denv xs = List.map (dataExprL denv) xs + and dataExprsL denv xs = List.map (dataExprL denv) xs let dataExprL denv expr = PrintData.dataExprL denv expr @@ -2322,9 +2396,9 @@ let layoutExnDef denv infoReader x = x |> TastDefinitionPrinting.layoutExnDefn d let stringOfTyparConstraints denv x = x |> PrintTypes.layoutConstraintsWithInfo denv SimplifyTypes.typeSimplificationInfo0 |> showL -let layoutTycon denv infoReader ad m (* width *) x = TastDefinitionPrinting.layoutTyconDefn denv infoReader ad m true WordL.keywordType (mkLocalEntityRef x) (* |> Display.squashTo width *) +let layoutTyconDefn denv infoReader ad m (* width *) x = TastDefinitionPrinting.layoutTyconDefn denv infoReader ad m true WordL.keywordType (mkLocalEntityRef x) (* |> Display.squashTo width *) -let layoutEntityRef denv infoReader ad m x = TastDefinitionPrinting.layoutEntityRef denv infoReader ad m x +let layoutEntityDefn denv infoReader ad m x = TastDefinitionPrinting.layoutEntityDefn denv infoReader ad m x let layoutUnionCases denv infoReader enclosingTcref x = x |> TastDefinitionPrinting.layoutUnionCaseFields denv infoReader true enclosingTcref @@ -2345,7 +2419,7 @@ let prettyStringOfTy denv x = x |> PrintTypes.prettyLayoutOfType denv |> showL let prettyStringOfTyNoCx denv x = x |> PrintTypes.prettyLayoutOfTypeNoConstraints denv |> showL -let stringOfRecdField denv infoReader enclosingTcref x = x |> TastDefinitionPrinting.layoutRecdField false denv infoReader enclosingTcref |> showL +let stringOfRecdField denv infoReader enclosingTcref x = x |> TastDefinitionPrinting.layoutRecdField id false denv infoReader enclosingTcref |> showL let stringOfUnionCase denv infoReader enclosingTcref x = x |> TastDefinitionPrinting.layoutUnionCase denv infoReader WordL.bar enclosingTcref |> showL diff --git a/src/fsharp/NicePrint.fsi b/src/fsharp/NicePrint.fsi index 303770e5a2f..5726a7f229b 100644 --- a/src/fsharp/NicePrint.fsi +++ b/src/fsharp/NicePrint.fsi @@ -69,9 +69,9 @@ val layoutExnDef: denv:DisplayEnv -> infoReader:InfoReader -> x:EntityRef -> Lay val stringOfTyparConstraints: denv:DisplayEnv -> x:(Typar * TyparConstraint) list -> string -val layoutTycon: denv:DisplayEnv -> infoReader:InfoReader -> ad:AccessorDomain -> m:range -> x:Tycon -> Layout +val layoutTyconDefn: denv:DisplayEnv -> infoReader:InfoReader -> ad:AccessorDomain -> m:range -> x:Tycon -> Layout -val layoutEntityRef: denv:DisplayEnv -> infoReader:InfoReader -> ad:AccessorDomain -> m:range -> x:EntityRef -> Layout +val layoutEntityDefn: denv:DisplayEnv -> infoReader:InfoReader -> ad:AccessorDomain -> m:range -> x:EntityRef -> Layout val layoutUnionCases: denv:DisplayEnv -> infoReader:InfoReader -> enclosingTcref:TyconRef -> x:RecdField list -> Layout diff --git a/src/fsharp/OptimizeInputs.fs b/src/fsharp/OptimizeInputs.fs index 5c6225e8d34..3cccaeef042 100644 --- a/src/fsharp/OptimizeInputs.fs +++ b/src/fsharp/OptimizeInputs.fs @@ -26,7 +26,7 @@ let PrintWholeAssemblyImplementation g (tcConfig:TcConfig) outfile header expr = if tcConfig.showTerms then if tcConfig.writeTermsToFiles then let filename = outfile + ".terms" - use f = FileSystem.OpenFileForWriteShim(filename + "-" + string showTermFileCount + "-" + header, FileMode.OpenOrCreate).GetWriter() + use f = FileSystem.OpenFileForWriteShim(filename + "-" + string showTermFileCount + "-" + header, FileMode.Create).GetWriter() showTermFileCount <- showTermFileCount + 1 LayoutRender.outL f (Display.squashTo 192 (DebugPrint.implFilesL g expr)) else diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index 3cdda3e8a27..a0c50c3d395 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -208,7 +208,6 @@ let keywordsWithDescription : (string * string) list = "rec", FSComp.SR.keywordDescriptionRec() "return", FSComp.SR.keywordDescriptionReturn() "return!", FSComp.SR.keywordDescriptionReturnBang() - "select", FSComp.SR.keywordDescriptionSelect() "static", FSComp.SR.keywordDescriptionStatic() "struct", FSComp.SR.keywordDescriptionStruct() "then", FSComp.SR.keywordDescriptionThen() @@ -321,9 +320,10 @@ let IsOperatorDisplayName (name: string) = //IsOperatorDisplayName "(::)" //IsOperatorDisplayName "::" //IsOperatorDisplayName "([])" -//IsOperatorDisplayName "( * )" -//IsOperatorDisplayName "( )" -//IsOperatorDisplayName "( +)" +//IsOperatorDisplayName "(*)" +//IsOperatorDisplayName "( ** )" +//IsOperatorDisplayName "( )" // false +//IsOperatorDisplayName "( +)" // false let IsMangledOpName (name: string) = name.StartsWithOrdinal(opNamePrefix) @@ -507,7 +507,7 @@ let ConvertValNameToDisplayName isBaseVal name = if IsMangledOpName name && (nm = name) then AddBackticksToIdentifierIfNeeded nm // Add parentheses for multiply-like symbols, with spacing to avoid confusion with comments - elif nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*" then + elif nm <> "*" && (nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*") then "( " + nm + " )" // Add parentheses for other symbols, no spacing else diff --git a/src/fsharp/TextLayoutRender.fs b/src/fsharp/TextLayoutRender.fs index 2d84f711727..f042b1fdc64 100644 --- a/src/fsharp/TextLayoutRender.fs +++ b/src/fsharp/TextLayoutRender.fs @@ -46,6 +46,7 @@ module WordL = let bar = wordL TaggedText.bar let keywordStruct = wordL TaggedText.keywordStruct let keywordInherit = wordL TaggedText.keywordInherit + let keywordBegin = wordL TaggedText.keywordBegin let keywordEnd = wordL TaggedText.keywordEnd let keywordNested = wordL TaggedText.keywordNested let keywordType = wordL TaggedText.keywordType diff --git a/src/fsharp/TextLayoutRender.fsi b/src/fsharp/TextLayoutRender.fsi index aa313c380ad..f2d71063e8a 100644 --- a/src/fsharp/TextLayoutRender.fsi +++ b/src/fsharp/TextLayoutRender.fsi @@ -85,6 +85,7 @@ module internal WordL = val bar: Layout val keywordStruct: Layout val keywordInherit: Layout + val keywordBegin: Layout val keywordEnd: Layout val keywordNested: Layout val keywordType: Layout diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index 62ed23908e3..30a45c03b4d 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -664,26 +664,19 @@ type Entity = /// Backticks are added implicitly for entities with non-identifier names member x.DisplayName = x.GetDisplayName(coreName=false) - /// The display name of the namespace, module or type with <'T, 'U, 'V> added for generic types, plus static parameters if any - /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. - /// - /// Backticks are added implicitly for entities with non-identifier names - member x.DisplayNameWithStaticParametersAndTypars = - x.GetDisplayName(coreName=false, withStaticParameters=true, withTypars=true, withUnderscoreTypars=false) - /// The display name of the namespace, module or type with <_, _, _> added for generic types, plus static parameters if any /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. /// /// Backticks are added implicitly for entities with non-identifier names member x.DisplayNameWithStaticParametersAndUnderscoreTypars = - x.GetDisplayName(coreName=false, withStaticParameters=true, withTypars=false, withUnderscoreTypars=true) + x.GetDisplayName(coreName=false, withStaticParameters=true, withUnderscoreTypars=true) /// The display name of the namespace, module or type, e.g. List instead of List`1, including static parameters if any /// For modules the Module suffix is removed if FSharpModuleWithSuffix is used. /// /// Backticks are added implicitly for entities with non-identifier names member x.DisplayNameWithStaticParameters = - x.GetDisplayName(coreName=false, withStaticParameters=true, withTypars=false, withUnderscoreTypars=false) + x.GetDisplayName(coreName=false, withStaticParameters=true, withUnderscoreTypars=false) #if !NO_EXTENSIONTYPING member x.IsStaticInstantiationTycon = @@ -692,39 +685,32 @@ type Entity = args.Length > 0 #endif - member x.GetDisplayName(coreName, ?withStaticParameters, ?withTypars, ?withUnderscoreTypars) = + member x.GetDisplayName(coreName, ?withStaticParameters, ?withUnderscoreTypars) = let withStaticParameters = defaultArg withStaticParameters false - let withTypars = defaultArg withTypars false let withUnderscoreTypars = defaultArg withUnderscoreTypars false let nm = x.LogicalName - if x.IsModuleOrNamespace then x.DemangledModuleOrNamespaceName else - - let getName () = - match x.TyparsNoRange with - | [] -> nm - | tps -> - let nm = DemangleGenericTypeName nm - let nm = if coreName then nm else ConvertNameToDisplayName nm - if (withUnderscoreTypars || withTypars) && not (List.isEmpty tps) then - let typearNames = tps |> List.map (fun typar -> if withUnderscoreTypars then "_" else typar.Name) - nm + "<" + String.concat "," typearNames + ">" - else - nm - + if x.IsModuleOrNamespace then x.DemangledModuleOrNamespaceName #if !NO_EXTENSIONTYPING - if x.IsProvidedErasedTycon then + elif x.IsProvidedErasedTycon then let nm, args = demangleProvidedTypeName nm if withStaticParameters && args.Length > 0 then nm + "<" + String.concat "," (Array.map snd args) + ">" else nm - else - getName () -#else - ignore withStaticParameters - getName () #endif - + else + ignore withStaticParameters + match x.TyparsNoRange with + | [] -> nm + | tps -> + let nm = DemangleGenericTypeName nm + let isArray = nm.StartsWithOrdinal("[") && nm.EndsWithOrdinal("]") + let nm = if coreName || isArray then nm else ConvertNameToDisplayName nm + if withUnderscoreTypars then + let typarNames = tps |> List.map (fun _ -> "_") + nm + "<" + String.concat "," typarNames + ">" + else + nm /// The code location where the module, namespace or type is defined. member x.Range = @@ -3385,11 +3371,6 @@ type EntityRef = /// Backticks are added implicitly for entities with non-identifier names member x.DisplayName = x.Deref.DisplayName - /// The display name of the namespace, module or type with <'T, 'U, 'V> added for generic types, including static parameters - /// - /// Backticks are added implicitly for entities with non-identifier names - member x.DisplayNameWithStaticParametersAndTypars = x.Deref.DisplayNameWithStaticParametersAndTypars - /// The display name of the namespace, module or type with <_, _, _> added for generic types, including static parameters /// /// Backticks are added implicitly for entities with non-identifier names diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index c229a02aa1a..0bf7559560c 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -8215,13 +8215,8 @@ let rec typeEnc g (gtpsType, gtpsMethod) ty = | _ when isArrayTy g ty -> let tcref, tinst = destAppTy g ty - let arraySuffix = - match rankOfArrayTyconRef g tcref with - | 1 -> "[]" - | 2 -> "[0:, 0:]" - | 3 -> "[0:, 0:, 0:]" - | 4 -> "[0:, 0:, 0:, 0:]" - | _ -> failwith "impossible: rankOfArrayTyconRef: unsupported array rank" + let rank = rankOfArrayTyconRef g tcref + let arraySuffix = "[" + String.concat ", " (List.replicate (rank-1) "0:") + "]" typeEnc g (gtpsType, gtpsMethod) (List.head tinst) + arraySuffix | TType_ucase (_, tinst) diff --git a/src/fsharp/fsc.fs b/src/fsharp/fsc.fs index 52d6ae9fdfe..54edda22d2e 100644 --- a/src/fsharp/fsc.fs +++ b/src/fsharp/fsc.fs @@ -330,7 +330,7 @@ module InterfaceFileWriter = if tcConfig.printSignatureFile = "" then Console.Out else - FileSystem.OpenFileForWriteShim(tcConfig.printSignatureFile, FileMode.OpenOrCreate).GetWriter() + FileSystem.OpenFileForWriteShim(tcConfig.printSignatureFile, FileMode.Create).GetWriter() writeHeader tcConfig.printSignatureFile os @@ -349,7 +349,7 @@ module InterfaceFileWriter = for TImplFile (name, _, _, _, _, _) as impl in declaredImpls do let filename = Path.ChangeExtension(name.Range.FileName, extensionForFile name.Range.FileName) printfn "writing impl file to %s" filename - use os = FileSystem.OpenFileForWriteShim(filename, FileMode.OpenOrCreate).GetWriter() + use os = FileSystem.OpenFileForWriteShim(filename, FileMode.Create).GetWriter() writeHeader filename os writeToFile os impl diff --git a/src/fsharp/service/ServiceDeclarationLists.fs b/src/fsharp/service/ServiceDeclarationLists.fs index 7959cd2a63b..3ea07d55545 100644 --- a/src/fsharp/service/ServiceDeclarationLists.fs +++ b/src/fsharp/service/ServiceDeclarationLists.fs @@ -372,7 +372,7 @@ module DeclarationListHelpers = // on types/members. The doc comments for the actual member will still // be shown in the tip. showDocumentation = false } - let layout = NicePrint.layoutTycon denv infoReader ad m (* width *) tcref.Deref + let layout = NicePrint.layoutTyconDefn denv infoReader ad m (* width *) tcref.Deref let remarks = OutputFullName isListItem pubpathOfTyconRef fullDisplayTextOfTyconRefAsLayout tcref let layout = toArray layout let remarks = toArray remarks @@ -1033,8 +1033,8 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i textInDeclList, textInCode, items) // Filter out operators, active patterns (as values) - |> List.filter (fun (textInDeclList, _textInCode, items) -> - not (isOperatorItem textInDeclList items) && + |> List.filter (fun (_textInDeclList, textInCode, items) -> + not (isOperatorItem textInCode items) && not (isActivePatternItem items)) |> List.map (fun (textInDeclList, textInCode, itemsWithSameFullName) -> diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs index 6e0ede97a98..2e1817407dd 100644 --- a/src/fsharp/symbols/Symbols.fs +++ b/src/fsharp/symbols/Symbols.fs @@ -489,7 +489,10 @@ type FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = member _.ArrayRank = checkIsResolved() - rankOfArrayTyconRef cenv.g entity + if isArrayTyconRef cenv.g entity then + rankOfArrayTyconRef cenv.g entity + else + 0 #if !NO_EXTENSIONTYPING member _.IsProvided = @@ -891,7 +894,7 @@ type FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = [ (Layout.(^^) headerL (Layout.sepL TaggedText.lineBreak)) (Layout.(^^) openL (Layout.sepL TaggedText.lineBreak)) - (NicePrint.layoutEntityRef denv infoReader AccessibleFromSomewhere range0 entity) + (NicePrint.layoutEntityDefn denv infoReader AccessibleFromSomewhere range0 entity) ] |> LayoutRender.showL |> SourceText.ofString diff --git a/src/fsharp/utils/sformat.fs b/src/fsharp/utils/sformat.fs index 762a313df2a..d8ee767e1f9 100644 --- a/src/fsharp/utils/sformat.fs +++ b/src/fsharp/utils/sformat.fs @@ -226,6 +226,7 @@ module TaggedText = let keywordStruct = tagKeyword "struct" let keywordInherit = tagKeyword "inherit" let keywordEnd = tagKeyword "end" + let keywordBegin = tagKeyword "begin" let keywordNested = tagKeyword "nested" let keywordType = tagKeyword "type" let keywordDelegate = tagKeyword "delegate" diff --git a/src/fsharp/utils/sformat.fsi b/src/fsharp/utils/sformat.fsi index e394bbe9a00..868cafa1b75 100644 --- a/src/fsharp/utils/sformat.fsi +++ b/src/fsharp/utils/sformat.fsi @@ -190,6 +190,7 @@ namespace Microsoft.FSharp.Text.StructuredPrintfImpl val internal bar: TaggedText val internal keywordStruct: TaggedText val internal keywordInherit: TaggedText + val internal keywordBegin: TaggedText val internal keywordEnd: TaggedText val internal keywordNested: TaggedText val internal keywordType: TaggedText diff --git a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs index 30872c7b7cf..7d86ada35e8 100644 --- a/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs +++ b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/SuggestionsTests.fs @@ -103,7 +103,7 @@ type T = System.Collections.Generic.Dictionary |> typecheck |> shouldFail |> withSingleDiagnostic (Error 39, Line 2, Col 48, Line 2, Col 53, - ("The type 'int11' is not defined. Maybe you want one of the following:" + Environment.NewLine + " int16" + Environment.NewLine + " int8" + Environment.NewLine + " uint16" + Environment.NewLine + " int")) + ("The type 'int11' is not defined. Maybe you want one of the following:" + Environment.NewLine + " int16" + Environment.NewLine + " int8" + Environment.NewLine + " uint16" + Environment.NewLine + " int" + Environment.NewLine + " int32")) [] let ``Suggest Methods`` () = 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 f08d6de964e..9253158c2f1 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj @@ -81,6 +81,7 @@ + diff --git a/tests/fsharp/Compiler/Language/FixedIndexSliceTests.fs b/tests/fsharp/Compiler/Language/FixedIndexSliceTests.fs index 8f1c92f4be7..344c5178b18 100644 --- a/tests/fsharp/Compiler/Language/FixedIndexSliceTests.fs +++ b/tests/fsharp/Compiler/Language/FixedIndexSliceTests.fs @@ -22,12 +22,12 @@ arr3.[*, 1, *] arr3.[*, 1, 1] """ [| - FSharpDiagnosticSeverity.Error, 39, (5,1,5,15), "The type '[,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (6,1,6,15), "The type '[,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (7,1,7,15), "The type '[,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (8,1,8,15), "The type '[,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (9,1,9,15), "The type '[,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (10,1,10,15), "The type '[,,]' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (5,1,5,15), "The type '[,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (6,1,6,15), "The type '[,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (7,1,7,15), "The type '[,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (8,1,8,15), "The type '[,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (9,1,9,15), "The type '[,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (10,1,10,15), "The type '[,,]<_>' does not define the field, constructor or member 'GetSlice'." |] [] @@ -52,19 +52,19 @@ arr4.[1, 1, 1, *] arr4.[*, 1, 1, 1] """ [| - FSharpDiagnosticSeverity.Error, 39, (5,1,5,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (6,1,6,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (7,1,7,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (8,1,8,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (9,1,9,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (10,1,10,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (11,1,11,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (12,1,12,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (13,1,13,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (14,1,14,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (15,1,15,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (16,1,16,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." - FSharpDiagnosticSeverity.Error, 39, (17,1,17,18), "The type '[,,,]' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (5,1,5,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (6,1,6,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (7,1,7,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (8,1,8,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (9,1,9,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (10,1,10,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (11,1,11,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (12,1,12,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (13,1,13,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (14,1,14,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (15,1,15,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (16,1,16,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." + FSharpDiagnosticSeverity.Error, 39, (17,1,17,18), "The type '[,,,]<_>' does not define the field, constructor or member 'GetSlice'." |] [] @@ -84,12 +84,12 @@ arr3.[*, 1, *] <- arr1 arr3.[*, 1, 1] <- arr1 """ [| - FSharpDiagnosticSeverity.Error, 39, (7,1,7,15), "The type '[,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (8,1,8,15), "The type '[,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (9,1,9,15), "The type '[,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (10,1,10,15), "The type '[,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (11,1,11,15), "The type '[,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (12,1,12,15), "The type '[,,]' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (7,1,7,15), "The type '[,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (8,1,8,15), "The type '[,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (9,1,9,15), "The type '[,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (10,1,10,15), "The type '[,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (11,1,11,15), "The type '[,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (12,1,12,15), "The type '[,,]<_>' does not define the field, constructor or member 'SetSlice'." |] [] @@ -118,18 +118,18 @@ arr4.[1, 1, 1, *] <- arr1 arr4.[*, 1, 1, 1] <- arr1 """ [| - FSharpDiagnosticSeverity.Error, 39, (8,1,8,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (9,1,9,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (10,1,10,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (11,1,11,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (12,1,12,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (13,1,13,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (14,1,14,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (15,1,15,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (16,1,16,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (17,1,17,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (18,1,18,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (19,1,19,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (20,1,20,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." - FSharpDiagnosticSeverity.Error, 39, (21,1,21,18), "The type '[,,,]' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (8,1,8,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (9,1,9,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (10,1,10,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (11,1,11,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (12,1,12,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (13,1,13,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (14,1,14,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (15,1,15,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (16,1,16,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (17,1,17,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (18,1,18,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (19,1,19,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (20,1,20,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." + FSharpDiagnosticSeverity.Error, 39, (21,1,21,18), "The type '[,,,]<_>' does not define the field, constructor or member 'SetSlice'." |] diff --git a/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl b/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl index d673956c702..4f092ad8b6c 100644 --- a/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl +++ b/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl @@ -31,7 +31,7 @@ Candidates: - member Foo.GetSlice: x1: float option * x2: int option * y: int -> unit - member Foo.GetSlice: x1: int option * x2: int option * y: int -> unit -E_Slices01.fsx(19,9,19,17): typecheck error FS0039: The type 'Foo' does not define the field, constructor or member 'Item'. +E_Slices01.fsx(19,9,19,17): typecheck error FS0039: The type 'Foo<_>' does not define the field, constructor or member 'Item'. E_Slices01.fsx(20,9,20,26): typecheck error FS0503: A member or object constructor 'GetSlice' taking 4 arguments is not accessible from this code location. All accessible versions of method 'GetSlice' take 3 arguments. diff --git a/tests/fsharp/core/auto-widen/preview/test.bsl b/tests/fsharp/core/auto-widen/preview/test.bsl index 1e8383541d0..5b791a6d89a 100644 --- a/tests/fsharp/core/auto-widen/preview/test.bsl +++ b/tests/fsharp/core/auto-widen/preview/test.bsl @@ -635,6 +635,4 @@ test.fsx(543,36,543,37): typecheck error FS0001: All elements of a list must be test.fsx(544,14,544,21): typecheck error FS0039: The type 'float64' is not defined. Maybe you want one of the following: float - float`1 - float32 - float32`1 + float32 \ No newline at end of file diff --git a/tests/fsharp/core/genericmeasures/test.fsx b/tests/fsharp/core/genericmeasures/test.fsx index 374c8e8321e..b7de5c84aaa 100644 --- a/tests/fsharp/core/genericmeasures/test.fsx +++ b/tests/fsharp/core/genericmeasures/test.fsx @@ -5,7 +5,7 @@ module Core_genericMeasures = #endif [] - type C<'T> = class end + type C<'T> = member x.P = 1 [] type t [] type t2 diff --git a/tests/fsharp/core/libtest/test.fsx b/tests/fsharp/core/libtest/test.fsx index f708f50351b..bf58ea27d08 100644 --- a/tests/fsharp/core/libtest/test.fsx +++ b/tests/fsharp/core/libtest/test.fsx @@ -5263,8 +5263,8 @@ module Check1043 = begin (* LBRACKET STAR RBRACKET becomes a valid operator identifier *) let (*) = 12 let x = (*) - let f (*) = 12 + (*) - let x24 = f 12 + let test() = let f (*) = 12 + (*) in f 12 + let x24 = test() end diff --git a/tests/fsharp/core/members/basics/test.fs b/tests/fsharp/core/members/basics/test.fs index 7847133295f..f7978e0d309 100644 --- a/tests/fsharp/core/members/basics/test.fs +++ b/tests/fsharp/core/members/basics/test.fs @@ -3468,7 +3468,12 @@ module AutoProps_2 = begin check "autoprops_262" c61.Property 44 end +module MoreKindInferenceTests = + + type C1<'a> = class member _.Foo(x:'a) = x end + + #if TESTS_AS_APP let RUN() = !failures #else diff --git a/tests/fsharp/single-test.fs b/tests/fsharp/single-test.fs index 32892aded23..68cb5c0f3d6 100644 --- a/tests/fsharp/single-test.fs +++ b/tests/fsharp/single-test.fs @@ -318,7 +318,7 @@ let singleTestBuildAndRunCore cfg copyFiles p languageVersion = | FSI_FILE -> executeSingleTestBuildAndRun OutputType.Script "net40" "net472" true false | FSI_STDIN -> - use cleanup = (cleanUpFSharpCore cfg) + use _cleanup = (cleanUpFSharpCore cfg) use testOkFile = new FileGuard (getfullpath cfg "test.ok") let sources = extraSources |> List.filter (fileExists cfg) @@ -327,7 +327,7 @@ let singleTestBuildAndRunCore cfg copyFiles p languageVersion = testOkFile.CheckExists() | GENERATED_SIGNATURE -> - use cleanup = (cleanUpFSharpCore cfg) + use _cleanup = (cleanUpFSharpCore cfg) let source1 = ["test.ml"; "test.fs"; "test.fsx"] @@ -338,11 +338,9 @@ let singleTestBuildAndRunCore cfg copyFiles p languageVersion = log "Generated signature file..." fsc cfg "%s --sig:tmptest.fsi --define:GENERATED_SIGNATURE" cfg.fsc_flags ["tmptest.fs"] - (if FileSystem.FileExistsShim("FSharp.Core.dll") then log "found fsharp.core.dll after build" else log "found fsharp.core.dll after build") |> ignore log "Compiling against generated signature file..." fsc cfg "%s -o:tmptest1.exe" cfg.fsc_flags ["tmptest.fsi";"tmptest.fs"] - (if FileSystem.FileExistsShim("FSharp.Core.dll") then log "found fsharp.core.dll after build" else log "found fsharp.core.dll after build") |> ignore log "Verifying built .exe..." peverify cfg "tmptest1.exe" @@ -351,7 +349,7 @@ let singleTestBuildAndRunCore cfg copyFiles p languageVersion = // Compile as a DLL to exercise pickling of interface data, then recompile the original source file referencing this DLL // THe second compilation will not utilize the information from the first in any meaningful way, but the // compiler will unpickle the interface and optimization data, so we test unpickling as well. - use cleanup = (cleanUpFSharpCore cfg) + use _cleanup = (cleanUpFSharpCore cfg) use testOkFile = new FileGuard (getfullpath cfg "test.ok") let sources = extraSources |> List.filter (fileExists cfg) diff --git a/tests/fsharp/tests.fs b/tests/fsharp/tests.fs index dd63013392d..f5ff5ca719c 100644 --- a/tests/fsharp/tests.fs +++ b/tests/fsharp/tests.fs @@ -1353,9 +1353,6 @@ module CoreTests = [] let ``libtest-FSI_STDIN`` () = singleTestBuildAndRun "core/libtest" FSI_STDIN - [] - let ``libtest-GENERATED_SIGNATURE`` () = singleTestBuildAndRun "core/libtest" GENERATED_SIGNATURE - [] let ``libtest-FSC_OPT_MINUS_DEBUG`` () = singleTestBuildAndRun "core/libtest" FSC_OPT_MINUS_DEBUG @@ -3224,16 +3221,19 @@ namespace CST.RI.Anshun fileVersionInfo.ProductVersion |> Assert.areEqual expected module GeneratedSignatureTests = + [] + let ``libtest-GENERATED_SIGNATURE`` () = singleTestBuildAndRun "core/libtest" GENERATED_SIGNATURE + [] let ``members-basics-GENERATED_SIGNATURE`` () = singleTestBuildAndRun "core/members/basics" GENERATED_SIGNATURE - [] + [] let ``access-GENERATED_SIGNATURE``() = singleTestBuildAndRun "core/access" GENERATED_SIGNATURE [] let ``array-GENERATED_SIGNATURE``() = singleTestBuildAndRun "core/array" GENERATED_SIGNATURE - [] + [] let ``genericmeasures-GENERATED_SIGNATURE`` () = singleTestBuildAndRun "core/genericmeasures" GENERATED_SIGNATURE [] diff --git a/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll b/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll index 7a4c62cf4c66fc4daa0ca77ffd7b266307971684..7dc9ab96355ef86883407576d8242eb1b7c85aba 100644 GIT binary patch delta 37 qcmZoz!qTvWWkLtDcaP!5?#MQNAf0G(v}ECOSLS9Qd-LZu-fjRHcMnql delta 37 qcmZoz!qTvWWkLrt^8'. -neg20.fs(383,39,383,41): typecheck error FS0039: The type 'OverloadedClassName' does not define the field, constructor or member 'S2'. +neg20.fs(383,39,383,41): typecheck error FS0039: The type 'OverloadedClassName<_>' does not define the field, constructor or member 'S2'. neg20.fs(428,19,428,38): typecheck error FS1133: No constructors are available for the type 'OverloadedClassName<'a,'b>' diff --git a/tests/fsharp/typecheck/sigs/version50/neg20.bsl b/tests/fsharp/typecheck/sigs/version50/neg20.bsl index eaa88baa877..9bc473d3a3b 100644 --- a/tests/fsharp/typecheck/sigs/version50/neg20.bsl +++ b/tests/fsharp/typecheck/sigs/version50/neg20.bsl @@ -408,7 +408,7 @@ neg20.fs(373,22,373,41): typecheck error FS1124: Multiple types exist called 'Ov neg20.fs(382,19,382,40): typecheck error FS1124: Multiple types exist called 'OverloadedClassName', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. 'OverloadedClassName<_>'. -neg20.fs(383,39,383,41): typecheck error FS0039: The type 'OverloadedClassName' does not define the field, constructor or member 'S2'. +neg20.fs(383,39,383,41): typecheck error FS0039: The type 'OverloadedClassName<_>' does not define the field, constructor or member 'S2'. neg20.fs(428,19,428,38): typecheck error FS1133: No constructors are available for the type 'OverloadedClassName<'a,'b>' diff --git a/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_InvalidSelfReferentialStructConstructor.fs b/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_InvalidSelfReferentialStructConstructor.fs index 8529e691ba1..2a74365591c 100644 --- a/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_InvalidSelfReferentialStructConstructor.fs +++ b/tests/fsharpqa/Source/Conformance/Expressions/DataExpressions/ObjectExpressions/E_InvalidSelfReferentialStructConstructor.fs @@ -3,7 +3,7 @@ //Structs may only bind a 'this' parameter at member declarations$ //This is not a valid object construction expression\. Explicit object constructors must either call an alternate constructor or initialize all fields of the object and specify a call to a super class constructor\.$ -//The type 'byref' does not define the field, constructor or member 'dt' +//The type 'byref<_,_>' does not define the field, constructor or member 'dt' module mod6350 diff --git a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict02.fsi b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict02.fsi index a91079fa1f5..f94ece27d76 100644 --- a/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict02.fsi +++ b/tests/fsharpqa/Source/Conformance/Signatures/SignatureConformance/E_StructWithNameConflict02.fsi @@ -1,6 +1,6 @@ // #Conformance #Signatures #Structs #Regression // Regression for Dev11:137942, structs used to not give errors on when member names conflicted with interface members -//The type 'Foo' does not define the field, constructor or member 'GetEnumerator' +//The type 'Foo<_>' does not define the field, constructor or member 'GetEnumerator' //Module 'M' contains override Foo\.GetEnumerator : unit -> IEnumerator<'T> but its signature specifies member Foo\.GetEnumerator : unit -> IEnumerator<'T> The compiled names differ module M diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index c398991c87f..6f3c81e62be 100644 --- a/tests/service/ProjectAnalysisTests.fs +++ b/tests/service/ProjectAnalysisTests.fs @@ -2206,7 +2206,7 @@ let ``Test Project13 all symbols`` () = let objSymbol = wholeProjectResults.GetAllUsesOfAllSymbols() |> Array.find (fun su -> su.Symbol.DisplayName = "Object") let objEntity = objSymbol.Symbol :?> FSharpEntity let objMemberNames = [ for x in objEntity.MembersFunctionsAndValues -> x.DisplayName ] - set objMemberNames |> shouldEqual (set [".ctor"; "ToString"; "Equals"; "Equals"; "ReferenceEquals"; "GetHashCode"; "GetType"; "Finalize"; "MemberwiseClone"]) + set objMemberNames |> shouldEqual (set ["``.ctor``"; "ToString"; "Equals"; "Equals"; "ReferenceEquals"; "GetHashCode"; "GetType"; "Finalize"; "MemberwiseClone"]) let dtSymbol = wholeProjectResults.GetAllUsesOfAllSymbols() |> Array.find (fun su -> su.Symbol.DisplayName = "DateTime") let dtEntity = dtSymbol.Symbol :?> FSharpEntity @@ -2254,7 +2254,7 @@ let ``Test Project13 all symbols`` () = yield x.DisplayName, p.Name, p.Type.ToString(), p.Type.Format(dtSymbol.DisplayContext) ] set objMethodsReturnParameter |> shouldEqual (set - [(".ctor", None, "type Microsoft.FSharp.Core.unit", "unit"); + [("``.ctor``", None, "type Microsoft.FSharp.Core.unit", "unit"); ("ToString", None, "type Microsoft.FSharp.Core.string", "string"); ("Equals", None, "type Microsoft.FSharp.Core.bool", "bool"); ("Equals", None, "type Microsoft.FSharp.Core.bool", "bool"); @@ -2352,9 +2352,9 @@ let ``Test Project14 all symbols`` () = ("member get_P", "P", "file1", ((6, 12), (6, 13)), ["defn"]); ("val x", "x", "file1", ((6, 10), (6, 11)), ["defn"]); ("val p", "p", "file1", ((6, 16), (6, 17)), []); - ("member .ctor", ".ctor", "file1", ((8, 10), (8, 11)), []); + ("member .ctor", "``.ctor``", "file1", ((8, 10), (8, 11)), []); ("val x1", "x1", "file1", ((8, 4), (8, 6)), ["defn"]); - ("member .ctor", ".ctor", "file1", ((9, 10), (9, 11)), []); + ("member .ctor", "``.ctor``", "file1", ((9, 10), (9, 11)), []); ("val x2", "x2", "file1", ((9, 4), (9, 6)), ["defn"]); ("Structs", "Structs", "file1", ((2, 7), (2, 14)), ["defn"])|] @@ -3063,7 +3063,7 @@ let ``Test Project21 all symbols`` () = ("unit", "unit", "file1", ((12, 43), (12, 47)), ["type"], ["abbrev"]); ("val raise", "raise", "file1", ((13, 18), (13, 23)), [], ["val"]); ("System", "System", "file1", ((13, 25), (13, 31)), [], ["namespace"]); - ("member .ctor", ".ctor", "file1", ((13, 25), (13, 55)), [], ["member"]); + ("member .ctor", "``.ctor``", "file1", ((13, 25), (13, 55)), [], ["member"]); ("Impl", "Impl", "file1", ((2, 7), (2, 11)), ["defn"], ["module"])|] //----------------------------------------------------------------------------------------- From 2ae80808f432058f2fc94f02074003db44fa1ad5 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 17:57:41 +0100 Subject: [PATCH 22/25] fix list completion --- src/fsharp/TypedTree.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index 30a45c03b4d..cc4545ee69c 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -1680,7 +1680,7 @@ type UnionCase = /// Backticks and parens are added for non-identifiers. /// /// Note logical names op_Nil and op_ConsCons become ([]) and (::) respectively. - member uc.DisplayName = uc.DisplayNameCore |> ConvertValNameToDisplayName false + member uc.DisplayName = uc.LogicalName |> ConvertValNameToDisplayName false /// Get the name of the case in generated IL code. /// Note logical names `op_Nil` and `op_ConsCons` become `Empty` and `Cons` respectively. From 35817eb308db2d464b2a82bf4d610ad53ec27425 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 17:59:04 +0100 Subject: [PATCH 23/25] fix list completion --- src/fsharp/TypedTreeOps.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index 0bf7559560c..4996150ed88 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -3826,7 +3826,7 @@ module DebugPrint = let layoutUnionCaseArgTypes argtys = sepListL (wordL(tagText "*")) (List.map typeL argtys) let ucaseL prefixL (ucase: UnionCase) = - let nmL = wordL (tagText (ConvertValNameToDisplayName false ucase.Id.idText)) + let nmL = wordL (tagText ucase.DisplayName) match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL(tagText "of")) --- layoutUnionCaseArgTypes argtys @@ -8645,7 +8645,7 @@ let GetMemberCallInfo g (vref: ValRef, vFlags) = //--------------------------------------------------------------------------- let TryGetActivePatternInfo (vref: ValRef) = - // First is an optimization to prevent calls to DisplayNameCoreMangled, which calls ConvertValNameToDisplayName + // First is an optimization to prevent calls to string routines let logicalName = vref.LogicalName if logicalName.Length = 0 || logicalName.[0] <> '|' then None From 0179f2a3c8fa6e4d4e41f753d1caa7f1a229a599 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 19:44:22 +0100 Subject: [PATCH 24/25] always show [] --- src/fsharp/NicePrint.fs | 5 +- .../printing/z.output.test.off.stdout.50.bsl | 1731 ----------------- .../printing/z.output.test.quiet.stderr.bsl | 336 ---- .../printing/z.output.test.quiet.stdout.bsl | 13 - 4 files changed, 1 insertion(+), 2084 deletions(-) delete mode 100644 tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl delete mode 100644 tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl delete mode 100644 tests/fsharp/core/printing/z.output.test.quiet.stdout.bsl diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 3561df34245..7f6a37841e5 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1666,10 +1666,7 @@ module TastDefinitionPrinting = let start, tagger = if isStructTy g ty then - if denv.printVerboseSignatures then - Some "struct", tagStruct - else - None, tagStruct + Some "struct", tagStruct elif isInterfaceTy g ty then if denv.printVerboseSignatures then Some "interface", tagInterface diff --git a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl deleted file mode 100644 index 08bd46c7c5a..00000000000 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ /dev/null @@ -1,1731 +0,0 @@ - -> val it: unit = () - -> val repeatId: string - -> val repeatId: string - -namespace FSI_0005 - val x1: int - val x2: string - val x3: 'a option - val x4: int option - val x5: 'a list - val x6: int list - val x7: System.Windows.Forms.Form - val x8: int[,] - val x9: Lazy - -namespace FSI_0006 - val x1: int - val x2: string - val x3: 'a option - val x4: int option - val x5: 'a list - val x6: int list - val x7: System.Windows.Forms.Form - val x8: int[,] - val x9: Lazy - -namespace FSI_0006 - val x1: int - val x2: string - val x3: 'a option - val x4: int option - val x5: 'a list - val x6: int list - val x7: System.Windows.Forms.Form - val x8: int[,] - val x9: Lazy - -> val x1: seq -val x2: seq -val x3: seq -val f1: System.Windows.Forms.Form -val fs: System.Windows.Forms.Form[] -val xs: string list -val xa: string[] -val xa2: string[,] -val sxs0: Set - -> val sxs1: Set - -> val sxs2: Set - -> val sxs3: Set - -> val sxs4: Set - -> val sxs200: Set - -> val msxs0: Map - -> val msxs1: Map - -> val msxs2: Map - -> val msxs3: Map - -> val msxs4: Map - -> val msxs200: Map - -> module M = - val a: string - val b: - (seq * seq * seq * System.Windows.Forms.Form) option * - (string list * string list * string[,]) option -type T = - new: a: int * b: int -> T - member AMethod: x: int -> int - static member StaticMethod: x: int -> int - member AProperty: int - static member StaticProperty: int -val f_as_method: x: int -> int -val f_as_thunk: (int -> int) -val refCell: string ref -module D1 = - val words: System.Collections.Generic.IDictionary - val words2000: System.Collections.Generic.IDictionary - -> > module D2 = - val words: IDictionary - val words2000: IDictionary -val opt1: 'a option -val opt1b: int option -val opt4: 'a option option option option -val opt4b: int option option option option -val opt5: int list option option option option option list -val mkStr: n: int -> string -val strs: string[] -val str7s: string[] -val grids: string[,] - -> type tree = - | L - | N of tree list -val mkT: w: int -> d: int -> tree -val tree: w: int -> d: int -> tree - -> [Building 2 4...done] -val tree_2_4: tree - -> [Building 2 6...done] -val tree_2_6: tree - -> [Building 2 8...done] -val tree_2_8: tree - -> [Building 2 10...done] -val tree_2_10: tree - -> [Building 2 12...done] -val tree_2_12: tree - -> [Building 2 14...done] -val tree_2_14: tree - -> [Building 3 8...done] -val tree_3_8: tree - -> [Building 4 8...done] -val tree_4_8: tree - -> [Building 5 8...done] -val tree_5_8: tree - -> [Building 6 8...done] -val tree_6_8: tree - -> [Building 5 3...done] -val tree_5_3: tree - -> > type X = - | Var of int - | Bop of int * X * X -val generate: x: int -> X - -> val exps: X list - -> module Exprs = - val x1: X - val x2: X - val x3: X - val x4: X - val x5: X - val x6: X - val x7: X - val x8: X - val x9: X - val x10: X - val x11: X - -> type C = - new: x: string -> C - override ToString: unit -> string -val c1: C -val csA: C[] -val csB: C[] -val csC: C[] - -> exception Abc - -> exception AbcInt of int - -> exception AbcString of string - -> exception AbcExn of exn list - -> exception AbcException of System.Exception list - -> val exA1: exn -val exA2: exn -val exA3: exn -val exA4: exn -val exA5: exn -exception Ex0 -exception ExUnit of unit -exception ExUnits of unit * unit -exception ExUnitOption of unit option -val ex0: exn -val exU: exn -val exUs: exn -val exUSome: exn -val exUNone: exn -type 'a T4063 = | AT4063 of 'a - -> val valAT3063_12: int T4063 - -> val valAT3063_True: bool T4063 - -> val valAT3063_text: string T4063 - -> val valAT3063_null: System.Object T4063 - -> type M4063<'a> = - new: x: 'a -> M4063<'a> - -> val v4063: M4063 - -> type Taaaaa<'a> = - new: unit -> Taaaaa<'a> - -> type Taaaaa2<'a> = - inherit Taaaaa<'a> - new: unit -> Taaaaa2<'a> - member M: unit -> Taaaaa2<'a> - -> type Tbbbbb<'a> = - new: x: 'a -> Tbbbbb<'a> - member M: unit -> 'a - -> type Tbbbbb2 = - inherit Tbbbbb - new: x: string -> Tbbbbb2 - -> val it: (unit -> string) = - -> module RepeatedModule = - val repeatedByteLiteral: byte[] - -> module RepeatedModule = - val repeatedByteLiteral: byte[] - -> val it: string = "Check #help" - -> - F# Interactive directives: - - #r "file.dll";; // Reference (dynamically load) the given DLL - #i "package source uri";; // Include package source uri when searching for packages - #I "path";; // Add the given search path for referenced DLLs - #load "file.fs" ...;; // Load the given file(s) as if compiled and referenced - #time ["on"|"off"];; // Toggle timing on/off - #help;; // Display help - #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 - #quit;; // Exit - - F# Interactive command line options: - - - -> val it: string = "Check #time on and then off" - -> ---> Timing now on - -> ---> Timing now off - -> val it: string = "Check #unknown command" - -> val it: string = - "Check #I with a known directory (to avoid a warning, which includes the location of this file, which is fragile...)" - -> ---> Added '/' to library include path - -> type internal T1 = - | A - | B - -> type internal T2 = - { x: int } - -> type internal T3 - -> type internal T4 = - new: unit -> T4 - -> type T1 = - internal | A - | B - -> type T2 = - internal { x: int } - -> type private T1 = - | A - | B - -> type private T2 = - { x: int } - -> type T1 = - private | A - | B - -> type T2 = - private { x: int } - -> type internal T1 = - private | A - | B - -> type internal T2 = - private { x: int } - -> type private T3 - -> type private T4 = - new: unit -> T4 - -> exception X1 of int - -> exception private X2 of int - -> exception internal X3 of int - -> type T0 = - new: unit -> T0 -type T1Post<'a> = - new: unit -> T1Post<'a> -type 'a T1Pre = - new: unit -> 'a T1Pre - -> type T0 with - member M: unit -> T0 list -type T0 with - member P: T0 * T0 -type T0 with - member E: IEvent - -> type T1Post<'a> with - member M: unit -> T1Post<'a> list -type T1Post<'a> with - member P: T1Post<'a> * T1Post<'a> -type T1Post<'a> with - member E: IEvent - -> type 'a T1Pre with - member M: unit -> 'a T1Pre list -type 'a T1Pre with - member P: 'a T1Pre * 'a T1Pre -type 'a T1Pre with - member E: IEvent - -> type T1Post<'a> with - member M: unit -> T1Post<'a> list -type T1Post<'a> with - member P: T1Post<'a> * T1Post<'a> -type T1Post<'a> with - member E: IEvent - -> type 'a T1Pre with - member M: unit -> 'a T1Pre list -type 'a T1Pre with - member P: 'a T1Pre * 'a T1Pre -type 'a T1Pre with - member E: IEvent - -> type r = - { - f0: int - f1: int - f2: int - f3: int - f4: int - f5: int - f6: int - f7: int - f8: int - f9: int - } -val r10: r -val r10s: r[] -val r10s': string * r[] - -> val x1564_A1: int - - ---> Added '\' to library include path - -val x1564_A2: int - - ---> Added '\' to library include path - -val x1564_A3: int - -> type internal Foo2 = - private new: x: int * y: int * z: int -> Foo2 + 3 overloads - member Prop1: int - member Prop2: int - member private Prop3: int - -> module internal InternalM = - val x: int - type Foo2 = - private new: x: int * y: int * z: int -> Foo2 + 3 overloads - member Prop1: int - member Prop2: int - member private Prop3: int - type private Foo3 = - new: x: int * y: int * z: int -> Foo3 + 3 overloads - member Prop1: int - member Prop2: int - member Prop3: int - type T1 = - | A - | B - type T2 = - { x: int } - type T3 - type T4 = - new: unit -> T4 - type T5 = - | A - | B - type T6 = - { x: int } - type private T7 = - | A - | B - type private T8 = - { x: int } - type T9 = - private | A - | B - type T10 = - private { x: int } - type T11 = - private | A - | B - type T12 = - private { x: int } - type private T13 - type private T14 = - new: unit -> T14 -module internal PrivateM = - val private x: int - type private Foo2 = - new: x: int * y: int * z: int -> Foo2 + 3 overloads - member Prop1: int - member Prop2: int - member Prop3: int - type T1 = - | A - | B - type T2 = - { x: int } - type T3 - type T4 = - new: unit -> T4 - type T5 = - | A - | B - type T6 = - { x: int } - type private T7 = - | A - | B - type private T8 = - { x: int } - type T9 = - private | A - | B - type T10 = - private { x: int } - type T11 = - private | A - | B - type T12 = - private { x: int } - type private T13 - type private T14 = - new: unit -> T14 - -> val it: seq = - seq - [(43, "10/28/2008", 1); (46, "11/18/2008", 1); (56, "1/27/2009", 2); - (58, "2/10/2009", 1)] - -> module Test4343a = - val mk: i: int -> string - val x100: string - val x90: string - val x80: string - val x75: string - val x74: string - val x73: string - val x72: string - val x71: string - val x70: string -module Test4343b = - val fA: x: int -> int - val fB: x: 'a -> y: 'a -> 'a list - val gA: (int -> int) - val gB: ('a -> 'a -> 'a list) - val gAB: (int -> int) * ('a -> 'a -> 'a list) - val hB: ('a -> 'a -> 'a list) - val hA: (int -> int) -module Test4343c = - val typename<'a> : string - val typename2<'a> : string * string -module Test4343d = - val xList: int list - val xArray: int[] - val xString: string - val xOption: int option - val xArray2: (int * int)[,] - val xSeq: seq -module Test4343e = - type C = - new: x: int -> C - val cA: C - val cB: C - val cAB: C * C * C list - type D = - new: x: int -> D - override ToString: unit -> string - val dA: D - val dB: D - val dAB: D * D * D list - module Generic = - type CGeneric<'a> = - new: x: 'a -> CGeneric<'a> - val cA: C - val cB: C - val cAB: C * C * C list - type D<'a> = - new: x: 'a -> D<'a> - override ToString: unit -> string - val dA: D - val dB: D - val dAB: D * D * D list - val dC: D - val boxed_dABC: obj list -type F1 = - inherit System.Windows.Forms.Form - interface System.IDisposable - val x: F1 - val x2: F1 - member B: unit -> int - member D: x: int -> int + 2 overloads - abstract MMM: bool -> bool - override ToString: unit -> string - static member A: unit -> int - static member C: unit -> int - abstract AAA: int - abstract BBB: bool with set - member D2: int - member E: int - abstract ZZZ: int - static val mutable private sx: F1 - static val mutable private sx2: F1 -[] -type IP = - new: x: int * y: int -> IP - static val mutable private AA: IP -module Regression4643 = - [] - type RIP = - new: x: int -> RIP - static val mutable private y: RIP - [] - type arg_unused_is_RIP = - new: x: RIP -> arg_unused_is_RIP - [] - type arg_used_is_RIP = - new: x: RIP -> arg_used_is_RIP - member X: RIP - [] - type field_is_RIP = - val x: RIP -type Either<'a,'b> = - | This of 'a - | That of 'b -val catch: f: (unit -> 'a) -> Either<'a,(string * string)> -val seqFindIndexFailure: Either -val seqFindFailure: Either -val seqPickFailure: Either -module Regression5218 = - val t1: int - val t2: int * int - val t3: int * int * int - val t4: int * int * int * int - val t5: int * int * int * int * int - val t6: int * int * int * int * int * int - val t7: int * int * int * int * int * int * int - val t8: int * int * int * int * int * int * int * int - val t9: int * int * int * int * int * int * int * int * int - val t10: int * int * int * int * int * int * int * int * int * int - val t11: int * int * int * int * int * int * int * int * int * int * int - val t12: - int * int * int * int * int * int * int * int * int * int * int * int - val t13: - int * int * int * int * int * int * int * int * int * int * int * int * - int - val t14: - int * int * int * int * int * int * int * int * int * int * int * int * - int * int - val t15: - int * int * int * int * int * int * int * int * int * int * int * int * - int * int * int - -> module Regression3739 = - type IB = - abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = - new: unit -> C<'a> - static member StaticMember: x: 'a -> int - -> module Regression3739 = - type IB = - abstract AbstractMember: int -> int - type C<'a when 'a :> IB> = - new: unit -> C<'a> - static member StaticMember: x: 'a -> int - -> module Regression3740 = - type Writer<'a> = - abstract get_path: unit -> string - type MyClass = - interface Writer - val path: string - -> type Regression4319_T2 = - static member (+-+-+) : x: 'a * y: 'b -> string - -> type Regression4319_T0 = - static member (+-+-+) : string - -> type Regression4319_T1 = - static member (+-+-+) : x: 'a -> string - -> type Regression4319_T1b = - static member (+-+-+) : x: 'a -> string - -> type Regression4319_T1c = - static member (+-+-+) : x: ('a * 'b) -> string - -> type Regression4319_T1d = - static member (+-+-+) : x: (int * int) -> string - -> type Regression4319_T3 = - static member (+-+-+) : x: 'a * y: 'b * z: 'c -> string - -> type Regression4319_U1 = - static member (+-+-+) : x: 'a -> moreArgs: 'b -> string - -> type Regression4319_U1b = - static member (+-+-+) : x: 'a -> moreArgs: 'b -> string - -> type Regression4319_U2 = - static member (+-+-+) : x: 'a * y: 'b -> moreArgs: 'c -> string - -> type Regression4319_U3 = - static member (+-+-+) : x: 'a * y: 'b * z: 'c -> moreArgs: 'd -> string - -> type Regression4319_check = - static member (&) : string - static member (&^) : string - static member (@) : string - static member (!=) : string - static member (:=) : string - static member (^) : string - static member (/) : string - static member ($) : string - static member (...@) : string - static member (...!=) : string - static member (.../) : string - static member (...=) : string - static member (...>) : string - static member (...^) : string - static member (...<) : string - static member ( ...* ) : string - static member (...%) : string - static member (=) : string - static member ( ** ) : string - static member (>) : string - static member (<) : string - static member (%) : string - static member ( * ) : string - static member (-) : string - -> Expect ABC = ABC -type Regression4469 = - new: unit -> Regression4469 - member ToString: unit -> string -val r4469: Regression4469 -val it: unit - -> Expect ABC = ABC -val it: unit = () - -> module Regression1019_short = - val double_nan: float - val double_infinity: float - val single_nan: float32 - val single_infinity: float32 -module Regression1019_long = - val double_nan: float - val double_infinity: float - val single_nan: float32 - val single_infinity: float32 - -> val it: int ref = { contents = 1 } - -> val x: int ref -val f: (unit -> int) - -> val it: int = 1 - -> val it: unit = () - -> val it: int = 3 - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: int[] = - [|0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; - ...|] - -> val it: 'a list - -> val it: 'a list list - -> val it: 'a option - -> val it: 'a list * 'b list - -> val it: x: 'a -> 'a - -> val fff: x: 'a -> 'a - -> val it: ('a -> 'a) - -> val note_ExpectDupMethod: string - -> > val note_ExpectDupProperty: string - -> > > val it: string = "NOTE: Expect IAPrivate less accessible IBPublic" - -> > val it: string = "NOTE: Expect IAPrivate less accessible IBInternal" - -> > module Regression5265_PriPri = - type private IAPrivate = - abstract P: int - type private IBPrivate = - inherit IAPrivate - abstract Q: int - -> val it: string = "NOTE: Expect IAInternal less accessible IBPublic" - -> > module Regression5265_IntInt = - type internal IAInternal = - abstract P: int - type internal IBInternal = - inherit IAInternal - abstract Q: int - -> module Regression5265_IntPri = - type internal IAInternal = - abstract P: int - type private IBPrivate = - inherit IAInternal - abstract Q: int - -> module Regression5265_PubPub = - type IAPublic = - abstract P: int - type IBPublic = - inherit IAPublic - abstract Q: int - -> module Regression5265_PubInt = - type IAPublic = - abstract P: int - type internal IBInternal = - inherit IAPublic - abstract Q: int - -> module Regression5265_PubPri = - type IAPublic = - abstract P: int - type private IBPrivate = - inherit IAPublic - abstract Q: int - -> val it: string = - "Regression4232: Expect an error about duplicate virtual methods from parent type" - -> > val it: string = - "** Expect AnAxHostSubClass to be accepted. AxHost has a newslot virtual RightToLeft property outscope RightToLeft on Control" - -> type AnAxHostSubClass = - inherit System.Windows.Forms.AxHost - new: x: string -> AnAxHostSubClass - -> val it: string = - "** Expect error because the active pattern result contains free type variables" - -> > val it: string = - "** Expect error because the active pattern result contains free type variables (match value generic)" - -> > val it: string = - "** Expect error because the active pattern result contains free type variables (when active pattern also has parameters)" - -> > val it: string = - "** Expect OK, since error message says constraint should work!" - -> val (|A|B|) : x: int -> Choice - -> val it: string = "** Expect error since active pattern is not a function!" - -> > val it: string = - "** Expect OK since active pattern result is not too generic, typars depend on match val" - -> val (|A|B|) : p: bool -> 'a * 'b -> Choice<'a,'b> - -> val it: string = - "** Expect OK since active pattern result is not too generic, typars depend on parameters" - -> val (|A|B|) : aval: 'a -> bval: 'b -> x: bool -> Choice<'a,'b> - -> val it: string = - "** Expect OK since active pattern result is generic, but it typar from closure, so OK" - -> val outer: x: 'a -> (int -> 'a option) - -> val it: string = - "** Expect OK, BUG 472278: revert unintended breaking change to Active Patterns in F# 3.0" - -> val (|Check1|) : a: int -> int * 'a option - -> > module ReflectionEmit = - type IA = - abstract M: #IB -> int - and IB = - abstract M: #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract M: int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract M: int - -> val it: string = - "Regression_139182: Expect the follow code to be accepted without error" - -> [] -type S = - member TheMethod: unit -> int64 -val theMethod: s: S -> int64 -type T = - new: unit -> T - member Prop5: int64 - static member Prop1: int64 - static member Prop2: int64 - static member Prop3: int64 - static member Prop4: string - -> val it: System.Threading.ThreadLocal list = [0 {IsValueCreated = false; - Values = ?;}] - -> type MyDU = - | Case1 of Val1: int * Val2: string - | Case2 of string * V2: bool * float - | Case3 of int - | Case4 of Item1: bool - | Case5 of bool * string - | Case6 of Val1: int * bool * string - | Case7 of ``Big Name`` : int -val namedFieldVar1: MyDU -val namedFieldVar2: MyDU - -> exception MyNamedException1 of Val1: int * Val2: string -exception MyNamedException2 of string * V2: bool * float -exception MyNamedException3 of Data: int -exception MyNamedException4 of bool -exception MyNamedException5 of int * string -exception MyNamedException6 of Val1: int * bool * string * Data8: float -exception MyNamedException7 of ``Big Named Field`` : int -val namedEx1: exn -val namedEx2: exn - -> type optionRecord = - { x: int option } -val x: optionRecord - -> type optionRecord = - { x: obj } -val x: optionRecord - -> type RecordWithMembers = - { x: obj } - member Method: unit -> int - member Property: int - -> type UnionWithMembers = - | Case1 - | Case2 of int - member Method: unit -> int - member Property: int - -> type OneFieldRecordNoXmlDoc = - { OneField: obj } - -> type OneFieldRecordXmlDoc = - { - OneField: obj - } - -> type TwoFieldRecordNoXmlDoc = - { - TwoFields1: obj - TwoFields2: obj - } - -> type TwoFieldRecordXmlDoc = - { - TwoFields1: obj - TwoFields2: obj - } - -> type Int32 with - member ExtrinsicExtensionProperty: int -type Int32 with - member ExtrinsicExtensionMethod: unit -> int - -> val ``value with spaces in name`` : bool - -> val functionWhichTakesLongNameMixedParameters: - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int - -> ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * - dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int - -> int - -> val functionWhichTakesLongNameTupledParameters: - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int * - bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int * - ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int * - ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int - -> int - -> val functionWhichTakesLongNameCurriedParameters: - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int - -> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int - -> cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int - -> dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int - -> int - -> val functionWhichTakesMixedLengthCurriedParametersA: - a: 'a -> b: 'b -> c: 'c -> ddddddddddddddddddddddddddddddddddddddddddddd: 'd - -> int - -> val functionWhichTakesMixedLengthCurriedParametersB: - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: 'a -> b: 'b -> c: 'c -> d: 'd -> int - -> val f: ``parameter with spaces in name`` : int -> int - -> val functionWhichTakesAParameterPeeciselyPlusButNotOpAddition: - ``+`` : (int -> int -> int) -> int - -> val functionWhichTakesAParameterOpAddition: (+) : (int -> int -> int) -> int - -> val functionWhichTakesAParameterCalled_land: - ``land`` : (int -> int -> int) -> int - -> type RecordWithStrangeNames = - { - ``funky name`` : obj - op_Addition: obj - ``+`` : obj - ``land`` : obj - ``base`` : obj - } - -> type UnionWithSpacesInNamesOfCases = - | ``Funky name`` - | ``Funky name 2`` - -> type ``Type with spaces in name`` = - | A - | B - -> type op_Addition = - | A - | B - -> type ``land`` = - | A - | B - -> module ``Module with spaces in name`` = - val x: int - -> module op_Addition = - val x: int - -> module ``land`` = - val x: int - -> val ``+`` : x: 'a -> y: 'b -> int - -> val (+) : x: int -> y: int -> int - -> val ``base`` : int - -> val (mod) : int - -> val ``or`` : int - -> val ``land`` : int - -> val ``.ctor`` : int - -> val ``.cctor`` : int - -> [] -val SomeLiteralWithASomewhatLongName: string - = "SomeVeryLongLiteralValueWithLotsOfCharacters" -[] -val SomeLiteralWithASomewhatLongName2: string - = - "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" -[] -val ShortName: string = "hi" - -> > > diff --git a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl b/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl deleted file mode 100644 index 4d3209ca246..00000000000 --- a/tests/fsharp/core/printing/z.output.test.quiet.stderr.bsl +++ /dev/null @@ -1,336 +0,0 @@ - - #blaaaaaa // blaaaaaa is not a known command;; - ^^^^^^^^^ - -stdin(219,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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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 - - - 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) = ... - - - 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. - - - 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) = ... - - - 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) = ... - - - 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. - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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. - - - 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) = ... - - - 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. - - - 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) = ... - - - 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 - - - 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) = ... - - - 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 - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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. - - - 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'. - - - 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'. - - - 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. - - - 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. - - - 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. - - - 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' - - - 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' - - - 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' - - - 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' - - - let (|A|B|) = failwith "" : Choice;; - -----^^^^^ - -stdin(844,6): error FS1209: Active pattern '|A|B|' is not a function - diff --git a/tests/fsharp/core/printing/z.output.test.quiet.stdout.bsl b/tests/fsharp/core/printing/z.output.test.quiet.stdout.bsl deleted file mode 100644 index 26683b52103..00000000000 --- a/tests/fsharp/core/printing/z.output.test.quiet.stdout.bsl +++ /dev/null @@ -1,13 +0,0 @@ -[Building 2 4...done] -[Building 2 6...done] -[Building 2 8...done] -[Building 2 10...done] -[Building 2 12...done] -[Building 2 14...done] -[Building 3 8...done] -[Building 4 8...done] -[Building 5 8...done] -[Building 6 8...done] -[Building 5 3...done] -Expect ABC = ABC -Expect ABC = ABC From d9dabe1c3db42fe3fe59fb29bd6cb604d88236d0 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Fri, 3 Sep 2021 19:44:52 +0100 Subject: [PATCH 25/25] always show [] --- src/fsharp/NicePrint.fs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 7f6a37841e5..d14855a92b1 100755 --- a/src/fsharp/NicePrint.fs +++ b/src/fsharp/NicePrint.fs @@ -1666,6 +1666,7 @@ module TastDefinitionPrinting = let start, tagger = if isStructTy g ty then + // Always show [] whether verbose or not Some "struct", tagStruct elif isInterfaceTy g ty then if denv.printVerboseSignatures then