@@ -1022,7 +1022,7 @@ let ResolveProvidedTypeNameInEntity (amap, m, typeName, modref: ModuleOrNamespac
10221022#endif
10231023
10241024/// Lookup a type name in an entity.
1025- let LookupTypeNameInEntityMaybeHaveArity ( amap , m , nm , staticResInfo : TypeNameResolutionStaticArgsInfo , modref : ModuleOrNamespaceRef ) =
1025+ let LookupTypeNameInEntityMaybeHaveArity ( amap , m , ad , nm , staticResInfo : TypeNameResolutionStaticArgsInfo , modref : ModuleOrNamespaceRef ) =
10261026 let mtyp = modref.ModuleOrNamespaceType
10271027 let tcrefs =
10281028 match staticResInfo with
@@ -1042,6 +1042,7 @@ let LookupTypeNameInEntityMaybeHaveArity (amap, m, nm, staticResInfo:TypeNameRes
10421042#else
10431043 amap |> ignore
10441044#endif
1045+ let tcrefs = tcrefs |> List.filter ( IsEntityAccessible amap m ad)
10451046 tcrefs
10461047
10471048
@@ -1072,15 +1073,15 @@ let GetNestedTypesOfType (ad, ncenv:NameResolver, optFilter, staticResInfo, chec
10721073
10731074 match optFilter with
10741075 | Some nm ->
1075- LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, m, nm, staticResInfo, tcref)
1076- |> List.map ( MakeNestedType ncenv tinst m)
1076+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, m, ad , nm, staticResInfo, tcref)
1077+ tcrefs |> List.map ( MakeNestedType ncenv tinst m)
10771078 | None ->
10781079#if EXTENSIONTYPING
10791080 match tycon.TypeReprInfo with
10801081 | TProvidedTypeExtensionPoint info ->
10811082 [ for nestedType in info.ProvidedType.PApplyArray(( fun sty -> sty.GetNestedTypes()), " GetNestedTypes" , m) do
10821083 let nestedTypeName = nestedType.PUntaint(( fun t -> t.Name), m)
1083- for nestedTcref in LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, m, nestedTypeName, staticResInfo, tcref) do
1084+ for nestedTcref in LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, m, ad , nestedTypeName, staticResInfo, tcref) do
10841085 yield MakeNestedType ncenv tinst m nestedTcref ]
10851086
10861087 | _ ->
@@ -1971,7 +1972,7 @@ let rec ResolveExprLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv (typeN
19711972
19721973 // Something in a type?
19731974 let tyconSearch =
1974- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, ( if isNil rest then typeNameResInfo.StaticArgsInfo else TypeNameResolutionStaticArgsInfo.Indefinite), modref)
1975+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, ( if isNil rest then typeNameResInfo.StaticArgsInfo else TypeNameResolutionStaticArgsInfo.Indefinite), modref)
19751976 let tcrefs = tcrefs |> List.map ( fun tcref -> ( resInfo, tcref))
19761977 if nonNil rest then
19771978 let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities ( tcrefs, TypeNameResolutionInfo ( ResolveTypeNamesToTypeRefs, TypeNameResolutionStaticArgsInfo.Indefinite), PermitDirectReferenceToGeneratedType.No, unionRanges m id.idRange)
@@ -2181,7 +2182,7 @@ let rec ResolvePatternLongIdentInModuleOrNamespace (ncenv:NameResolver) nenv num
21812182 success( resInfo, Item.Value ( mkNestedValRef modref vspec), rest)
21822183 | _ ->
21832184 // Something in a type? e.g. a literal field
2184- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref)
2185+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref)
21852186 let tcrefs = tcrefs |> List.map ( fun tcref -> ( resInfo, tcref))
21862187 let tyconSearch =
21872188 match lid with
@@ -2300,7 +2301,7 @@ let rec ResolveTypeLongIdentInTyconRefPrim (ncenv:NameResolver) (typeNameResInfo
23002301 CheckForDirectReferenceToGeneratedType ( tcref, PermitDirectReferenceToGeneratedType.No, m)
23012302#endif
23022303 let m = unionRanges m id.idRange
2303- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, typeNameResInfo.StaticArgsInfo, tcref)
2304+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, typeNameResInfo.StaticArgsInfo, tcref)
23042305 let tcrefs = tcrefs |> List.map ( fun tcref -> ( resInfo, tcref))
23052306 let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities ( tcrefs, typeNameResInfo, genOk, m)
23062307 match tcrefs with
@@ -2314,7 +2315,7 @@ let rec ResolveTypeLongIdentInTyconRefPrim (ncenv:NameResolver) (typeNameResInfo
23142315 let m = unionRanges m id.idRange
23152316 // Search nested types
23162317 let tyconSearch =
2317- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, tcref)
2318+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, tcref)
23182319 let tcrefs = tcrefs |> List.map ( fun tcref -> ( resInfo, tcref))
23192320 let tcrefs = CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities ( tcrefs, typeNameResInfo.DropStaticArgsInfo, genOk, m)
23202321 match tcrefs with
@@ -2347,7 +2348,7 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace (ncenv:NameResolver) (ty
23472348 | [] -> error( Error( FSComp.SR.nrUnexpectedEmptyLongId(), m))
23482349 | [ id] ->
23492350 // On all paths except error reporting we have isSome(staticResInfo), hence get at most one result back
2350- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, typeNameResInfo.StaticArgsInfo, modref)
2351+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, typeNameResInfo.StaticArgsInfo, modref)
23512352 match tcrefs with
23522353 | _ :: _ -> tcrefs |> CollectResults ( fun tcref -> success( resInfo, tcref))
23532354 | [] -> raze ( SuggestTypeLongIdentInModuleOrNamespace depth modref id)
@@ -2361,7 +2362,7 @@ let rec private ResolveTypeLongIdentInModuleOrNamespace (ncenv:NameResolver) (ty
23612362 | _ ->
23622363 raze ( UndefinedName( depth, FSComp.SR.undefinedNameNamespaceOrModule, id, NoPredictions))
23632364 let tyconSearch =
2364- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref)
2365+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref)
23652366 match tcrefs with
23662367 | _ :: _ -> tcrefs |> CollectResults ( fun tcref -> ResolveTypeLongIdentInTyconRefPrim ncenv typeNameResInfo ad resInfo genOk ( depth+ 1 ) m tcref rest)
23672368 | [] -> raze ( UndefinedName( depth, FSComp.SR.undefinedNameType, id, NoPredictions))
@@ -2469,7 +2470,7 @@ let rec ResolveFieldInModuleOrNamespace (ncenv:NameResolver) nenv ad (resInfo:Re
24692470 let tyconSearch =
24702471 match lid with
24712472 | _ tn:: rest when nonNil rest ->
2472- let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref)
2473+ let tcrefs = LookupTypeNameInEntityMaybeHaveArity ( ncenv.amap, id.idRange, ad , id.idText, TypeNameResolutionStaticArgsInfo.Indefinite, modref)
24732474 let tcrefs = tcrefs |> List.map ( fun tcref -> ( ResolutionInfo.Empty, tcref))
24742475 let tyconSearch = ResolveLongIdentInTyconRefs ncenv nenv LookupKind.RecdField ( depth+ 1 ) m ad rest typeNameResInfo id.idRange tcrefs
24752476 // choose only fields
0 commit comments