From e157235910619490ebe07caffc0c2906d5a7379f Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Wed, 13 Dec 2023 16:44:01 +0100 Subject: [PATCH 1/2] Checker: recover when checking 'inherit' members --- src/Compiler/Checking/CheckDeclarations.fs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index 09704614b81..a263eaad8db 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -1334,10 +1334,10 @@ module MutRecBindingChecking = // Phase2B: typecheck the argument to an 'inherits' call and build the new object expr for the inherit-call | Phase2AInherit (synBaseTy, arg, baseValOpt, m) -> - let baseTy, tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Use WarnOnIWSAM.Yes envInstance tpenv synBaseTy - let baseTy = baseTy |> convertToTypeWithMetadataIfPossible g let inheritsExpr, tpenv = - try + try + let baseTy, tpenv = TcType cenv NoNewTypars CheckCxs ItemOccurence.Use WarnOnIWSAM.Yes envInstance tpenv synBaseTy + let baseTy = baseTy |> convertToTypeWithMetadataIfPossible g TcNewExpr cenv envInstance tpenv baseTy (Some synBaseTy.Range) true arg m with RecoverableException e -> errorRecovery e m From 8ffbd2e8a46dd040db6c792fcca8f52f4ecb8cf8 Mon Sep 17 00:00:00 2001 From: Eugene Auduchinok Date: Wed, 13 Dec 2023 16:47:33 +0100 Subject: [PATCH 2/2] Add test --- tests/service/Symbols.fs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/service/Symbols.fs b/tests/service/Symbols.fs index f4c417c909d..c52865d8804 100644 --- a/tests/service/Symbols.fs +++ b/tests/service/Symbols.fs @@ -1123,3 +1123,14 @@ let z = builder if symbolUse.Symbol.DisplayName = "builder" then (symbolUse.Range.StartLine, symbolUse.Range.StartColumn), symbolUse.IsFromComputationExpression ] + +module Member = + [] + let ``Inherit 01`` () = + let _, checkResults = getParseAndCheckResults """ +type T() = + inherit Foo() + + let i = 1 +""" + assertHasSymbolUsages ["i"] checkResults