@@ -474,8 +474,8 @@ and SolveTypStaticReq (csenv:ConstraintSolverEnv) trace req ty =
474474 IterateD( fun (( tpr : Typar ), _ ) -> SolveTypStaticReqTypar csenv trace req tpr) vs
475475| _ ->
476476match tryAnyParTy csenv.g tywith
477- | Some tpr-> SolveTypStaticReqTypar csenv trace req tpr
478- | None -> CompleteD
477+ | ValueSome tpr-> SolveTypStaticReqTypar csenv trace req tpr
478+ | ValueNone -> CompleteD
479479
480480let TransactDynamicReq ( trace : OptionalTrace ) ( tpr : Typar ) req =
481481let orig = tpr.DynamicReq
@@ -487,7 +487,7 @@ let SolveTypDynamicReq (csenv:ConstraintSolverEnv) trace req ty =
487487| TyparDynamicReq.No-> CompleteD
488488| TyparDynamicReq.Yes->
489489match tryAnyParTy csenv.g tywith
490- | Some tprwhen tpr.DynamicReq<> TyparDynamicReq.Yes->
490+ | ValueSome tprwhen tpr.DynamicReq<> TyparDynamicReq.Yes->
491491 TransactDynamicReq trace tpr TyparDynamicReq.Yes
492492| _ -> CompleteD
493493
@@ -499,7 +499,7 @@ let TransactIsCompatFlex (trace:OptionalTrace) (tpr:Typar) req =
499499let SolveTypIsCompatFlex ( csenv : ConstraintSolverEnv ) trace req ty =
500500if reqthen
501501match tryAnyParTy csenv.g tywith
502- | Some tprwhen not tpr.IsCompatFlex-> TransactIsCompatFlex trace tpr req
502+ | ValueSome tprwhen not tpr.IsCompatFlex-> TransactIsCompatFlex trace tpr req
503503| _ -> CompleteD
504504else
505505 CompleteD
@@ -687,8 +687,8 @@ let CheckWarnIfRigid (csenv:ConstraintSolverEnv) ty1 (r:Typar) ty =
687687if not r.Rigidity.WarnIfUnifiedthen CompleteDelse
688688let needsWarning =
689689match tryAnyParTy g tywith
690- | None -> true
691- | Some tp2->
690+ | ValueNone -> true
691+ | ValueSome tp2->
692692not tp2.IsCompilerGenerated&&
693693( r.IsCompilerGenerated||
694694// exclude this warning for two identically named user-specified type parameters, e.g. from different mutually recursive functions or types
@@ -758,8 +758,8 @@ and solveTypMeetsTyparConstraints (csenv:ConstraintSolverEnv) ndeep m2 trace ty
758758 CompleteD
759759else
760760match tryDestTyparTy g tywith
761- | None -> CompleteD
762- | Some destTypar->
761+ | ValueNone -> CompleteD
762+ | ValueSome destTypar->
763763 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.DefaultsTo( priority, dty, m))
764764
765765| TyparConstraint.SupportsNull m2-> SolveTypeSupportsNull csenv ndeep m2 trace ty
@@ -1458,7 +1458,7 @@ and GetRelevantMethodsForTrait (csenv:ConstraintSolverEnv) permitWeakResolution
14581458
14591459/// The nominal support of the member constraint
14601460and GetSupportOfMemberConstraint ( csenv : ConstraintSolverEnv ) ( TTrait ( tys , _ , _ , _ , _ , _ )) =
1461- tys|> List.choose( tryAnyParTy csenv.g)
1461+ tys|> List.choose( tryAnyParTyOption csenv.g)
14621462
14631463/// All the typars relevant to the member constraint *)
14641464and GetFreeTyparsOfMemberConstraint ( csenv : ConstraintSolverEnv ) ( TTrait ( tys , _ , _ , argtys , rty , _ )) =
@@ -1475,9 +1475,9 @@ and SolveRelevantMemberConstraints (csenv:ConstraintSolverEnv) ndeep permitWeakR
14751475/// Normalize the typar
14761476let ty = mkTyparTy tp
14771477match tryAnyParTy csenv.g tywith
1478- | Some tp->
1478+ | ValueSome tp->
14791479 SolveRelevantMemberConstraintsForTypar csenv ndeep permitWeakResolution trace tp
1480- | None ->
1480+ | ValueNone ->
14811481 ResultDfalse ))
14821482
14831483and SolveRelevantMemberConstraintsForTypar ( csenv : ConstraintSolverEnv ) ndeep permitWeakResolution ( trace : OptionalTrace ) tp =
@@ -1690,9 +1690,9 @@ and SolveTypeSupportsNull (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
16901690let m = csenv.m
16911691let denv = csenv.DisplayEnv
16921692match tryDestTyparTy g tywith
1693- | Some destTypar->
1693+ | ValueSome destTypar->
16941694 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.SupportsNull m)
1695- | None ->
1695+ | ValueNone ->
16961696if TypeSatisfiesNullConstraint g m tythen CompleteDelse
16971697match tywith
16981698| NullableTy g_ ->
@@ -1706,12 +1706,12 @@ and SolveTypeSupportsComparison (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
17061706let amap = csenv.amap
17071707let denv = csenv.DisplayEnv
17081708match tryDestTyparTy g tywith
1709- | Some destTypar->
1709+ | ValueSome destTypar->
17101710 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.SupportsComparison m)
1711- | None ->
1711+ | ValueNone ->
17121712// Check it isn't ruled out by the user
17131713match tryDestAppTy g tywith
1714- | Some tcrefwhen HasFSharpAttribute g g.attrib_ NoComparisonAttribute tcref.Attribs->
1714+ | ValueSome tcrefwhen HasFSharpAttribute g g.attrib_ NoComparisonAttribute tcref.Attribs->
17151715 ErrorD( ConstraintSolverError( FSComp.SR.csTypeDoesNotSupportComparison1( NicePrint.minimalStringOfType denv ty), m, m2))
17161716| _ ->
17171717match tywith
@@ -1750,11 +1750,11 @@ and SolveTypeSupportsEquality (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
17501750let m = csenv.m
17511751let denv = csenv.DisplayEnv
17521752match tryDestTyparTy g tywith
1753- | Some destTypar->
1753+ | ValueSome destTypar->
17541754 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.SupportsEquality m)
1755- | None ->
1755+ | _ ->
17561756match tryDestAppTy g tywith
1757- | Some tcrefwhen HasFSharpAttribute g g.attrib_ NoEqualityAttribute tcref.Attribs->
1757+ | ValueSome tcrefwhen HasFSharpAttribute g g.attrib_ NoEqualityAttribute tcref.Attribs->
17581758 ErrorD( ConstraintSolverError( FSComp.SR.csTypeDoesNotSupportEquality1( NicePrint.minimalStringOfType denv ty), m, m2))
17591759| _ ->
17601760match tywith
@@ -1787,9 +1787,9 @@ and SolveTypeIsEnum (csenv:ConstraintSolverEnv) ndeep m2 trace ty underlying =
17871787let m = csenv.m
17881788let denv = csenv.DisplayEnv
17891789match tryDestTyparTy g tywith
1790- | Some destTypar->
1790+ | ValueSome destTypar->
17911791return ! AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.IsEnum( underlying, m))
1792- | None ->
1792+ | _ ->
17931793if isEnumTy g tythen
17941794do ! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace underlying( underlyingTypeOfEnumTy g ty)
17951795return ! CompleteD
@@ -1803,9 +1803,9 @@ and SolveTypeIsDelegate (csenv:ConstraintSolverEnv) ndeep m2 trace ty aty bty =
18031803let m = csenv.m
18041804let denv = csenv.DisplayEnv
18051805match tryDestTyparTy g tywith
1806- | Some destTypar->
1806+ | ValueSome destTypar->
18071807return ! AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.IsDelegate( aty, bty, m))
1808- | None ->
1808+ | _ ->
18091809if isDelegateTy g tythen
18101810match TryDestStandardDelegateType csenv.InfoReader m AccessibleFromSomewhere tywith
18111811| Some( tupledArgTy, rty) ->
@@ -1823,9 +1823,9 @@ and SolveTypeIsNonNullableValueType (csenv:ConstraintSolverEnv) ndeep m2 trace t
18231823let m = csenv.m
18241824let denv = csenv.DisplayEnv
18251825match tryDestTyparTy g tywith
1826- | Some destTypar->
1826+ | ValueSome destTypar->
18271827return ! AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.IsNonNullableStruct m)
1828- | None ->
1828+ | _ ->
18291829let underlyingTy = stripTyEqnsAndMeasureEqns g ty
18301830if isStructTy g underlyingTythen
18311831if tyconRefEq g g.system_ Nullable_ tcref( tcrefOfAppTy g underlyingTy) then
@@ -1839,9 +1839,9 @@ and SolveTypeIsUnmanaged (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
18391839let m = csenv.m
18401840let denv = csenv.DisplayEnv
18411841match tryDestTyparTy g tywith
1842- | Some destTypar->
1842+ | ValueSome destTypar->
18431843 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.IsUnmanaged m)
1844- | None ->
1844+ | _ ->
18451845if isUnmanagedTy g tythen
18461846 CompleteD
18471847else
@@ -1853,9 +1853,9 @@ and SolveTypeChoice (csenv:ConstraintSolverEnv) ndeep m2 trace ty tys =
18531853let m = csenv.m
18541854let denv = csenv.DisplayEnv
18551855match tryDestTyparTy g tywith
1856- | Some destTypar->
1856+ | ValueSome destTypar->
18571857 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.SimpleChoice( tys, m))
1858- | None ->
1858+ | _ ->
18591859if List.exists( typeEquivAux Erasure.EraseMeasures g ty) tysthen CompleteD
18601860else ErrorD( ConstraintSolverError( FSComp.SR.csTypeNotCompatibleBecauseOfPrintf(( NicePrint.minimalStringOfType denv ty), ( String.concat" ," ( List.map( NicePrint.prettyStringOfTy denv) tys))), m, m2))
18611861
@@ -1865,9 +1865,9 @@ and SolveTypeIsReferenceType (csenv:ConstraintSolverEnv) ndeep m2 trace ty =
18651865let m = csenv.m
18661866let denv = csenv.DisplayEnv
18671867match tryDestTyparTy g tywith
1868- | Some destTypar->
1868+ | ValueSome destTypar->
18691869 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.IsReferenceType m)
1870- | None ->
1870+ | _ ->
18711871if isRefTy g tythen CompleteD
18721872else ErrorD( ConstraintSolverError( FSComp.SR.csGenericConstructRequiresReferenceSemantics( NicePrint.minimalStringOfType denv ty), m, m))
18731873
@@ -1878,23 +1878,23 @@ and SolveTypeRequiresDefaultConstructor (csenv:ConstraintSolverEnv) ndeep m2 tra
18781878let denv = csenv.DisplayEnv
18791879let ty = stripTyEqnsAndMeasureEqns g origTy
18801880match tryDestTyparTy g tywith
1881- | Some destTypar->
1881+ | ValueSome destTypar->
18821882 AddConstraint csenv ndeep m2 trace destTypar( TyparConstraint.RequiresDefaultConstructor m)
1883- | None ->
1883+ | _ ->
18841884if isStructTy g ty&& TypeHasDefaultValue g m tythen
18851885 CompleteD
18861886else
18871887if GetIntrinsicConstructorInfosOfType csenv.InfoReader m ty
18881888|> List.exists( fun x -> x.IsNullary&& IsMethInfoAccessible amap m AccessibleFromEverywhere x)
18891889then
18901890match tryDestAppTy g tywith
1891- | Some tcrefwhen HasFSharpAttribute g g.attrib_ AbstractClassAttribute tcref.Attribs->
1891+ | ValueSome tcrefwhen HasFSharpAttribute g g.attrib_ AbstractClassAttribute tcref.Attribs->
18921892 ErrorD( ConstraintSolverError( FSComp.SR.csGenericConstructRequiresNonAbstract( NicePrint.minimalStringOfType denv origTy), m, m2))
18931893| _ ->
18941894 CompleteD
18951895else
18961896match tryDestAppTy g tywith
1897- | Some tcrefwhen
1897+ | ValueSome tcrefwhen
18981898 tcref.PreEstablishedHasDefaultConstructor||
18991899// F# 3.1 feature: records with CLIMutable attribute should satisfy 'default constructor' constraint
19001900( tcref.IsRecordTycon&& HasFSharpAttribute g g.attrib_ CLIMutableAttribute tcref.Attribs) ->
@@ -2324,7 +2324,7 @@ and ResolveOverloading
23242324
23252325// Func<_> is always considered better than any other delegate type
23262326match tryDestAppTy csenv.g ty1with
2327- | Some tcref1when
2327+ | ValueSome tcref1when
23282328 tcref1.DisplayName= " Func" &&
23292329( match tcref1.PublicPathwith Some p-> p.EnclosingPath= [| " System" |] | _ -> false ) &&
23302330 isDelegateTy g ty1&&
@@ -2657,7 +2657,7 @@ let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo:Trai
26572657match slnwith
26582658| ILMethSln( origTy, extOpt, mref, minst) ->
26592659let metadataTy = convertToTypeWithMetadataIfPossible g origTy
2660- let tcref , _tinst = destAppTy g metadataTy
2660+ let tcref = tcrefOfAppTy g metadataTy
26612661let mdef = IL.resolveILMethodRef tcref.ILTyconRawMetadata mref
26622662let ilMethInfo =
26632663match extOptwith