@@ -183,6 +183,7 @@ type TypeCheckInfo
183183let amap = tcImports.GetImportMap()
184184let infoReader = new InfoReader( g, amap)
185185let ncenv = new NameResolver( g, amap, infoReader, NameResolution.FakeInstantiationGenerator)
186+ let cenv = SymbolEnv( g, thisCcu, Some ccuSigForFile, tcImports, amap, infoReader)
186187
187188/// Find the most precise naming environment for the given line and column
188189let GetBestEnvForPos cursorPos =
@@ -937,9 +938,9 @@ type TypeCheckInfo
937938( fun () ->
938939match GetDeclItemsForNamesAtPosition( ctok, parseResultsOpt, Some partialName.QualifyingIdents, Some partialName.PartialIdent, partialName.LastDotPos, line, lineStr, partialName.EndColumn+ 1 , ResolveTypeNamesToCtors, ResolveOverloads.Yes, getAllEntities, hasTextChangedSinceLastTypecheck) with
939940| None-> FSharpDeclarationListInfo.Empty
940- | Some( items, denv, ctx, m) ->
941+ | Some( items, denv, ctx, m) ->
941942let items = if isInterfaceFilethen items|> List.filter( fun x -> IsValidSignatureFileItem x.Item) else items
942- let getAccessibility item = FSharpSymbol.GetAccessibility( FSharpSymbol.Create( g , thisCcu , ccuSigForFile , tcImports , item))
943+ let getAccessibility item = FSharpSymbol.GetAccessibility( FSharpSymbol.Create( cenv , item))
943944let currentNamespaceOrModule =
944945 parseResultsOpt
945946|> Option.bind( fun x -> x.ParseTree)
@@ -1010,15 +1011,14 @@ type TypeCheckInfo
10101011
10111012 items|> List.filter( fun ( nm , items ) -> not ( isOpItem( nm, items)) && not ( isFSharpList nm))
10121013
1013-
10141014let items =
10151015// Filter out duplicate names
10161016 items|> List.map( fun ( _nm , itemsWithSameName ) ->
10171017match itemsWithSameNamewith
10181018| [] -> failwith" Unexpected empty bag"
10191019| items->
10201020 items
1021- |> List.map( fun item -> let symbol = FSharpSymbol.Create( g , thisCcu , ccuSigForFile , tcImports , item.Item)
1021+ |> List.map( fun item -> let symbol = FSharpSymbol.Create( cenv , item.Item)
10221022 FSharpSymbolUse( g, denv, symbol, ItemOccurence.Use, m)))
10231023
10241024//end filtering
@@ -1134,7 +1134,7 @@ type TypeCheckInfo
11341134| None| Some([],_,_,_) -> None
11351135| Some( items, denv, _, m) ->
11361136let allItems = items|> List.collect( fun item -> SymbolHelpers.FlattenItems g m item.Item)
1137- let symbols = allItems|> List.map( fun item -> FSharpSymbol.Create( g , thisCcu , ccuSigForFile , tcImports , item))
1137+ let symbols = allItems|> List.map( fun item -> FSharpSymbol.Create( cenv , item))
11381138 Some( symbols, denv, m)
11391139)
11401140( fun msg ->
@@ -1248,7 +1248,7 @@ type TypeCheckInfo
12481248match GetDeclItemsForNamesAtPosition( ctok, None, Some( names), None, None, line, lineStr, colAtEndOfNames, ResolveTypeNamesToCtors, ResolveOverloads.Yes,( fun () -> []), fun _ -> false ) with
12491249| None| Some([], _, _, _) -> None
12501250| Some( item:: _, denv, _, m) ->
1251- let symbol = FSharpSymbol.Create( g , thisCcu , ccuSigForFile , tcImports , item.Item)
1251+ let symbol = FSharpSymbol.Create( cenv , item.Item)
12521252 Some( symbol, denv, m)
12531253)
12541254( fun msg ->
@@ -1400,6 +1400,8 @@ type TypeCheckInfo
14001400/// All open declarations in the file, including auto open modules
14011401member __.OpenDeclarations = openDeclarations
14021402
1403+ member __.SymbolEnv = cenv
1404+
14031405override __.ToString () = " TypeCheckInfo(" + mainInputFileName+ " )"
14041406
14051407type FSharpParsingOptions =
@@ -1887,11 +1889,12 @@ type FSharpCheckProjectResults(projectFileName:string, tcConfigOption, keepAssem
18871889// Not, this does not have to be a SyncOp, it can be called from any thread
18881890member __.GetAllUsesOfAllSymbols () =
18891891let ( tcGlobals , tcImports , thisCcu , ccuSig , tcSymbolUses , _topAttribs , _tcAssemblyData , _ilAssemRef , _ad , _tcAssemblyExpr , _dependencyFiles ) = getDetails()
1892+ let cenv = SymbolEnv( tcGlobals, thisCcu, Some ccuSig, tcImports)
18901893
18911894[| for rin tcSymbolUsesdo
18921895for symbolUsein r.AllUsesOfSymbolsdo
18931896if symbolUse.ItemOccurence<> ItemOccurence.RelatedTextthen
1894- let symbol = FSharpSymbol.Create( tcGlobals , thisCcu , ccuSig , tcImports , symbolUse.Item)
1897+ let symbol = FSharpSymbol.Create( cenv , symbolUse.Item)
18951898yield FSharpSymbolUse( tcGlobals, symbolUse.DisplayEnv, symbol, symbolUse.ItemOccurence, symbolUse.Range) |]
18961899|> async.Return
18971900
@@ -2079,11 +2082,12 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp
20792082
20802083member info.GetAllUsesOfAllSymbolsInFile () =
20812084 threadSafeOp
2082- ( fun () -> [| |])
2083- ( fun scope ->
2084- [| for symbolUsein scope.ScopeSymbolUses.AllUsesOfSymbolsdo
2085- if symbolUse.ItemOccurence<> ItemOccurence.RelatedTextthen
2086- let symbol = FSharpSymbol.Create( scope.TcGlobals, scope.ThisCcu, scope.CcuSigForFile, scope.TcImports, symbolUse.Item)
2085+ ( fun () -> [| |])
2086+ ( fun scope ->
2087+ let cenv = scope.SymbolEnv
2088+ [| for symbolUsein scope.ScopeSymbolUses.AllUsesOfSymbolsdo
2089+ if symbolUse.ItemOccurence<> ItemOccurence.RelatedTextthen
2090+ let symbol = FSharpSymbol.Create( cenv, symbolUse.Item)
20872091yield FSharpSymbolUse( scope.TcGlobals, symbolUse.DisplayEnv, symbol, symbolUse.ItemOccurence, symbolUse.Range) |])
20882092|> async.Return
20892093
@@ -2125,7 +2129,7 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp
21252129member info.OpenDeclarations =
21262130 scopeOptX
21272131|> Option.map( fun scope ->
2128- let cenv = SymbolEnv ( scope.TcGlobals , scope.ThisCcu , Some scope.CcuSigForFile , scope.TcImports )
2132+ let cenv = scope.SymbolEnv
21292133 scope.OpenDeclarations|> Array.map( fun x -> FSharpOpenDeclaration( x.LongId, x.Range, ( x.Modules|> List.map( fun x -> FSharpEntity( cenv, x))), x.AppliedScope, x.IsOwnNamespace)))
21302134|> Option.defaultValue[| |]
21312135