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/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/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..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 @@ -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 @@ -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) @@ -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 @@ -3928,12 +3928,13 @@ 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)) 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..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 @@ -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 @@ -1961,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 @@ -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)) @@ -4584,7 +4583,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) @@ -5106,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)) | _ -> @@ -5204,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)) @@ -6357,7 +6356,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 @@ -6474,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 @@ -6497,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 @@ -6509,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) @@ -8106,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 _ -> @@ -8548,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/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/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/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 bdb35b6a497..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 { @@ -2341,7 +2367,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 +2560,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 @@ -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/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/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/IlxGen.fs b/src/fsharp/IlxGen.fs index 091400e4486..5943c5fe2ac 100644 --- a/src/fsharp/IlxGen.fs +++ b/src/fsharp/IlxGen.fs @@ -524,7 +524,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 @@ -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 )]))) @@ -1725,7 +1725,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))) @@ -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 @@ -7891,12 +7891,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 @@ -8021,12 +8025,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 = @@ -8069,8 +8074,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 @@ -8101,7 +8106,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 @@ -8132,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 @@ -8150,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) @@ -8159,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)] @@ -8226,7 +8231,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 = @@ -8235,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 @@ -8257,7 +8262,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", @@ -8273,7 +8278,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 | _ -> () ] @@ -8291,7 +8296,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 @@ -8400,7 +8405,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 @@ -8506,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 dbd8ec3ba01..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) = @@ -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/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 576223f2724..4785453d27c 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -243,35 +243,51 @@ type Item = let minfos = minfos |> List.sortBy (fun minfo -> minfo.NumArgs |> List.sum) Item.CtorGroup (nm, minfos) + member d.DisplayNameCore = + match d with + | 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.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) -> 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.DisplayName = 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.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) :: _) -> v.DisplayName - | Item.Property(nm, _) -> DemangleOperatorName nm | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayName - | Item.MethodGroup(nm, _, _) -> DemangleOperatorName nm - | Item.CtorGroup(nm, _) -> DemangleGenericTypeName nm - | Item.FakeInterfaceCtor (AbbrevOrAppTy tcref) - | Item.DelegateCtor (AbbrevOrAppTy tcref) -> DemangleGenericTypeName tcref.DisplayName - | Item.Types(nm, _) -> DemangleGenericTypeName nm + | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.DisplayName | Item.UnqualifiedType(tcref :: _) -> tcref.DisplayName + | Item.ModuleOrNamespaces(modref :: _) -> modref.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 - | _ -> "" + | _ -> d.DisplayNameCore |> ConvertNameToDisplayName let valRefHash (vref: ValRef) = match vref.TryDeref with @@ -866,7 +882,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 +902,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 +911,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 +1022,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! @@ -1058,7 +1074,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 @@ -2232,7 +2248,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) @@ -2389,10 +2404,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 @@ -2402,7 +2417,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 @@ -2413,7 +2428,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 @@ -2557,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) @@ -2845,13 +2860,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)) @@ -2922,19 +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 - addToBuffer modref.DemangledModuleOrNamespaceName - 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 -> @@ -3026,7 +3039,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 @@ -3185,7 +3197,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) @@ -3213,7 +3224,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)) @@ -3268,7 +3278,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 @@ -3446,7 +3455,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) @@ -4047,7 +4056,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 @@ -4266,7 +4275,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 +4378,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) @@ -4736,7 +4745,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) @@ -4959,7 +4968,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/NameResolution.fsi b/src/fsharp/NameResolution.fsi index 73349bb7e85..ec2f3186af0 100755 --- a/src/fsharp/NameResolution.fsi +++ b/src/fsharp/NameResolution.fsi @@ -128,6 +128,14 @@ type Item = /// Represents the potential resolution of an unqualified name to a type. | UnqualifiedType of TyconRef list + /// 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 + + /// The full text for the item to show in error messages and to use in code. + /// This includes backticks, parens etc. member DisplayName: string [] diff --git a/src/fsharp/NicePrint.fs b/src/fsharp/NicePrint.fs index 68af1818615..d14855a92b1 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 @@ -38,16 +41,84 @@ 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 + 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 isDiscard (name: string) = name.StartsWith("_") + + 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 | [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 -> + 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 @@ -56,10 +127,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 @@ -67,41 +134,60 @@ 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 - let tyconTextL = - tagEntityRefName tcref demangled + 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 denv tcref demangled |> mkNav tcref.DefinitionRange - |> wordL + + let tyconTextL = + if isArray then + tyconTagged |> rightL + else + tyconTagged |> wordL + if denv.shortTypeNames then tyconTextL else @@ -122,33 +208,37 @@ module internal PrintUtilities = squareAngleL (layoutTyconRefImpl true denv tcref) /// layout the xml docs immediately before another block - let layoutXmlDoc (denv: DisplayEnv) (xml: XmlDoc) restL = - if denv.showDocumentation - then + let layoutXmlDoc (denv: DisplayEnv) alwaysAddEmptyLine (xml: XmlDoc) restL = + if denv.showDocumentation then let xmlDocL = - if xml.IsEmpty - then - emptyL - else - xml.UnprocessedLines - |> Array.map (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. - |> Array.map (fun line -> ("///" + line) |> tagText |> wordL) - |> List.ofArray - |> aboveListL + 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 + 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 | 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) ) @@ -157,58 +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 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])) @@ -260,7 +357,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 @@ -278,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 @@ -304,9 +401,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) @@ -317,18 +415,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 @@ -336,10 +428,11 @@ 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 = 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 = @@ -356,15 +449,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 @@ -390,26 +481,29 @@ module private PrintTypes = | _ -> itemL /// Layout a reference to a type - let layoutTyconRefImpl denv tycon = layoutTyconRefImpl false denv tycon + let layoutTyconRef denv tycon = layoutTyconRefImpl false denv tycon /// Layout the flags of a member let layoutMemberFlags (memFlags: SynMemberFlags) = 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 @@ -417,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 @@ -446,35 +540,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) + and layoutAttribArgs denv 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 @@ -492,17 +573,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) -> @@ -519,37 +598,58 @@ module private PrintTypes = PrintIL.layoutILType denv [] ty ++ argsL /// Layout '[]' above another block - and layoutAttribs denv isValue 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 - elif not isValue && (isStructTy denv.g ty && not (isEnumTy denv.g ty)) then - squareAngleL (wordL (tagClass "Struct")) @@ 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" @@ -566,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 @@ -606,8 +706,8 @@ module private PrintTypes = wordL (tagKeyword "when") ^^ sepListL (wordL (tagKeyword "and")) cxsL /// Layout constraints, taking TypeSimplificationInfo into account - and private layoutConstraintWithInfo denv env (tp, tpc) = - let longConstraintPrefix l = layoutTyparRefWithInfo denv env tp ^^ WordL.colon ^^ l + and layoutConstraintWithInfo denv env (tp, tpc) = + 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 +716,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,16 +773,15 @@ 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] - and private layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = - let nm = DemangleOperatorName nm + and layoutTraitWithInfo denv env (TTrait(tys, nm, memFlags, argtys, rty, _)) = + let nameL = ConvertValNameToDisplayLayout false (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 @@ -690,19 +790,20 @@ 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 ":") --- - ((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 expression - and private layoutMeasure denv unt = + /// Layout a unit of measure expression + 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 = layoutTyconRefImpl 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 @ @@ -714,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 @@ -728,41 +829,30 @@ 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) | TType_app (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 - - | 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 + let prefix = usePrefix denv tc + layoutTypeAppWithInfoAndPrec denv env (layoutTyconRef denv tc) prec prefix args // Layout a tuple type | TType_anon (anonInfo, tys) -> @@ -774,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) -> @@ -787,13 +878,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 -> @@ -802,53 +892,58 @@ 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 = 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) = + 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 - 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 - // 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 ^^ SepL.colon ^^ layoutTypeWithInfoAndPrec denv env 2 ty + // Detect an optional argument + let isOptionalArg = HasFSharpAttribute g g.attrib_OptionalArgumentAttribute argInfo.Attribs + let isParamArray = HasFSharpAttribute g g.attrib_ParamArrayAttribute argInfo.Attribs + + match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy g ty with + // Layout an optional argument + | Some id, true, _, ValueSome ty -> + let idL = ConvertValNameToDisplayLayout false (tagParameter >> rightL) id.idText + LeftL.questionMark ^^ + (idL |> addColonL) ^^ + layoutTypeWithInfoAndPrec denv env 2 ty - let allArgsL = - argInfos - |> List.mapSquared argL - |> List.map (sepListL (wordL (tagPunctuation "*"))) - allArgsL + // Layout an unnamed argument + | None, _, _, _ -> + layoutTypeWithInfoAndPrec denv env 2 ty - let layoutGenericParameterTypes denv env = - function + // Layout a named argument + | Some id, _, isParamArray, _ -> + let idL = ConvertValNameToDisplayLayout false (tagParameter >> wordL) id.idText + let prefix = + if isParamArray then + layoutBuiltinAttribute denv g.attrib_ParamArrayAttribute ^^ idL + else + idL + (prefix |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty + + let layoutCurriedArgInfos denv env argInfos = + argInfos + |> List.mapSquared (layoutArgInfo denv env) + |> List.map (sepListL (wordL (tagPunctuation "*"))) + + let layoutGenericParameterTypes denv env genParamTys = + match genParamTys with | [] -> emptyL - | genParamTys -> - (wordL (tagPunctuation "<")) + | _ -> + wordL (tagPunctuation "<") ^^ ( genParamTys @@ -856,7 +951,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 = @@ -866,11 +961,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) = @@ -886,8 +979,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 @@ -917,14 +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 @@ -950,11 +1044,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 = ConvertValNameToDisplayLayout false (tagMember >> wordL) 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 @@ -995,7 +1091,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) @@ -1013,7 +1109,7 @@ module private PrintTypes = ty.GetAssemblyName() /// Printing TAST objects -module private PrintTastMemberOrVals = +module PrintTastMemberOrVals = open PrintTypes let mkInlineL denv (v: Val) nameL = @@ -1022,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 @@ -1034,18 +1141,6 @@ module private PrintTastMemberOrVals = info.Attribs <- [] info.Name <- None - let mkNameL niceMethodTypars tagFunction name = - let nameL = - DemangleOperatorNameAsLayout (tagFunction >> mkNav v.DefinitionRange) name - let nameL = - if denv.showMemberContainers then - layoutTyconRefImpl 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 -> @@ -1053,9 +1148,9 @@ module private PrintTastMemberOrVals = let resL = if short then tauL else - let nameL = mkNameL niceMethodTypars tagMember v.LogicalName + let nameL = layoutMemberName denv v niceMethodTypars tagMember v.DisplayNameCoreMangled 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 +1160,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 -> @@ -1075,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.CoreDisplayName + 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) @@ -1091,15 +1186,15 @@ module private PrintTastMemberOrVals = if isNil argInfos then tauL 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))) + 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 | SynMemberKind.PropertySet -> 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 = layoutMemberName denv v [] tagProperty v.DisplayNameCoreMangled let resL = stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordSet) emptyTyparInst, resL else @@ -1109,8 +1204,8 @@ module private PrintTastMemberOrVals = if short then (tauL --- (WordL.keywordWith ^^ WordL.keywordSet)) else - let nameL = mkNameL niceMethodTypars tagProperty v.CoreDisplayName - stat --- (nameL ^^ wordL (tagPunctuation ":") ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) + let nameL = layoutMemberName denv v niceMethodTypars tagProperty v.DisplayNameCoreMangled + stat --- ((nameL |> addColonL) ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) prettyTyparInst, resL prettyTyparInst, memberL @@ -1143,20 +1238,19 @@ 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 let nameL = - let isDiscard (str: string) = str.StartsWith("_") let tagF = - if isForallFunctionTy denv.g v.Type && not (isDiscard v.DisplayName) then - if IsOperatorName 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 @@ -1181,17 +1275,17 @@ 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 + | Some literalValue -> valAndTypeL --- layoutOfLiteralValue literalValue | 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 @@ -1205,9 +1299,12 @@ module private PrintTastMemberOrVals = | Some _ -> prettyLayoutOfMember denv typarInst vref.Deref - prettyTyparInst, - layoutAttribs denv true vref.Type TyparKind.Type vref.Attribs vL - |> layoutXmlDocOfValRef denv infoReader vref + let valL = + valL + |> layoutAttribs denv None vref.LiteralValue.IsSome TyparKind.Type vref.Attribs + |> layoutXmlDocOfVal denv infoReader vref + + prettyTyparInst, valL let prettyLayoutOfValOrMemberNoInst denv infoReader v = prettyLayoutOfValOrMember denv infoReader emptyTyparInst v |> snd @@ -1220,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.layoutTyconRefImpl denv |> bufferL os +let outputTyconRef denv os x = x |> PrintTypes.layoutTyconRef denv |> bufferL os -let layoutTyconRef denv x = x |> PrintTypes.layoutTyconRefImpl denv +let layoutTyconRef denv x = x |> PrintTypes.layoutTyconRef denv let layoutConst g ty c = PrintTypes.layoutConst g ty c @@ -1237,57 +1334,48 @@ 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 - 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 = ConvertValNameToDisplayLayout false (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) ^^ - RightL.colon ^^ + 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 = ConvertValNameToDisplayLayout false (tagParameter >> wordL) id.idText layoutBuiltinAttribute denv denv.g.attrib_ParamArrayAttribute ^^ - wordL (tagParameter idText) ^^ - RightL.colon ^^ + (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) ^^ - RightL.colon ^^ + + // Layout a named normal argument + | false, Some id, _ -> + let idL = ConvertValNameToDisplayLayout false (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 - let private layoutMethInfoFSharpStyleCore (infoReader: InfoReader) m denv (minfo: MethInfo) minst = + // new: argName1: argType1 * ... * argNameN: argTypeN -> retType + // Method: argName1: argType1 * ... * argNameN: argTypeN -> retType + // + let layoutMethInfoFSharpStyleCore (infoReader: InfoReader) m denv (minfo: MethInfo) minst = let amap = infoReader.amap match minfo.ArbitraryValRef with @@ -1298,35 +1386,39 @@ 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 - ) ^^ - WordL.colon + let nameL = + if minfo.IsConstructor then + WordL.keywordNew + else + let idL = ConvertValNameToDisplayLayout false (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". // // 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 @@ -1336,7 +1428,7 @@ module InfoMemberPrinting = layout ^^ if isAppTy minfo.TcGlobals minfo.ApparentEnclosingAppType then let tcref = minfo.ApparentEnclosingTyconRef - PrintTypes.layoutTyconRefImpl denv tcref + PrintTypes.layoutTyconRef denv tcref else emptyL let layout = @@ -1344,15 +1436,15 @@ module InfoMemberPrinting = if minfo.IsConstructor then SepL.leftParen else + let idL = ConvertValNameToDisplayLayout false (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) 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 @@ -1393,7 +1485,8 @@ module InfoMemberPrinting = match methInfo with | DefaultStructCtor _ -> let prettyTyparInst, _ = PrettyTypes.PrettifyInst amap.g typarInst - prettyTyparInst, PrintTypes.layoutTyconRefImpl 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 @@ -1411,11 +1504,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 = ConvertValNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let getterSetter = match pinfo.HasGetter, pinfo.HasSetter with | true, false -> @@ -1430,8 +1519,7 @@ module InfoMemberPrinting = wordL (tagText (FSComp.SR.typeInfoProperty())) ^^ layoutTyconRef denv pinfo.ApparentEnclosingTyconRef ^^ SepL.dot ^^ - nameL ^^ - RightL.colon ^^ + (nameL |> addColonL) ^^ layoutType denv rty ^^ getterSetter @@ -1446,12 +1534,13 @@ 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 = 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 @@ -1459,52 +1548,54 @@ 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 lhs = - tagRecordField fld.Name - |> mkNav fld.DefinitionRange - |> wordL - let lhs = (if addAccess then layoutAccessibility denv fld.Accessibility lhs else lhs) + let layoutRecdField prefix isClassDecl denv infoReader (enclosingTcref: TyconRef) (fld: RecdField) = + let lhs = ConvertNameToDisplayLayout (tagRecordField >> mkNav fld.DefinitionRange >> wordL) fld.DisplayNameCore + 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 ^^ RightL.colon) --- layoutType denv fld.FormalType + 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.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 - | [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 (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 + let nmL = ConvertNameToDisplayLayout (tagUnionCase >> mkNav ucase.DefinitionRange >> wordL) ucase.Id.idText //let nmL = layoutAccessibility denv ucase.Accessibility nmL let caseL = 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 @@ -1514,110 +1605,101 @@ 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 - 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)) - staticL ^^ WordL.keywordVal ^^ nameL ^^ WordL.colon ^^ typL - - let private layoutEventInfo denv (infoReader: InfoReader) m (e: EventInfo) = + 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 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 + let typL = layoutType denv (einfo.GetDelegateType(amap, m)) + let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL + layoutXmlDocOfEventInfo denv infoReader einfo overallL - 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 overallL = staticL ^^ WordL.keywordMember ^^ nameL ^^ WordL.colon ^^ typL - layoutXmlDocOfEventInfo denv infoReader e overallL - - let private layoutPropInfo denv (infoReader: InfoReader) m (p: PropInfo) = + let 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 overallL = modifierAndMember ^^ nameL ^^ WordL.colon ^^ typL - layoutXmlDocOfPropInfo denv infoReader p overallL + 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 - 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 + // 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, name = - let n = tycon.DisplayName + + let start, tagger = if isStructTy g ty then - if denv.printVerboseSignatures then - Some "struct", tagStruct n - else - None, tagStruct n + // Always show [] whether verbose or not + Some "struct", tagStruct elif isInterfaceTy g ty then if denv.printVerboseSignatures then - Some "interface", tagInterface n + Some "interface", tagInterface else - None, tagInterface n + None, tagInterface + elif isMeasure then + None, tagClass 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 - let name = mkNav tycon.DefinitionRange name - let nameL = layoutAccessibility denv tycon.Accessibility (wordL name) + None, tagUnknownType + + let nameL = ConvertNameToDisplayLayout (tagger >> mkNav tycon.DefinitionRange >> wordL) tycon.DisplayNameCore + + let nameL = layoutAccessibility denv tycon.Accessibility nameL 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 - 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 @@ -1626,22 +1708,23 @@ 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) - 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 @@ -1653,22 +1736,34 @@ 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 - |> 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) && + typeEquiv g ty fld.ApparentEnclosingType) let ctorLs = if denv.shrinkOverloads then @@ -1680,7 +1775,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 @@ -1691,28 +1786,33 @@ module private TastDefinitionPrinting = |> List.sortBy fst |> List.map snd - let fieldLs = - infoReader.GetILFieldInfosOfType (None, ad, m, ty) - |> List.filter (fun fld -> not (isDiscard fld.FieldName)) - |> List.map (fun x -> (true, x.IsStatic, x.FieldName, 0, 0), layoutILFieldInfo denv amap m x) + 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.Name)) - |> List.map (fun f -> WordL.keywordStatic ^^ WordL.keywordVal ^^ layoutRecdField true denv infoReader tcref f) + |> List.filter (fun f -> IsAccessible ad f.Accessibility && f.IsStatic && not (isDiscard f.DisplayNameCore)) + + let staticValLs = + staticVals + |> List.map (fun f -> layoutRecdField (fun l -> WordL.keywordStatic ^^ WordL.keywordVal ^^ l) true denv infoReader tcref f) - let instanceValsLs = + let instanceVals = if isRecdTy g ty then [] else tycon.TrueInstanceFieldsAsList - |> List.filter (fun f -> IsAccessible ad f.Accessibility && not (isDiscard f.Name)) - |> List.map (fun f -> WordL.keywordVal ^^ layoutRecdField true denv infoReader tcref f) + |> List.filter (fun f -> IsAccessible ad f.Accessibility && not (isDiscard f.DisplayNameCore)) + + let instanceValLs = + instanceVals + |> List.map (fun f -> layoutRecdField (fun l -> WordL.keywordVal ^^ l) true denv infoReader tcref f) let propLs = props @@ -1731,7 +1831,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) @@ -1745,167 +1845,204 @@ 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 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 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 = - if isNil decls then + 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 else - let memberLs = applyMaxMembers denv.maxMembers decls - if simplified then - reprL @@-- aboveListL memberLs - else - reprL @@ (WordL.keywordWith @@-- aboveListL memberLs) @@ WordL.keywordEnd + let memberLs = applyMaxMembers denv.maxMembers allDecls + reprL @@ aboveListL memberLs + + 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 + else + (lhsL ^^ WordL.equals) -* rhsL + + let typeDeclL = - let reprL = - let repr = tycon.TypeReprInfo match repr with - | TRecdRepr _ - | TUnionRepr _ - | 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 _ -> - let recdFieldRefL fld = layoutRecdField false denv infoReader tcref fld - - let recdL = - tycon.TrueFieldsAsList - |> List.map recdFieldRefL - |> applyMaxMembers denv.maxMembers - |> aboveListL - |> braceL - - Some (addMembersAsWithEnd (addReprAccessL recdL)) - - | TUnionRepr _ -> - let layoutUnionCases = - tycon.UnionCasesAsList - |> layoutUnionCases denv infoReader tcref - |> applyMaxMembers denv.maxMembers - |> aboveListL - Some (addMembersAsWithEnd (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 id 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 - | TTyconDelegate (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 []) - | _ -> - 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 - - | 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 - Some declsL + | 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 + + // Measure declarations are '[] type kg' unless abbreviations + | TFSharpObjectRepr _ when isMeasure -> + lhsL + + | TFSharpObjectRepr { fsobjmodel_kind = TFSharpEnum } -> + tycon.TrueFieldsAsList + |> List.map (fun f -> + match f.LiteralValue with + | None -> emptyL + | Some c -> + WordL.bar ^^ + wordL (tagField f.DisplayName) ^^ + WordL.equals ^^ + layoutConst denv.g ty c) + |> aboveListL + |> addLhs + + | TFSharpObjectRepr _ when isNil allDecls -> + lhsL - | _ -> None + | TFSharpObjectRepr _ -> + allDecls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> 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.layoutILEnumCase x.FieldName x.LiteralValue) + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addLhs - let brk = match tycon.TypeReprInfo with | TILObjectRepr _ -> true | _ -> brk - match rhsL with - | None -> lhsL - | Some rhsL -> - if brk then - (lhsL ^^ WordL.equals) @@-- rhsL - else - (lhsL ^^ WordL.equals) --- rhsL + | TILObjectRepr _ -> + allDecls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addLhs - | _ -> - match tycon.TypeAbbrev with - | None -> - addMembersAsWithEnd (lhsL ^^ WordL.equals) - | Some a -> - (lhsL ^^ WordL.equals) --- (layoutType { denv with shortTypeNames = false } a) + | TNoRepr when tycon.TypeAbbrev.IsSome -> + let abbreviatedType = tycon.TypeAbbrev.Value + (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 + | _ when isNil allDecls -> + lhsL + + | TProvidedNamespaceRepr _ + | TProvidedTypeRepr _ + | TNoRepr -> + allDecls + |> applyMaxMembers denv.maxMembers + |> aboveListL + |> addLhs + + 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 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 = 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 --- layoutTyconRefImpl 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 @@ -1914,24 +2051,26 @@ 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) = - 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.DemangledModuleOrNamespaceName]) - | _ -> - 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 - let path, mspec = fullPath mspec [mspec.DemangledModuleOrNamespaceName] + let path, mspec = fullPath mspec [mspec.DisplayNameCore] let denv = let outerPath = outerPath |> List.map fst @@ -1940,39 +2079,41 @@ 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 (ConvertNameToDisplayLayout (tagNamespace >> wordL)) + wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL else // This is a module - let nmL = + let name = path |> List.last + let nameL = ConvertNameToDisplayLayout (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 innerPathL = innerPath |> List.map (ConvertNameToDisplayLayout (tagNamespace >> wordL)) + sepListL SepL.dot innerPathL ^^ SepL.dot ^^ nameL + + let modNameL = wordL (tagKeyword "module") ^^ nameL + 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.keywordEnd 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 + layoutAttribs denv None false mspec.TypeOrMeasureKind mspec.Attribs headerL let shouldShow (v: Val) = (denv.showObsoleteMembers || not (CheckFSharpAttributesForObsolete denv.g v.Attribs)) && @@ -1983,7 +2124,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 [] @@ -1991,7 +2132,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 @@ -2013,25 +2154,26 @@ 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 - layoutTyconRef denv infoReader ad m true WordL.keywordType eref + layoutTyconDefn denv infoReader ad m true WordL.keywordType eref //-------------------------------------------------------------------------- -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, _) -> @@ -2091,7 +2233,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 @@ -2101,55 +2242,66 @@ module private InferredSigPrinting = let basicL = // Check if this namespace contains anything interesting if isConcreteNamespace def then + 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 (List.map (fst >> tagNamespace >> wordL) innerPath) - headerL @@-- basic + wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL + 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 - let nmL = layoutAccessibility denv mspec.Accessibility (wordL (tagModule 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 + 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.keywordBegin ^^ 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 - layoutXmlDoc denv mspec.XmlDoc basicL + // OK, this is a nested module, with indentation + if isEmptyL basic then + ((modNameEqualsL ^^ wordL (tagKeyword"begin")) @@* basic) @@ WordL.keywordEnd + else + 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 @@ -2157,9 +2309,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 "[]") @@ -2171,23 +2325,27 @@ 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) + (layoutTyconRef 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 + and dataExprsL denv xs = List.map (dataExprL denv) xs let dataExprL denv expr = PrintData.dataExprL denv expr @@ -2224,7 +2382,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 @@ -2236,9 +2394,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.layoutTyconRef 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 @@ -2259,7 +2417,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/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 e9951b95473..ad226c2b510 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 @@ -2096,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" @@ -2113,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) @@ -2163,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 @@ -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/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index bb15293a337..a0c50c3d395 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,22 +113,190 @@ 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 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() + "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) + +// 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 - let rec loop i = (i < nameLen && (opCharSet.Contains(name.[i]) || loop (i+1))) - loop 0 + nameLen > 0 && + IsIdentifierFirstCharacter name.[0] && + 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 <> '|') -/// 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 + isCoreActivePatternName name 1 false + +/// 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 true else @@ -136,28 +304,42 @@ let IsOperatorName (name: string) = if not (opCharSet.Contains(c)) || c = ' ' then false else - isOperatorName 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 = ".. .." - -let IsMangledOpName (n: string) = - n.StartsWithOrdinal(opNamePrefix) + loop name (idx + 1) endIndex + + 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 "( )" // false +//IsOperatorDisplayName "( +)" // false + +let IsMangledOpName (name: string) = + name.StartsWithOrdinal(opNamePrefix) /// Compiles a custom operator into a mangled operator name. /// For example, "!%" becomes "op_DereferencePercent". /// 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 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 = @@ -196,23 +378,21 @@ 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 IsUnencodedOpName op || IsUnencodedLegacyOpName op || IsIdentifierName op then + op + else + compileCustomOpName op /// Decompiles the mangled name of a custom operator back into an operator. /// For example, "op_DereferencePercent" becomes "!%". /// 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 @@ -284,27 +464,77 @@ 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 - -let DemangleOperatorName nm = - let nm = DecompileOpName nm - if IsOperatorOrBacktickedName nm then "( " + nm + " )" - else nm + match standardOpsDecompile.TryGetValue opName with + | true, res -> res + | false, _ -> + if IsMangledOpName opName then + decompileCustomOpName opName + else + opName + +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 ConvertNameToDisplayName name = + AddBackticksToIdentifierIfNeeded name + +let ConvertValNameToDisplayName 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 + // Add parentheses for multiply-like symbols, with spacing to avoid confusion with comments + elif nm <> "*" && (nm.StartsWithOrdinal "*" || nm.EndsWithOrdinal "*") then + "( " + nm + " )" + // Add parentheses for other symbols, no spacing + else + "(" + nm + ")" + else + ConvertNameToDisplayName 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 ConvertNameToDisplayLayout nonOpLayout name = + if DoesIdentifierNeedBackticks name then + leftL (TaggedText.tagPunctuation "``") ^^ wordL (TaggedText.tagOperator name) ^^ rightL (TaggedText.tagPunctuation "``") + else + 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 + 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 + ConvertNameToDisplayLayout nonOpLayout name let opNameCons = CompileOpName "::" @@ -318,41 +548,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 = '.' @@ -464,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 @@ -486,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 @@ -524,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 -> @@ -559,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 @@ -588,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 @@ -601,25 +796,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 @@ -654,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/PrettyNaming.fsi b/src/fsharp/PrettyNaming.fsi index db94f7610a9..53479e93468 100644 --- a/src/fsharp/PrettyNaming.fsi +++ b/src/fsharp/PrettyNaming.fsi @@ -22,28 +22,99 @@ 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 - -val internal DemangleOperatorNameAsLayout: nonOpTagged:(string -> #TaggedText) -> nm:string -> Layout +/// 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 +/// + --> ``+`` +/// A-B --> ``A-B`` +val internal ConvertNameToDisplayName: name: string -> string + +/// Take a core display name for a value (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|_|) +/// base --> base +/// or --> or +/// mod --> mod +val internal ConvertValNameToDisplayName: isBaseVal: bool -> name: string -> string + +/// Like ConvertNameToDisplayName but produces a tagged layout +val internal ConvertNameToDisplayLayout: 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 @@ -120,9 +191,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 +260,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/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs index abcf0a16a0d..c383eac6f74 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 @@ -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 @@ -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 @@ -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/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/SignatureConformance.fs b/src/fsharp/SignatureConformance.fs index 45a88071ac3..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 && @@ -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/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 9d770d8316d..cc4545ee69c 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -652,17 +652,31 @@ 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 - member x.DisplayName = x.GetDisplayName() + /// 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 with <'T, 'U, 'V> added for generic types, plus static parameters if any - member x.DisplayNameWithStaticParametersAndTypars = x.GetDisplayName(withStaticParameters=true, withTypars=true, withUnderscoreTypars=false) + /// 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. + /// + /// 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 <_, _, _> 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, 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, withUnderscoreTypars=false) #if !NO_EXTENSIONTYPING member x.IsStaticInstantiationTycon = @@ -671,43 +685,38 @@ type Entity = args.Length > 0 #endif - member x.GetDisplayName(?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 - - let getName () = - match x.TyparsNoRange with - | [] -> nm - | tps -> - let nm = DemangleGenericTypeName 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 = #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 +756,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 +874,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 +917,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 +953,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 +1045,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 +1084,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 +1102,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 +1112,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 +1129,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 +1188,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 +1384,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 +1399,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 +1501,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 @@ -1656,13 +1665,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.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. + /// 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 +1709,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 +1789,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 +1837,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. [] @@ -2700,6 +2731,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 @@ -2875,16 +2915,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. - /// - If this is a property then this is 'Foo' + /// 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 operator then this is 'op_Addition' - member x.CoreDisplayName = + /// - 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.DisplayNameCoreMangled = match x.MemberInfo with | Some membInfo -> match membInfo.MemberFlags.MemberKind with @@ -2896,11 +2942,24 @@ type Val = | SynMemberKind.PropertyGet -> x.PropertyName | None -> x.LogicalName - /// - If this is a property then this is 'Foo' + /// 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 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`` + /// - If this is a base value --> base + /// - If this is a value named ``base`` --> ``base`` member x.DisplayName = - DemangleOperatorName x.CoreDisplayName + ConvertValNameToDisplayName x.IsBaseVal x.DisplayNameCoreMangled member x.SetValRec b = x.val_flags <- x.val_flags.WithRecursiveValInfo b @@ -3079,7 +3138,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 +3155,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--> @@ -3303,15 +3362,23 @@ 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 - member x.DisplayName = x.Deref.DisplayName + /// + /// 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 with <'T, 'U, 'V> added for generic types, including static parameters - member x.DisplayNameWithStaticParametersAndTypars = x.Deref.DisplayNameWithStaticParametersAndTypars + /// 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 <_, _, _> 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. @@ -3580,7 +3647,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) @@ -3658,9 +3725,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 @@ -3770,6 +3839,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 @@ -3863,7 +3941,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)) @@ -3889,9 +3967,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 @@ -3923,7 +4004,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)) @@ -5473,7 +5554,7 @@ type Construct() = | Some t -> importProvidedType t), findOriginalException) - TProvidedTypeExtensionPoint + TProvidedTypeRepr { ResolutionEnvironment=resolutionEnvironment ProvidedType=st LazyBaseType=lazyBaseTy @@ -5575,17 +5656,17 @@ 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 - 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..4996150ed88 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 @@ -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 ucase.DisplayName) match ucase.RecdFields |> List.map (fun rfld -> rfld.FormalType) with | [] -> (prefixL ^^ nmL) | argtys -> (prefixL ^^ nmL ^^ wordL(tagText "of")) --- layoutUnionCaseArgTypes argtys @@ -3836,30 +3836,30 @@ 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 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 @@ -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 @@ -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. @@ -8205,36 +8205,34 @@ 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 = - 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 (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) @@ -8646,14 +8644,13 @@ 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 string routines 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 959757bbaca..d8f9b0342b6 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)) @@ -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 @@ -1972,11 +1974,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 +2030,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 +2259,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/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/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/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/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/infos.fs b/src/fsharp/infos.fs index fb0b58e5272..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 + | _ -> 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 = @@ -1807,21 +1813,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 +1848,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 +2325,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 +2429,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..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. @@ -657,8 +660,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 +688,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 +933,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/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/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/SemanticClassification.fs b/src/fsharp/service/SemanticClassification.fs index 9647a0b4e40..917f7eda9bd 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 @@ -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 @@ -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..3ea07d55545 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 ^^ ( @@ -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 @@ -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 @@ -793,13 +789,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 +805,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 @@ -912,11 +908,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 +942,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.DisplayNameCoreMangled + | _ -> false + | _ -> false + member _.Items = declarations member _.IsForType = isForType @@ -992,7 +1005,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,99 +1019,67 @@ 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.DisplayNameCore + 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 _ -> IsOperatorName 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) + |> List.filter (fun (_textInDeclList, textInCode, items) -> + not (isOperatorItem textInCode items) && not (isActivePatternItem items)) - let decls = - items - |> List.map (fun (displayName, 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 + |> List.map (fun (textInDeclList, textInCode, itemsWithSameFullName) -> + 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 name, nameInCode = - if displayName.StartsWithOrdinal("( ") && displayName.EndsWithOrdinal(" )") then - let cleanName = displayName.[2..displayName.Length - 3] - cleanName, - if IsOperatorName displayName then cleanName else "``" + cleanName + "``" - else - displayName, - match item.Unresolved with - | Some _ -> displayName - | None -> Lexhelp.Keywords.QuoteIdentifierIfNeeded displayName - - 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 name = cutAttributeSuffix name - let nameInCode = cutAttributeSuffix nameInCode + 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( - name, nameInCode, 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/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/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/Exprs.fs b/src/fsharp/symbols/Exprs.fs index 12b94f53566..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) @@ -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/SymbolHelpers.fs b/src/fsharp/symbols/SymbolHelpers.fs index 1c8628ad31a..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(_, []) @@ -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) @@ -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 @@ -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/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 107d5a37dd7..2e1817407dd 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() @@ -483,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 = @@ -562,10 +571,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 +681,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) @@ -712,7 +720,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 = @@ -886,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 @@ -930,7 +938,7 @@ type FSharpUnionCase(cenv, v: UnionCaseRef) = member _.Name = checkIsResolved() - v.UnionCase.DisplayName + v.UnionCase.LogicalName member _.DeclarationLocation = checkIsResolved() @@ -948,7 +956,7 @@ type FSharpUnionCase(cenv, v: UnionCaseRef) = checkIsResolved() FSharpType(cenv, v.ReturnType) - member _.CompiledName = + member _.CompiledName = checkIsResolved() v.UnionCase.CompiledName @@ -1176,7 +1184,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] @@ -1928,7 +1936,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 = @@ -2103,21 +2111,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 = @@ -2275,7 +2283,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/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 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/src/fsharp/utils/sformat.fs b/src/fsharp/utils/sformat.fs index b700b34900f..d8ee767e1f9 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 @@ -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" @@ -269,6 +270,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..868cafa1b75 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 @@ -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 @@ -237,6 +238,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/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/ErrorMessages/ClassesTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/ClassesTests.fs index 11e2efef68a..621307f4e66 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 '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 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,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 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.")] [] 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..71ec6524a92 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``() = @@ -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``() = @@ -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..7d86ada35e8 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" + Environment.NewLine + " int32")) [] 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.ComponentTests/ErrorMessages/TypeMismatchTests.fs b/tests/FSharp.Compiler.ComponentTests/ErrorMessages/TypeMismatchTests.fs index 4326a4a2a3d..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.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/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.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.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 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/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.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected index 05ec57601fd..857e6a2d5a5 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 @@ -4954,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) @@ -5603,25 +5631,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 +9244,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 +10494,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/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/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/conformance/expressions/syntacticsugar/E_Slices01.bsl b/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl index 6cf7778a869..4f092ad8b6c 100644 --- a/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl +++ b/tests/fsharp/conformance/expressions/syntacticsugar/E_Slices01.bsl @@ -4,34 +4,34 @@ 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'. +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/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 d95b136a7c2..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 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..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 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/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..5b791a6d89a 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' @@ -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/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/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/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/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/core/printing/test.fsx b/tests/fsharp/core/printing/test.fsx index 63dd02878e5..51c2c82c29f 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";; @@ -929,6 +928,163 @@ 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 +;; + +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 functionWhichTakesLongNameCurriedParameters + (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: int) + (bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb: int) + (cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: int) + (dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd: int) = 1 + 1 +;; + +let functionWhichTakesMixedLengthCurriedParametersA a b c ddddddddddddddddddddddddddddddddddddddddddddd = 1 + 1 +;; + +let functionWhichTakesMixedLengthCurriedParametersB aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa b c d = 1 + 1 +;; + + +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 +;; + +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 +;; + +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, nor get double ticks + let x = 1 +;; + +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 +;; + +// Check line wrapping of very long literals +[] +let SomeLiteralWithASomewhatLongName = "SomeVeryLongLiteralValueWithLotsOfCharacters" + +[] +let SomeLiteralWithASomewhatLongName2 = "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" + +[] +let ShortName = "hi" +;; + + ;; (* ;; 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 4ae32a6ed01..4d3209ca246 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,335 @@ #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 member Regression4232.D.M : 'U -> int' and 'abstract member 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 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..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 @@ -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,47 +163,47 @@ 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 = + (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"; @@ -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,49 +1169,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -1226,18 +1221,19 @@ type 'a T1Pre with f6: int 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 [] = + 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 @@ -1284,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 @@ -1333,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 @@ -1370,7 +1366,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1393,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 @@ -1409,7 +1404,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1432,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -2579,9 +2553,9 @@ type T = | Case4 of Item1: bool | 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 + | Case7 of ``Big Name`` : int +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -2589,16 +2563,152 @@ 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 = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +exception MyNamedException7 of ``Big Named Field`` : int +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 } + +> 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 = true + +> 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 = 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 + +> [] +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 08ac7c4ac0e..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 @@ -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,47 +163,47 @@ 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 = + (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"; @@ -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,49 +1171,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -1228,18 +1223,19 @@ type 'a T1Pre with f6: int 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 [] = + 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 @@ -1286,7 +1282,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 +1331,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 +1368,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1395,15 +1391,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 +1406,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -1434,1145 +1429,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -2581,9 +2555,9 @@ type T = | Case4 of Item1: bool | 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 + | Case7 of ``Big Name`` : int +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -2591,16 +2565,152 @@ 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 = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +exception MyNamedException7 of ``Big Named Field`` : int +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 } + +> 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 = true + +> 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 = 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 + +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" > > > 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..4d3209ca246 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,335 @@ #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 member Regression4232.D.M : 'U -> int' and 'abstract member 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 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..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 @@ -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 = + (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,49 +489,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -546,68 +541,69 @@ type 'a T1Pre with f6: int 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 + 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 --> 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 +611,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -638,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 @@ -654,7 +649,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -677,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -1824,9 +1798,9 @@ type T = | Case4 of Item1: bool | 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 + | Case7 of ``Big Name`` : int +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -1834,16 +1808,152 @@ 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 = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +exception MyNamedException7 of ``Big Named Field`` : int +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 } + +> 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 = true + +> 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 = 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 + +> [] +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 410c07644ca..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 @@ -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 = + (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,49 +491,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -548,68 +543,69 @@ type 'a T1Pre with f6: int 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 + 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 --> 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 +613,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -640,15 +636,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 +651,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -679,1145 +674,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -1826,9 +1800,9 @@ type T = | Case4 of Item1: bool | 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 + | Case7 of ``Big Name`` : int +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -1836,16 +1810,152 @@ 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 = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +exception MyNamedException7 of ``Big Named Field`` : int +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 } + +> 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 = true + +> 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 = 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 + +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" > > > 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..4d3209ca246 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,335 @@ #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 member Regression4232.D.M : 'U -> int' and 'abstract member 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 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..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 @@ -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,47 +161,47 @@ 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 = + (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"; @@ -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,49 +4128,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -4185,18 +4180,19 @@ type 'a T1Pre with f6: int 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 [] = + 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 @@ -4537,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 @@ -4880,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 @@ -4917,7 +4913,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4940,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 @@ -4956,7 +4951,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4979,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -6126,9 +6100,9 @@ type T = | Case4 of Item1: bool | 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 + | Case7 of ``Big Name`` : int +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -6136,16 +6110,152 @@ 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 = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +exception MyNamedException7 of ``Big Named Field`` : int +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 } + +> 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 = true + +> 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 = 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 + +> [] +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 7d0f21ca77b..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 @@ -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,47 +161,47 @@ 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 = + (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"; @@ -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,49 +4130,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -4187,18 +4182,19 @@ type 'a T1Pre with f6: int 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 [] = + 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 @@ -4539,7 +4535,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 +4878,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 +4915,7 @@ val x1564_A3 : int = 3 { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4942,15 +4938,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 +4953,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -4981,1145 +4976,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -6128,9 +6102,9 @@ type T = | Case4 of Item1: bool | 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 + | Case7 of ``Big Name`` : int +val namedFieldVar1: MyDU = Case1 (5, "") +val namedFieldVar2: MyDU = Case7 25 > exception MyNamedException1 of Val1: int * Val2: string exception MyNamedException2 of string * V2: bool * float @@ -6138,16 +6112,152 @@ 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 = MyNamedException1 (5, "") -val namedEx2 : exn = MyNamedException7 25 +exception MyNamedException7 of ``Big Named Field`` : int +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 } + +> 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 = true + +> 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 = 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 + +> [] +val SomeLiteralWithASomewhatLongName: string + = "SomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val SomeLiteralWithASomewhatLongName2: string + = + "SomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharactersSomeVeryLongLiteralValueWithLotsOfCharacters" +[] +val ShortName: string = "hi" > > > 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..4d3209ca246 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,335 @@ #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 member Regression4232.D.M : 'U -> int' and 'abstract member 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 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..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 @@ -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 + (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 = 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,49 +316,50 @@ 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 + { + f0: int f1: int f2: int f3: int @@ -373,41 +368,42 @@ type 'a T1Pre with f6: int f7: int f8: int - f9: int } -val r10 : r -val r10s : r [] -val r10s' : string * r [] + f9: int + } +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 +411,7 @@ val x1564_A3 : int { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -438,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 @@ -454,7 +449,7 @@ module internal PrivateM = begin { x: int } type T3 type T4 = - new : unit -> T4 + new: unit -> T4 type T5 = | A | B @@ -477,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 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 + 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 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 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 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 > 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 P: int type private IBPrivate = inherit IAPrivate - abstract member Q : int -end + abstract 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 P: int type internal IBInternal = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_IntPri = begin +> module Regression5265_IntPri = type internal IAInternal = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAInternal - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPub = begin +> module Regression5265_PubPub = type IAPublic = - abstract member P : int + abstract P: int type IBPublic = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubInt = begin +> module Regression5265_PubInt = type IAPublic = - abstract member P : int + abstract P: int type internal IBInternal = inherit IAPublic - abstract member Q : int -end + abstract Q: int -> module Regression5265_PubPri = begin +> module Regression5265_PubPri = type IAPublic = - abstract member P : int + abstract P: int type private IBPrivate = inherit IAPublic - abstract member Q : int -end + abstract 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 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 -end + abstract 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 @@ -1594,9 +1568,9 @@ type T = | 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 + | 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 @@ -1604,16 +1578,152 @@ 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 +exception MyNamedException7 of ``Big Named Field`` : int +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 + +> 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.off.stdout.50.bsl b/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl deleted file mode 100644 index b1fd18978b7..00000000000 --- a/tests/fsharp/core/printing/z.output.test.off.stdout.50.bsl +++ /dev/null @@ -1,1621 +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 = begin - 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 [,] - -> 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 = 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 - -> 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 = begin - val repeatedByteLiteral : byte [] -end - -> module RepeatedModule = begin - val repeatedByteLiteral : byte [] -end - -> 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 = begin - 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 -end -module internal PrivateM = begin - 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 -end - -> 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 - 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 - 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 = begin - 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 - end -end -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 - 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 = begin - [] - 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 -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 : - 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 -end - -> module Regression3739 = begin - type IB = - abstract member AbstractMember : int -> int - type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end - -> module Regression3739 = begin - type IB = - abstract member AbstractMember : int -> int - type C<'a when 'a :> IB> = - new : unit -> C<'a> - static member StaticMember : x:'a -> int -end - -> module Regression3740 = begin - type Writer<'a> = - abstract member get_path : unit -> string - type MyClass = - interface Writer - val path: string -end - -> 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 = 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 - -> 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 = begin - type private IAPrivate = - abstract member P : int - type private IBPrivate = - inherit IAPrivate - abstract member Q : int -end - -> val it : string = "NOTE: Expect IAInternal less accessible IBPublic" - -> > module Regression5265_IntInt = begin - type internal IAInternal = - abstract member P : int - type internal IBInternal = - inherit IAInternal - abstract member Q : int -end - -> module Regression5265_IntPri = begin - type internal IAInternal = - abstract member P : int - type private IBPrivate = - inherit IAInternal - abstract member Q : int -end - -> module Regression5265_PubPub = begin - type IAPublic = - abstract member P : int - type IBPublic = - inherit IAPublic - abstract member Q : int -end - -> module Regression5265_PubInt = begin - type IAPublic = - abstract member P : int - type internal IBInternal = - inherit IAPublic - abstract member Q : int -end - -> module Regression5265_PubPri = begin - type IAPublic = - abstract member P : int - type private IBPrivate = - inherit IAPublic - abstract member Q : int -end - -> 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 = begin - type IA = - abstract member M : #IB -> int - and IB = - abstract member M : #IA -> int - type IA2<'a when 'a :> IB2<'a> and 'a :> IA2<'a>> = - abstract member M : int - and IB2<'b when 'b :> IA2<'b> and 'b :> IB2<'b>> = - abstract member M : int -end - -> 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 - -> > > 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 4ae32a6ed01..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(220,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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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 - - - 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) = ... - - - 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. - - - 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) = ... - - - 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) = ... - - - 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. - - - 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) = ... - - - 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 (...>) = "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) = ... - - - 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) = ... - - - 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) = ... - - - 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. - - - 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) = ... - - - 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. - - - 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" - -------------------^ - -stdin(606,20): warning FS1172: Infix operator member '^' has no arguments. Expected a tuple of 2 arguments, e.g. static member (+) (x,y) = ... - - - static member (^) = "INFIX_AT_HAT_OP" - -------------------^ - -stdin(606,20): warning FS0086: The name '(^)' should not be used as a member name because it is given a standard definition in the F# library over fixed types - - - static member (...@) = "INFIX_AT_HAT_OP" // 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 (...^) = "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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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) = ... - - - 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_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) = ... - - - 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) = ... - - - 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. - - - 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'. - - - 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'. - - - 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. - - - 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. - - - 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. - - - 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' - - - 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' - - - 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' - - - 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' - - - let (|A|B|) = failwith "" : Choice;; - -----^^^^^ - -stdin(845,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 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/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 3be5dba44ae..f5ff5ca719c 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 = @@ -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 cb79536e157..7dc9ab96355 100644 Binary files a/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll and b/tests/fsharp/tools/fsharp41/net45/providerDesigner.dll differ diff --git a/tests/fsharp/tools/fsharp41/net461/providerDesigner.dll b/tests/fsharp/tools/fsharp41/net461/providerDesigner.dll index 1b581c260dc..7e7821bdd45 100644 Binary files a/tests/fsharp/tools/fsharp41/net461/providerDesigner.dll and b/tests/fsharp/tools/fsharp41/net461/providerDesigner.dll differ diff --git a/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll b/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll index 1b6a4ded584..c3d2de6083b 100644 Binary files a/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll and b/tests/fsharp/tools/fsharp41/netstandard2.0/providerDesigner.dll differ diff --git a/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll index c033697fd00..569260eff75 100644 Binary files a/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll and b/tests/fsharp/typeProviders/fsharp41/net45/providerDesigner.dll differ diff --git a/tests/fsharp/typeProviders/fsharp41/net461/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/net461/providerDesigner.dll index a26e114cc74..3e45a70c53b 100644 Binary files a/tests/fsharp/typeProviders/fsharp41/net461/providerDesigner.dll and b/tests/fsharp/typeProviders/fsharp41/net461/providerDesigner.dll differ diff --git a/tests/fsharp/typeProviders/fsharp41/netstandard2.0/providerDesigner.dll b/tests/fsharp/typeProviders/fsharp41/netstandard2.0/providerDesigner.dll index 4f0c61b8cea..8bfed32f1c5 100644 Binary files a/tests/fsharp/typeProviders/fsharp41/netstandard2.0/providerDesigner.dll and b/tests/fsharp/typeProviders/fsharp41/netstandard2.0/providerDesigner.dll differ 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/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_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_interface_generics.bsl b/tests/fsharp/typecheck/overloads/neg_interface_generics.bsl index 98c63216419..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 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/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/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/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 efbe9b93b80..b19cbe84bb4 100644 --- a/tests/fsharp/typecheck/sigs/neg10.bsl +++ b/tests/fsharp/typecheck/sigs/neg10.bsl @@ -57,10 +57,10 @@ 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. + 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 @@ -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 @@ -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/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/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 9ad81d0003f..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 975fc46185a..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/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/neg20.bsl b/tests/fsharp/typecheck/sigs/neg20.bsl index 810220f0590..0fb6114762b 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<_>'. @@ -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/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 ebbf45ae77b..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 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 74a0337d928..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 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. +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 bbee183544f..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 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 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 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/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/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/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/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 1aef477debf..c049a325a8b 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,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'. +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/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..9bc473d3a3b 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<_>'. @@ -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/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/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/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/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 110e06ddc4f..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,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/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/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/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/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/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/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 509ca899548..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 a92bd56dce5..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 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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..93a352702da 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/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/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/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..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 a4fad849e49..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/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..ee90c7fe432 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/ReflectionTypeNameMangling01.fsx @@ -8,17 +8,17 @@ //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\) //type Planet = -// new : ipx:float \* ivx:float -> Planet -// member VX : float -// member X : float -//val paintObjects : Planet list +// new: ipx: float \* ivx: float -> Planet +// member VX: float +// 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/SubtypeArgInterfaceWithAbstractMember.fsx b/tests/fsharpqa/Source/InteractiveSession/Misc/SubtypeArgInterfaceWithAbstractMember.fsx index 60e90995809..584847e4ed6 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 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..e0d3100b557 100644 --- a/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx +++ b/tests/fsharpqa/Source/InteractiveSession/Misc/VerbatimIdentifier01.fsx @@ -1,12 +1,42 @@ // #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 ``\.\.`` : 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 +//val ``base`` : bool = true +//val ``or`` : 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;; +let ``base`` = true;; +let ``or`` = true;; exit 0;; diff --git a/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx b/tests/fsharpqa/Source/Printing/BindingsWithValues01.fsx index 30b453b9fc6..655a9f0524d 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..651ba156c30 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/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/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/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 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/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/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/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/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/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)." ] [] diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index fc91dc0f656..6f3c81e62be 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)), [], []); @@ -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"); @@ -2348,13 +2348,13 @@ 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)), []); - ("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"])|] @@ -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"]); @@ -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"])|] //----------------------------------------------------------------------------------------- @@ -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 -> @@ -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 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 diff --git a/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs b/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs index 64632f5bbf4..2564dd3af4b 100644 --- a/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs +++ b/vsintegration/src/FSharp.Editor/CodeFix/RenameParamToMatchSignature.fs @@ -36,7 +36,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/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..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" ]]) [] [] @@ -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..c146c311c05 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 @@ -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" @@ -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" ] ) @@ -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"; ] @@ -2067,10 +2068,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 +2103,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 +2150,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 AAA: int"; + " member D: int"; " ..."; ]) @@ -2203,12 +2204,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 +2295,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 +2390,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 +2424,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 +2469,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 +2536,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 +2570,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 +2619,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 +2677,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 +2713,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 +2745,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 +2805,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 +3062,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 +3103,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 +3152,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 +3284,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 +3305,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 +3350,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..be0e18f0412 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 @@ -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) () @@ -180,7 +182,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val aa : MyEmployee" + let expected = "val aa: MyEmployee" Assert.AreEqual(expected, quickInfo) () @@ -231,7 +233,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 +262,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 +285,7 @@ module Test = | _ -> 1 """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val p1 : MyPoint" + let expected = "val p1: MyPoint" Assert.AreEqual(expected, quickInfo) () @@ -306,7 +308,7 @@ module Test = | _ -> 1 """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val p3 : MyPoint" + let expected = "val p3: MyPoint" Assert.AreEqual(expected, quickInfo) () @@ -328,7 +330,7 @@ module Test = else () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val dd : MyDistance" + let expected = "val dd: MyDistance" Assert.AreEqual(expected, quickInfo) () @@ -350,7 +352,7 @@ module Test = () """ let quickInfo = GetQuickInfoTextFromCode code - let expected = "val distance : MyDistance" + let expected = "val distance: MyDistance" Assert.AreEqual(expected, quickInfo) () @@ -380,7 +382,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 +410,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) ()