Skip to content

Commit ae595d4

Browse files
smoothdeveloperKevinRansom
authored andcommitted
first pass at fixing anonymous fields in ConstraintSolver's exception types (#6604)
Thanks for this.
1 parent f52f4b5 commit ae595d4

File tree

3 files changed

+32
-31
lines changed

3 files changed

+32
-31
lines changed

src/fsharp/CompileOps.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ let OutputPhasedErrorR (os: StringBuilder) (err: PhasedDiagnostic) (suggestNames
610610
if m.StartLine <> m2.StartLine then
611611
os.Append(SeeAlsoE().Format (stringOfRange m)) |> ignore
612612

613-
| ConstraintSolverInfiniteTypes(contextInfo, denv, t1, t2, m, m2) ->
613+
| ConstraintSolverInfiniteTypes(denv, contextInfo, t1, t2, m, m2) ->
614614
// REVIEW: consider if we need to show _cxs (the type parameter constraints)
615615
let t1, t2, _cxs = NicePrint.minimalStringsOfTwoTypes denv t1 t2
616616
os.Append(ConstraintSolverInfiniteTypesE().Format t1 t2) |> ignore

src/fsharp/ConstraintSolver.fs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -155,21 +155,21 @@ type ContextInfo =
155155
/// The type equation comes from a sequence expression.
156156
| SequenceExpression of TType
157157

158-
exception ConstraintSolverTupleDiffLengths of DisplayEnv * TType list * TType list * range * range
159-
exception ConstraintSolverInfiniteTypes of ContextInfo * DisplayEnv * TType * TType * range * range
160-
exception ConstraintSolverTypesNotInEqualityRelation of DisplayEnv * TType * TType * range * range * ContextInfo
161-
exception ConstraintSolverTypesNotInSubsumptionRelation of DisplayEnv * TType * TType * range * range
162-
exception ConstraintSolverMissingConstraint of DisplayEnv * Tast.Typar * Tast.TyparConstraint * range * range
163-
exception ConstraintSolverError of string * range * range
164-
exception ConstraintSolverRelatedInformation of string option * range * exn
165-
166-
exception ErrorFromApplyingDefault of TcGlobals * DisplayEnv * Tast.Typar * TType * exn * range
167-
exception ErrorFromAddingTypeEquation of TcGlobals * DisplayEnv * TType * TType * exn * range
168-
exception ErrorsFromAddingSubsumptionConstraint of TcGlobals * DisplayEnv * TType * TType * exn * ContextInfo * range
169-
exception ErrorFromAddingConstraint of DisplayEnv * exn * range
170-
exception PossibleOverload of DisplayEnv * string * exn * range
171-
exception UnresolvedOverloading of DisplayEnv * exn list * string * range
172-
exception UnresolvedConversionOperator of DisplayEnv * TType * TType * range
158+
exception ConstraintSolverTupleDiffLengths of displayEnv: DisplayEnv * TType list * TType list * range * range
159+
exception ConstraintSolverInfiniteTypes of displayEnv: DisplayEnv * contextInfo: ContextInfo * TType * TType * range * range
160+
exception ConstraintSolverTypesNotInEqualityRelation of displayEnv: DisplayEnv * TType * TType * range * range * ContextInfo
161+
exception ConstraintSolverTypesNotInSubsumptionRelation of displayEnv: DisplayEnv * TType * TType * range * range
162+
exception ConstraintSolverMissingConstraint of displayEnv: DisplayEnv * Tast.Typar * Tast.TyparConstraint * range * range
163+
exception ConstraintSolverError of string * range * range
164+
exception ConstraintSolverRelatedInformation of string option * range * exn
165+
166+
exception ErrorFromApplyingDefault of tcGlobals: TcGlobals * displayEnv: DisplayEnv * Tast.Typar * TType * exn * range
167+
exception ErrorFromAddingTypeEquation of tcGlobals: TcGlobals * displayEnv: DisplayEnv * TType * TType * exn * range
168+
exception ErrorsFromAddingSubsumptionConstraint of tcGlobals: TcGlobals * displayEnv: DisplayEnv * TType * TType * exn * ContextInfo * range
169+
exception ErrorFromAddingConstraint of displayEnv: DisplayEnv * exn * range
170+
exception PossibleOverload of displayEnv: DisplayEnv * string * exn * range
171+
exception UnresolvedOverloading of displayEnv: DisplayEnv * exn list * string * range
172+
exception UnresolvedConversionOperator of displayEnv: DisplayEnv * TType * TType * range
173173

174174
let GetPossibleOverloads amap m denv (calledMethGroup: (CalledMeth<_> * exn) list) =
175175
calledMethGroup |> List.map (fun (cmeth, e) -> PossibleOverload(denv, NicePrint.stringOfMethInfo amap m denv cmeth.Method, e, m))
@@ -385,7 +385,7 @@ let ShowAccessDomain ad =
385385
//-------------------------------------------------------------------------
386386
// Solve
387387

388-
exception NonRigidTypar of DisplayEnv * string option * range * TType * TType * range
388+
exception NonRigidTypar of displayEnv: DisplayEnv * string option * range * TType * TType * range
389389
exception LocallyAbortOperationThatFailsToResolveOverload
390390
exception LocallyAbortOperationThatLosesAbbrevs
391391
let localAbortD = ErrorD LocallyAbortOperationThatLosesAbbrevs
@@ -724,7 +724,7 @@ let rec SolveTyparEqualsType (csenv: ConstraintSolverEnv) ndeep m2 (trace: Optio
724724
// The types may still be equivalent due to abbreviations, which we are trying not to eliminate
725725
if typeEquiv csenv.g ty1 ty then () else
726726
// The famous 'occursCheck' check to catch "infinite types" like 'a = list<'a> - see also https://github.com/Microsoft/visualfsharp/issues/1170
727-
if occursCheck csenv.g r ty then return! ErrorD (ConstraintSolverInfiniteTypes(csenv.eContextInfo, csenv.DisplayEnv, ty1, ty, m, m2)) else
727+
if occursCheck csenv.g r ty then return! ErrorD (ConstraintSolverInfiniteTypes(csenv.DisplayEnv, csenv.eContextInfo, ty1, ty, m, m2)) else
728728
// Note: warn _and_ continue!
729729
do! CheckWarnIfRigid csenv ty1 r ty
730730
// Record the solution before we solve the constraints, since

src/fsharp/ConstraintSolver.fsi

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,22 @@ type ContextInfo =
7676
/// The type equation comes from a sequence expression.
7777
| SequenceExpression of TType
7878

79-
exception ConstraintSolverTupleDiffLengths of DisplayEnv * TType list * TType list * range * range
80-
exception ConstraintSolverInfiniteTypes of ContextInfo * DisplayEnv * TType * TType * range * range
81-
exception ConstraintSolverTypesNotInEqualityRelation of DisplayEnv * TType * TType * range * range * ContextInfo
82-
exception ConstraintSolverTypesNotInSubsumptionRelation of DisplayEnv * TType * TType * range * range
83-
exception ConstraintSolverMissingConstraint of DisplayEnv * Typar * TyparConstraint * range * range
79+
exception ConstraintSolverTupleDiffLengths of displayEnv: DisplayEnv * TType list * TType list * range * range
80+
exception ConstraintSolverInfiniteTypes of displayEnv: DisplayEnv * contextInfo: ContextInfo * TType * TType * range * range
81+
exception ConstraintSolverTypesNotInEqualityRelation of displayEnv: DisplayEnv * TType * TType * range * range * ContextInfo
82+
exception ConstraintSolverTypesNotInSubsumptionRelation of displayEnv: DisplayEnv * TType * TType * range * range
83+
exception ConstraintSolverMissingConstraint of displayEnv: DisplayEnv * Typar * TyparConstraint * range * range
8484
exception ConstraintSolverError of string * range * range
8585
exception ConstraintSolverRelatedInformation of string option * range * exn
86-
exception ErrorFromApplyingDefault of TcGlobals * DisplayEnv * Typar * TType * exn * range
87-
exception ErrorFromAddingTypeEquation of TcGlobals * DisplayEnv * TType * TType * exn * range
88-
exception ErrorsFromAddingSubsumptionConstraint of TcGlobals * DisplayEnv * TType * TType * exn * ContextInfo * range
89-
exception ErrorFromAddingConstraint of DisplayEnv * exn * range
90-
exception UnresolvedConversionOperator of DisplayEnv * TType * TType * range
91-
exception PossibleOverload of DisplayEnv * string * exn * range
92-
exception UnresolvedOverloading of DisplayEnv * exn list * string * range
93-
exception NonRigidTypar of DisplayEnv * string option * range * TType * TType * range
86+
87+
exception ErrorFromApplyingDefault of tcGlobals: TcGlobals * displayEnv: DisplayEnv * Typar * TType * exn * range
88+
exception ErrorFromAddingTypeEquation of tcGlobals: TcGlobals * displayEnv: DisplayEnv * TType * TType * exn * range
89+
exception ErrorsFromAddingSubsumptionConstraint of tcGlobals: TcGlobals * displayEnv: DisplayEnv * TType * TType * exn * ContextInfo * range
90+
exception ErrorFromAddingConstraint of displayEnv: DisplayEnv * exn * range
91+
exception UnresolvedConversionOperator of displayEnv: DisplayEnv * TType * TType * range
92+
exception PossibleOverload of displayEnv: DisplayEnv * string * exn * range
93+
exception UnresolvedOverloading of displayEnv: DisplayEnv * exn list * string * range
94+
exception NonRigidTypar of displayEnv: DisplayEnv * string option * range * TType * TType * range
9495

9596
/// A function that denotes captured tcVal, Used in constraint solver and elsewhere to get appropriate expressions for a ValRef.
9697
type TcValF = (ValRef -> ValUseFlag -> TType list -> range -> Expr * TType)

0 commit comments

Comments
 (0)