Skip to content

Commit 383c6d9

Browse files
committed
Fix
1 parent 50f3bf5 commit 383c6d9

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/Compiler/Checking/CheckExpressions.fs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

85378543
and TcMethodItemThen (cenv: cenv) overallTy env item methodName minfos tpenv mItem afterResolution staticTyOpt delayed =

0 commit comments

Comments
 (0)