@@ -2359,7 +2359,7 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial bindsm scopem mutRecNSInfo (env
23592359 let interfacesFromTypeDefn envForTycon tyconMembersData =
23602360 let ( MutRecDefnsPhase2DataForTycon ( _ , _ , declKind , tcref , _ , _ , declaredTyconTypars , members , _ , _ , _ )) = tyconMembersData
23612361 let overridesOK = DeclKind.CanOverrideOrImplement declKind
2362- members |> List.collect ( function
2362+ members |> List.collect ( function
23632363 | SynMemberDefn.Interface( ity, defnOpt, _) ->
23642364 let _ , ty = if tcref.Deref.IsExceptionDecl then [], g.exn_ ty else generalizeTyconRef tcref
23652365 let m = ity.Range
@@ -2373,12 +2373,18 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial bindsm scopem mutRecNSInfo (env
23732373
23742374 if not ( tcref.HasInterface g ity') then
23752375 error( Error( FSComp.SR.tcAllImplementedInterfacesShouldBeDeclared(), ity.Range))
2376- if ( typeEquiv g ity' g.mk_ IComparable_ ty && Option.isSome tcref.GeneratedCompareToValues) ||
2377- ( typeEquiv g ity' g.mk_ IStructuralComparable_ ty && Option.isSome tcref.GeneratedCompareToWithComparerValues) ||
2378- ( typeEquiv g ity' (( mkAppTy g.system_ GenericIComparable_ tcref [ ty])) && Option.isSome tcref.GeneratedCompareToValues) ||
2379- ( typeEquiv g ity' (( mkAppTy g.system_ GenericIEquatable_ tcref [ ty])) && Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues) ||
2380- ( typeEquiv g ity' g.mk_ IStructuralEquatable_ ty && Option.isSome tcref.GeneratedHashAndEqualsWithComparerValues) then
2376+
2377+ let generatedCompareToValues = tcref.GeneratedCompareToValues.IsSome
2378+ let generatedHashAndEqualsWithComparerValues = tcref.GeneratedHashAndEqualsWithComparerValues.IsSome
2379+ let generatedCompareToWithComparerValues = tcref.GeneratedCompareToWithComparerValues.IsSome
2380+
2381+ if ( generatedCompareToValues && typeEquiv g ity' g.mk_ IComparable_ ty) ||
2382+ ( generatedCompareToWithComparerValues && typeEquiv g ity' g.mk_ IStructuralComparable_ ty) ||
2383+ ( generatedCompareToValues && typeEquiv g ity' (( mkAppTy g.system_ GenericIComparable_ tcref [ ty]))) ||
2384+ ( generatedHashAndEqualsWithComparerValues && typeEquiv g ity' (( mkAppTy g.system_ GenericIEquatable_ tcref [ ty]))) ||
2385+ ( generatedHashAndEqualsWithComparerValues && typeEquiv g ity' g.mk_ IStructuralEquatable_ ty) then
23812386 errorR( Error( FSComp.SR.tcDefaultImplementationForInterfaceHasAlreadyBeenAdded(), ity.Range))
2387+
23822388 if overridesOK = WarnOnOverrides then
23832389 warning( IntfImplInIntrinsicAugmentation( ity.Range))
23842390 if overridesOK = ErrorOnOverrides then
0 commit comments