Skip to content

Commit f9b22ce

Browse files
authored
Checker: recover on unresolved type in 'inherit' member (#16429)
* Checker: recover when checking 'inherit' members * Add test
1 parent 68fef88 commit f9b22ce

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/Compiler/Checking/CheckDeclarations.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,10 +1334,10 @@ module MutRecBindingChecking =
13341334

13351335
// Phase2B: typecheck the argument to an 'inherits' call and build the new object expr for the inherit-call
13361336
| Phase2AInherit (synBaseTy, arg, baseValOpt, m) ->
1337-
let baseTy, tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Use WarnOnIWSAM.Yes envInstance tpenv synBaseTy
1338-
let baseTy = baseTy |> convertToTypeWithMetadataIfPossible g
13391337
let inheritsExpr, tpenv =
1340-
try
1338+
try
1339+
let baseTy, tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Use WarnOnIWSAM.Yes envInstance tpenv synBaseTy
1340+
let baseTy = baseTy |> convertToTypeWithMetadataIfPossible g
13411341
TcNewExpr cenv envInstance tpenv baseTy (Some synBaseTy.Range) true arg m
13421342
with RecoverableException e ->
13431343
errorRecovery e m

tests/service/Symbols.fs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,3 +1123,14 @@ let z = builder
11231123
if symbolUse.Symbol.DisplayName = "builder" then
11241124
(symbolUse.Range.StartLine, symbolUse.Range.StartColumn), symbolUse.IsFromComputationExpression
11251125
]
1126+
1127+
module Member =
1128+
[<Test>]
1129+
let ``Inherit 01`` () =
1130+
let _, checkResults = getParseAndCheckResults """
1131+
type T() =
1132+
inherit Foo()
1133+
1134+
let i = 1
1135+
"""
1136+
assertHasSymbolUsages ["i"] checkResults

0 commit comments

Comments
 (0)