@@ -633,9 +633,9 @@ type internal TypeCheckInfo
633633 GetEnvironmentLookupResolutions( nenv, ad, m, plid, filterCtors, showObsolete)
634634
635635 /// Find record fields in the best naming environment.
636- let GetClassOrRecordFieldsEnvironmentLookupResolutions ( cursorPos , plid ) =
636+ let GetClassOrRecordFieldsEnvironmentLookupResolutions ( cursorPos , plid , fieldsOnly ) =
637637 let ( nenv , ad ), m = GetBestEnvForPos cursorPos
638- let items = ResolvePartialLongIdentToClassOrRecdFields ncenv nenv m ad plid false
638+ let items = ResolvePartialLongIdentToClassOrRecdFields ncenv nenv m ad plid false fieldsOnly
639639 let items = items |> List.map ItemWithNoInst
640640 let items = items |> RemoveDuplicateItems g
641641 let items = items |> RemoveExplicitlySuppressed g
@@ -909,14 +909,14 @@ type internal TypeCheckInfo
909909 items |> List.map DefaultCompletionItem, denv, m
910910
911911 /// Find record fields in the best naming environment.
912- let GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos envItems =
912+ let GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos plid envItems =
913913 // An empty record expression may be completed into something like these:
914914 // { XXX = ... }
915915 // { xxx with XXX ... }
916916 // Provide both expression items in scope and available record fields.
917917 let ( nenv , _ ), m = GetBestEnvForPos cursorPos
918918
919- let fieldItems = getRecordFieldsInScope nenv |> List.map ItemWithNoInst
919+ let fieldItems , _ , _ = GetClassOrRecordFieldsEnvironmentLookupResolutions ( cursorPos , plid , true )
920920 let fieldCompletionItems , _ , _ as fieldsResult = ( fieldItems, nenv.DisplayEnv, m) |> toCompletionItems
921921
922922 match envItems with
@@ -970,10 +970,10 @@ type internal TypeCheckInfo
970970 if isFirstField then
971971 let cursorPos = mkPos line loc
972972 let envItems = GetDeclaredItems ( parseResultsOpt, lineStr, origLongIdentOpt, colAtEndOfNamesAndResidue, residueOpt, lastDotPos, line, loc, filterCtors, resolveOverloads, false , fun () -> [])
973- GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos envItems
973+ GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos plid envItems
974974 else
975975 // { x. } can be either record construction or computation expression. Try to get all visible record fields first
976- match GetClassOrRecordFieldsEnvironmentLookupResolutions( mkPos line loc, plid) |> toCompletionItems with
976+ match GetClassOrRecordFieldsEnvironmentLookupResolutions( mkPos line loc, plid, false ) |> toCompletionItems with
977977 | [],_,_ ->
978978 // no record fields found, return completion list as if we were outside any computation expression
979979 GetDeclaredItems ( parseResultsOpt, lineStr, origLongIdentOpt, colAtEndOfNamesAndResidue, residueOpt, lastDotPos, line, loc, filterCtors, resolveOverloads, false , fun () -> [])
@@ -983,22 +983,21 @@ type internal TypeCheckInfo
983983 | Some( CompletionContext.RecordField RecordContext.Empty) ->
984984 let cursorPos = mkPos line loc
985985 let envItems = GetDeclaredItems ( parseResultsOpt, lineStr, origLongIdentOpt, colAtEndOfNamesAndResidue, residueOpt, lastDotPos, line, loc, filterCtors, resolveOverloads, false , fun () -> [])
986- GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos envItems
987-
986+ GetEnvironmentLookupResolutionsIncludingRecordFieldsAtPosition cursorPos [] envItems
988987
989988 // Completion at ' { XXX = ... with ... } "
990989 | Some( CompletionContext.RecordField( RecordContext.CopyOnUpdate( r, ( plid, _)))) ->
991990 match GetRecdFieldsForExpr( r) with
992991 | None ->
993- Some ( GetClassOrRecordFieldsEnvironmentLookupResolutions( mkPos line loc, plid))
992+ Some ( GetClassOrRecordFieldsEnvironmentLookupResolutions( mkPos line loc, plid, false ))
994993 |> Option.map toCompletionItems
995994 | Some ( items, denv, m) ->
996995 Some ( List.map ItemWithNoInst items, denv, m)
997996 |> Option.map toCompletionItems
998997
999998 // Completion at ' { XXX = ... with ... } "
1000999 | Some( CompletionContext.RecordField( RecordContext.Constructor( typeName))) ->
1001- Some( GetClassOrRecordFieldsEnvironmentLookupResolutions( mkPos line loc, [ typeName]))
1000+ Some( GetClassOrRecordFieldsEnvironmentLookupResolutions( mkPos line loc, [ typeName], false ))
10021001 |> Option.map toCompletionItems
10031002
10041003 // No completion at '...: string'
0 commit comments