From e0596f3a3aaf6f7c8655797bde16110d4d87e50a Mon Sep 17 00:00:00 2001 From: Vasily Kirichenko Date: Mon, 20 Nov 2017 06:57:38 +0300 Subject: [PATCH] fix error range of wrong namespace in open declaration (#3966) --- src/fsharp/NameResolution.fs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 1962251c3..a80ddbf1d 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -1767,11 +1767,11 @@ let rec ResolveLongIndentAsModuleOrNamespace atMostOne amap m fullyQualified (ne UndefinedName(0,FSComp.SR.undefinedNameNamespaceOrModule,id,suggestModulesAndNamespaces)) - let moduleNotFoundErrorCache = ref None - let moduleNotFound (modref: ModuleOrNamespaceRef) (mty:ModuleOrNamespaceType) id depth = - match !moduleNotFoundErrorCache with - | Some error -> error - | None -> + let mutable moduleNotFoundErrorCache = None + let moduleNotFound (modref: ModuleOrNamespaceRef) (mty:ModuleOrNamespaceType) (id:Ident) depth = + match moduleNotFoundErrorCache with + | Some (oldId, error) when oldId = id.idRange -> error + | _ -> let suggestNames() = mty.ModulesAndNamespacesByDemangledName |> Seq.filter (fun kv -> IsEntityAccessible amap m ad (modref.NestedTyconRef kv.Value)) @@ -1779,7 +1779,7 @@ let rec ResolveLongIndentAsModuleOrNamespace atMostOne amap m fullyQualified (ne |> HashSet let error = raze (UndefinedName(depth,FSComp.SR.undefinedNameNamespace,id,suggestNames)) - moduleNotFoundErrorCache := Some error + moduleNotFoundErrorCache <- Some(id.idRange, error) error match moduleOrNamespaces.TryFind id.idText with -- GitLab