@@ -388,20 +388,20 @@ let addInternalsAccessibility env (ccu:CcuThunk) =
388388 eAccessRights = computeAccessRights env.eAccessPath eInternalsVisibleCompPaths env.eFamilyType // update this computed field
389389 eInternalsVisibleCompPaths = compPath :: env.eInternalsVisibleCompPaths }
390390
391- let ModifyNameResEnv f env = { env with eNameResEnv = f env.eNameResEnv }
392-
393391let AddLocalValPrimitive (v:Val) env =
394- let env = ModifyNameResEnv (fun nenv -> AddValRefToNameEnv nenv (mkLocalValRef v)) env
395- { env with eUngeneralizableItems = addFreeItemOfTy v.Type env.eUngeneralizableItems }
392+ { env with
393+ eNameResEnv = AddValRefToNameEnv env.eNameResEnv (mkLocalValRef v)
394+ eUngeneralizableItems = addFreeItemOfTy v.Type env.eUngeneralizableItems }
396395
397396
398397let AddLocalValMap tcSink scopem (vals:Val NameMap) env =
399398 let env =
400399 if vals.IsEmpty then
401400 env
402401 else
403- let env = ModifyNameResEnv (AddValMapToNameEnv vals) env
404- { env with eUngeneralizableItems = NameMap.foldBackRange (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems }
402+ { env with
403+ eNameResEnv = AddValMapToNameEnv vals env.eNameResEnv
404+ eUngeneralizableItems = NameMap.foldBackRange (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems }
405405 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
406406 env
407407
@@ -410,27 +410,29 @@ let AddLocalVals tcSink scopem (vals:Val list) env =
410410 if isNil vals then
411411 env
412412 else
413- let env = ModifyNameResEnv (AddValListToNameEnv vals) env
414- { env with eUngeneralizableItems = List.foldBack (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems }
413+ { env with
414+ eNameResEnv = AddValListToNameEnv vals env.eNameResEnv
415+ eUngeneralizableItems = List.foldBack (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems }
415416 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
416417 env
417418
418- let AddLocalVal tcSink scopem v env =
419- let env = ModifyNameResEnv (fun nenv -> AddValRefToNameEnv nenv (mkLocalValRef v)) env
420- let env = {env with eUngeneralizableItems = addFreeItemOfTy v.Type env.eUngeneralizableItems }
419+ let AddLocalVal tcSink scopem v env =
420+ let env = { env with
421+ eNameResEnv = AddValRefToNameEnv env.eNameResEnv (mkLocalValRef v)
422+ eUngeneralizableItems = addFreeItemOfTy v.Type env.eUngeneralizableItems }
421423 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
422424 env
423425
424426let AddLocalExnDefnAndReport tcSink scopem env (exnc:Tycon) =
425- let env =ModifyNameResEnv (fun nenv -> AddExceptionDeclsToNameEnv BulkAdd.Nonenv (mkLocalEntityRef exnc)) env
427+ let env ={ env with eNameResEnv = AddExceptionDeclsToNameEnv BulkAdd.Noenv.eNameResEnv (mkLocalEntityRef exnc) }
426428 (* Also make VisualStudio think there is an identifier in scope at the range of the identifier text of its binding location *)
427429 CallEnvSink tcSink (exnc.Range, env.NameEnv, env.eAccessRights)
428430 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
429431 env
430432
431433let AddLocalTyconRefs ownDefinition g amap m tcrefs env =
432434 if isNil tcrefs then env else
433- env|> ModifyNameResEnv (fun nenv -> AddTyconRefsToNameEnv BulkAdd.No ownDefinition g amap m falsenenv tcrefs)
435+ { envwith eNameResEnv = AddTyconRefsToNameEnv BulkAdd.No ownDefinition g amap m falseenv.eNameResEnv tcrefs }
434436
435437let AddLocalTycons g amap m (tycons: Tycon list) env =
436438 if isNil tycons then env else
@@ -448,14 +450,14 @@ let AddLocalTyconsAndReport tcSink scopem g amap m tycons env =
448450let OpenModulesOrNamespaces tcSink g amap scopem root env mvvs openDeclaration =
449451 let env =
450452 if isNil mvvs then env else
451- ModifyNameResEnv (fun nenv -> AddModulesAndNamespacesContentsToNameEnv g amap env.eAccessRights scopem rootnenv mvvs) env
453+ { env with eNameResEnv = AddModulesAndNamespacesContentsToNameEnv g amap env.eAccessRights scopem rootenv.eNameResEnv mvvs }
452454 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
453455 CallOpenDeclarationSink tcSink openDeclaration
454456 env
455457
456458let AddRootModuleOrNamespaceRefs g amap m env modrefs =
457459 if isNil modrefs then env else
458- ModifyNameResEnv (fun nenv -> AddModuleOrNamespaceRefsToNameEnv g amap m true env.eAccessRightsnenv modrefs) env
460+ { env with eNameResEnv = AddModuleOrNamespaceRefsToNameEnv g amap m true env.eAccessRightsenv.eNameResEnv modrefs }
459461
460462let AddNonLocalCcu g amap scopem env assemblyName (ccu:CcuThunk, internalsVisibleToAttributes) =
461463
@@ -476,7 +478,7 @@ let AddNonLocalCcu g amap scopem env assemblyName (ccu:CcuThunk, internalsVisib
476478 let env = AddRootModuleOrNamespaceRefs g amap scopem env modrefs
477479 let env =
478480 if isNil tcrefs then env else
479- ModifyNameResEnv (fun nenv -> AddTyconRefsToNameEnv BulkAdd.Yes false g amap scopem truenenv tcrefs) env
481+ { env with eNameResEnv = AddTyconRefsToNameEnv BulkAdd.Yes false g amap scopem trueenv.eNameResEnv tcrefs }
480482 //CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
481483 env
482484
@@ -486,25 +488,26 @@ let AddLocalRootModuleOrNamespace tcSink g amap scopem env (mtyp:ModuleOrNamespa
486488 // Compute the top-rooted type definitions
487489 let tcrefs = mtyp.TypeAndExceptionDefinitions |> List.map mkLocalTyconRef
488490 let env = AddRootModuleOrNamespaceRefs g amap scopem env modrefs
489- let env =
490- if isNil tcrefs then env else
491- ModifyNameResEnv (fun nenv -> AddTyconRefsToNameEnv BulkAdd.No false g amap scopem true nenv tcrefs) env
492- let env = { env with eUngeneralizableItems = addFreeItemOfModuleTy mtyp env.eUngeneralizableItems }
491+ let env = { env with
492+ eNameResEnv = if isNil tcrefs then env.eNameResEnv else AddTyconRefsToNameEnv BulkAdd.No false g amap scopem true env.eNameResEnv tcrefs
493+ eUngeneralizableItems = addFreeItemOfModuleTy mtyp env.eUngeneralizableItems }
493494 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
494495 env
495496
496497let AddModuleAbbreviationAndReport tcSink scopem id modrefs env =
497498 let env =
498499 if isNil modrefs then env else
499- ModifyNameResEnv (fun nenv -> AddModuleAbbrevToNameEnv id nenv modrefs) env
500+ { env with eNameResEnv = AddModuleAbbrevToNameEnv id env.eNameResEnv modrefs }
501+
500502 CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights)
501503 let item = Item.ModuleOrNamespaces modrefs
502504 CallNameResolutionSink tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights)
503505 env
504506
505507let AddLocalSubModule g amap m env (modul:ModuleOrNamespace) =
506- let env = ModifyNameResEnv (fun nenv -> AddModuleOrNamespaceRefToNameEnv g amap m false env.eAccessRights nenv (mkLocalModRef modul)) env
507- let env = { env with eUngeneralizableItems = addFreeItemOfModuleTy modul.ModuleOrNamespaceType env.eUngeneralizableItems }
508+ let env = { env with
509+ eNameResEnv = AddModuleOrNamespaceRefToNameEnv g amap m false env.eAccessRights env.eNameResEnv (mkLocalModRef modul)
510+ eUngeneralizableItems = addFreeItemOfModuleTy modul.ModuleOrNamespaceType env.eUngeneralizableItems }
508511 env
509512
510513let AddLocalSubModuleAndReport tcSink scopem g amap m env (modul:ModuleOrNamespace) =
@@ -518,7 +521,7 @@ let RegisterDeclaredTypars typars env =
518521
519522let AddDeclaredTypars check typars env =
520523 if isNil typars then env else
521- let env =ModifyNameResEnv (fun nenv -> AddDeclaredTyparsToNameEnv checknenv typars) env
524+ let env ={ env with eNameResEnv = AddDeclaredTyparsToNameEnv checkenv.eNameResEnv typars }
522525 RegisterDeclaredTypars typars env
523526
524527/// Compilation environment for typechecking a single file in an assembly. Contains the
@@ -7245,8 +7248,12 @@ and TcComputationExpression cenv env overallTy mWhole interpExpr builderTy tpenv
72457248 /// for all custom operations. This adds them to the completion lists and prevents them being used as values inside
72467249 /// the query.
72477250 let env =
7248- env |> ModifyNameResEnv (fun nenv -> (nenv, customOperationMethods) ||> Seq.fold (fun nenv (nm, _, _, _, _, _, _, _, methInfo) ->
7249- AddFakeNameToNameEnv nm nenv (Item.CustomOperation (nm, (fun () -> customOpUsageText (ident (nm, mBuilderVal))), Some methInfo))))
7251+ if List.isEmpty customOperationMethods then env else
7252+ { env with
7253+ eNameResEnv =
7254+ (env.eNameResEnv, customOperationMethods)
7255+ ||> Seq.fold (fun nenv (nm, _, _, _, _, _, _, _, methInfo) ->
7256+ AddFakeNameToNameEnv nm nenv (Item.CustomOperation (nm, (fun () -> customOpUsageText (ident (nm, mBuilderVal))), Some methInfo))) }
72507257
72517258 // Environment is needed for completions
72527259 CallEnvSink cenv.tcSink (comp.Range, env.NameEnv, ad)
@@ -10411,7 +10418,7 @@ and TcNormalizedBinding declKind (cenv:cenv) env tpenv overallTy safeThisValOpt
1041110418 let item = Item.ActivePatternResult(apinfo, cenv.g.unit_ty, i, tagRange)
1041210419 CallNameResolutionSink cenv.tcSink (tagRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights))
1041310420
10414- ModifyNameResEnv (fun nenv -> AddActivePatternResultTagsToNameEnv apinfonenv ty m) envinner
10421+ { envinner with eNameResEnv = AddActivePatternResultTagsToNameEnv apinfoenvinner.eNameResEnv ty m }
1041510422 | None ->
1041610423 envinner
1041710424