@@ -8509,29 +8509,35 @@ and TcTypeItemThen (cenv: cenv) overallTy occ env nm ty tpenv mItem tinstEnclosi
85098509 else
85108510 error(Error(FSComp.SR.tcInvalidUseOfTypeName(), m))
85118511
8512- let reportTypeUsage ty =
8512+ let reportTypeUsage ty m replacing =
85138513 let item = Item.Types(nm, [ty])
8514- CallNameResolutionSinkReplacing cenv.tcSink (function Item.CtorGroup _ -> false | _ -> true) (mItem, env.NameEnv, item, getInst ty, occ, env.eAccessRights)
8514+ let filter = (function Item.CtorGroup _ -> false | _ -> true)
8515+ if replacing then
8516+ CallNameResolutionSinkReplacing cenv.tcSink filter (m, env.NameEnv, item, getInst ty, occ, env.eAccessRights)
8517+ else
8518+ CallNameResolutionSink cenv.tcSink (m, env.NameEnv, item, getInst ty, occ, env.eAccessRights)
85158519
85168520 match delayed with
85178521 | DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs) :: DelayedDotLookup (longId, mLongId) :: otherDelayed ->
85188522 // If Item.Types is returned then the ty will be of the form TType_app(tcref, genericTyargs) where tyargs
85198523 // is a fresh instantiation for tcref. TcNestedTypeApplication will chop off precisely #genericTyargs args
85208524 // and replace them by 'tyargs'
85218525 let ty, tpenv = TcNestedTypeApplication cenv NewTyparsOK CheckCxs occ WarnOnIWSAM.Yes env tpenv mItem mExprAndTypeArgs ty tinstEnclosing tyargs
8526+ reportTypeUsage ty mExprAndTypeArgs false
85228527 let typeNameResInfo = GetLongIdentTypeNameInfo otherDelayed
85238528 let item, mItem, rest, afterResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver (unionRanges mExprAndTypeArgs mLongId) ad env.eNameResEnv ty longId typeNameResInfo IgnoreOverrides true
85248529 TcItemThen cenv overallTy occ env tpenv ((argsOfAppTy g ty), item, mItem, rest, afterResolution) None otherDelayed
85258530
85268531 | DelayedTypeApp(tyargs, _mTypeArgs, mExprAndTypeArgs) :: _delayed' ->
8527- reportTypeUsage ty
8532+ reportTypeUsage ty mItem true
8533+ reportTypeUsage ty mExprAndTypeArgs false
85288534
85298535 // A case where we have an incomplete name e.g. 'Foo<int>.' - we still want to report it to VS!
85308536 let ty, _ = TcNestedTypeApplication cenv NewTyparsOK CheckCxs occ WarnOnIWSAM.Yes env tpenv mItem mExprAndTypeArgs ty tinstEnclosing tyargs
85318537 reportWrongTypeUsageError ty mItem mExprAndTypeArgs
85328538
85338539 | _ ->
8534- reportTypeUsage ty
8540+ reportTypeUsage ty mItem true
85358541 reportWrongTypeUsageError ty mItem mItem
85368542
85378543and TcMethodItemThen (cenv: cenv) overallTy env item methodName minfos tpenv mItem afterResolution staticTyOpt delayed =
0 commit comments