Skip to content

Commit c8517d9

Browse files
authored
Remove assembly load notification (#8393)
* Remove assembly addednotification from fsievaluation session * Remove AssemblyReferenceAdded notification * Update FSharpScriptTests.fs
1 parent 9eeaa25 commit c8517d9

File tree

7 files changed

+14
-62
lines changed

7 files changed

+14
-62
lines changed

src/fsharp/CompileOps.fs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4835,10 +4835,10 @@ and [<Sealed>] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse
48354835

48364836
/// Process #r in F# Interactive.
48374837
/// Adds the reference to the tcImports and add the ccu to the type checking environment.
4838-
let RequireDLL (ctok, tcImports: TcImports, tcEnv, thisAssemblyName, m, file, assemblyReferenceAdded: string -> unit) =
4838+
let RequireDLL (ctok, tcImports: TcImports, tcEnv, thisAssemblyName, m, file) =
48394839
let resolutions = CommitOperationResult(tcImports.TryResolveAssemblyReference(ctok, AssemblyReference(m, file, None), ResolveAssemblyReferenceMode.ReportErrors))
48404840
let dllinfos, ccuinfos = tcImports.RegisterAndImportReferencedAssemblies(ctok, resolutions) |> Cancellable.runWithoutCancellation
4841-
4841+
48424842
let asms =
48434843
ccuinfos |> List.map (function
48444844
| ResolvedImportedAssembly asm -> asm
@@ -4847,11 +4847,7 @@ let RequireDLL (ctok, tcImports: TcImports, tcEnv, thisAssemblyName, m, file, as
48474847
let g = tcImports.GetTcGlobals()
48484848
let amap = tcImports.GetImportMap()
48494849
let buildTcEnv tcEnv asm =
4850-
let tcEnv = AddCcuToTcEnv(g, amap, m, tcEnv, thisAssemblyName, asm.FSharpViewOfMetadata, asm.AssemblyAutoOpenAttributes, asm.AssemblyInternalsVisibleToAttributes)
4851-
match asm.FSharpViewOfMetadata.FileName with
4852-
| Some asmPath -> assemblyReferenceAdded asmPath
4853-
| None -> ()
4854-
tcEnv
4850+
AddCcuToTcEnv(g, amap, m, tcEnv, thisAssemblyName, asm.FSharpViewOfMetadata, asm.AssemblyAutoOpenAttributes, asm.AssemblyInternalsVisibleToAttributes)
48554851
let tcEnv = (tcEnv, asms) ||> List.fold buildTcEnv
48564852
tcEnv, (dllinfos, asms)
48574853

src/fsharp/CompileOps.fsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ val WriteOptimizationData: TcGlobals * filename: string * inMem: bool * CcuThunk
684684

685685
/// Process #r in F# Interactive.
686686
/// Adds the reference to the tcImports and add the ccu to the type checking environment.
687-
val RequireDLL: CompilationThreadToken * TcImports * TcEnv * thisAssemblyName: string * referenceRange: range * file: string * assemblyReferenceAdded: (string -> unit) -> TcEnv * (ImportedBinary list * ImportedAssembly list)
687+
val RequireDLL: CompilationThreadToken * TcImports * TcEnv * thisAssemblyName: string * referenceRange: range * file: string -> TcEnv * (ImportedBinary list * ImportedAssembly list)
688688

689689
/// Processing # commands
690690
val ProcessMetaCommandsFromInput :

src/fsharp/FSharp.Compiler.Private.Scripting/FSharpScript.fs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ type FSharpScript(?additionalArgs: string[]) =
1919
let argv = Array.append baseArgs additionalArgs
2020
let fsi = FsiEvaluationSession.Create (config, argv, stdin, stdout, stderr)
2121

22-
[<CLIEvent>]
23-
member __.AssemblyReferenceAdded = fsi.AssemblyReferenceAdded
24-
2522
member __.ValueBound = fsi.ValueBound
2623

2724
[<CLIEvent>]

src/fsharp/fsi/fsi.fs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,6 @@ type internal FsiDynamicCompiler
956956
let outfile = "TMPFSCI.exe"
957957
let assemblyName = "FSI-ASSEMBLY"
958958

959-
let assemblyReferenceAddedEvent = Control.Event<string>()
960959
let valueBoundEvent = Control.Event<_>()
961960
let dependencyAddingEvent = Control.Event<string * string>()
962961
let dependencyAddedEvent = Control.Event<string * string>()
@@ -1260,7 +1259,7 @@ type internal FsiDynamicCompiler
12601259
let tcState = istate.tcState
12611260
let tcEnv,(_dllinfos,ccuinfos) =
12621261
try
1263-
RequireDLL (ctok, tcImports, tcState.TcEnvFromImpls, assemblyName, m, path, assemblyReferenceAddedEvent.Trigger)
1262+
RequireDLL (ctok, tcImports, tcState.TcEnvFromImpls, assemblyName, m, path)
12641263
with e ->
12651264
tcConfigB.RemoveReferencedAssemblyByPath(m,path)
12661265
reraise()
@@ -1402,8 +1401,6 @@ type internal FsiDynamicCompiler
14021401
member __.FormatValue(obj:obj, objTy) =
14031402
valuePrinter.FormatValue(obj, objTy)
14041403

1405-
member __.AssemblyReferenceAdded = assemblyReferenceAddedEvent.Publish
1406-
14071404
member __.ValueBound = valueBoundEvent.Publish
14081405

14091406
member __.DependencyAdding = dependencyAddingEvent.Publish
@@ -1909,8 +1906,6 @@ type internal FsiInteractionProcessor
19091906

19101907
let referencedAssemblies = Dictionary<string, DateTime>()
19111908

1912-
let assemblyReferencedEvent = Control.Event<string>()
1913-
19141909
let mutable currState = initialInteractiveState
19151910
let event = Control.Event<unit>()
19161911
let setCurrState s = currState <- s; event.Trigger()
@@ -2451,8 +2446,6 @@ type internal FsiInteractionProcessor
24512446
let fsiInteractiveChecker = FsiInteractiveChecker(legacyReferenceResolver, checker, tcConfig, istate.tcGlobals, istate.tcImports, istate.tcState)
24522447
fsiInteractiveChecker.ParseAndCheckInteraction(ctok, SourceText.ofString text)
24532448

2454-
member __.AssemblyReferenceAdded = assemblyReferencedEvent.Publish
2455-
24562449

24572450
//----------------------------------------------------------------------------
24582451
// Server mode:
@@ -2862,10 +2855,6 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i
28622855
|> commitResultNonThrowing errorOptions scriptPath errorLogger
28632856
|> function Choice1Of2 (_), errs -> Choice1Of2 (), errs | Choice2Of2 exn, errs -> Choice2Of2 exn, errs
28642857

2865-
[<CLIEvent>]
2866-
/// Event fires every time an assembly reference is added to the execution environment, e.g., via `#r`.
2867-
member __.AssemblyReferenceAdded = fsiDynamicCompiler.AssemblyReferenceAdded
2868-
28692858
/// Event fires when a root-level value is bound to an identifier, e.g., via `let x = ...`.
28702859
member __.ValueBound = fsiDynamicCompiler.ValueBound
28712860

src/fsharp/fsi/fsi.fsi

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,6 @@ type FsiEvaluationSession =
234234
/// A host calls this to report an unhandled exception in a standard way, e.g. an exception on the GUI thread gets printed to stderr
235235
member ReportUnhandledException : exn: exn -> unit
236236

237-
[<CLIEvent>]
238-
/// Event fires every time an assembly reference is added to the execution environment, e.g., via `#r`.
239-
member AssemblyReferenceAdded: IEvent<string>
240-
241237
[<CLIEvent>]
242238
/// Event fires every time a path is added to the include search list, e.g., via `#I`.
243239
member IncludePathAdded: IEvent<string>

tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,34 +30,21 @@ type DependencyManagerInteractiveTests() =
3030
#r @"nuget:Newtonsoft.Json, Version=9.0.1"
3131
0"""
3232
use script = scriptHost()
33-
let mutable assemblyResolveEventCount = 0
34-
let mutable foundAssemblyReference = false
35-
Event.add (fun (assembly: string) ->
36-
assemblyResolveEventCount <- assemblyResolveEventCount + 1
37-
foundAssemblyReference <- String.Compare("Newtonsoft.Json.dll", Path.GetFileName(assembly), StringComparison.OrdinalIgnoreCase) = 0)
38-
script.AssemblyReferenceAdded
3933
let opt = script.Eval(text) |> getValue
4034
let value = opt.Value
4135
Assert.AreEqual(typeof<int>, value.ReflectionType)
4236
Assert.AreEqual(0, value.ReflectionValue :?> int)
43-
Assert.Greater(assemblyResolveEventCount, 0)
44-
Assert.AreEqual(true, foundAssemblyReference)
4537

4638
[<Test>]
4739
member __.``SmokeTest - #r nuget package not found``() =
4840
let text = """
4941
#r @"nuget:System.Collections.Immutable.DoesNotExist, version=1.5.0"
5042
0"""
5143
use script = scriptHost()
52-
let mutable assemblyResolveEventCount = 0
53-
Event.add (fun (assembly: string) ->
54-
assemblyResolveEventCount <- assemblyResolveEventCount + 1)
55-
script.AssemblyReferenceAdded
5644
let opt = script.Eval(text) |> getValue
5745
let value = opt.Value
5846
Assert.AreEqual(typeof<int>, value.ReflectionType)
5947
Assert.AreEqual(0, value.ReflectionValue :?> int)
60-
Assert.AreEqual(0, assemblyResolveEventCount)
6148

6249
[<Test>]
6350
member __.``Dependency add events successful``() =

tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -65,26 +65,21 @@ type InteractiveTests() =
6565
[<Test>]
6666
member __.``Assembly reference event successful``() =
6767
use script = new FSharpScript()
68-
let testAssembly = "System.dll"
69-
let mutable assemblyResolveEventCount = 0
70-
let mutable foundAssemblyReference = false
71-
Event.add (fun (assembly: string) ->
72-
assemblyResolveEventCount <- assemblyResolveEventCount + 1
73-
foundAssemblyReference <- String.Compare(testAssembly, Path.GetFileName(assembly), StringComparison.OrdinalIgnoreCase) = 0)
74-
script.AssemblyReferenceAdded
75-
script.Eval(sprintf "#r \"%s\"" testAssembly) |> ignoreValue
76-
Assert.AreEqual(1, assemblyResolveEventCount)
77-
Assert.True(foundAssemblyReference)
68+
let testCode = """
69+
#r "System.dll"
70+
let stacktype= typeof<System.Collections.Stack>
71+
stacktype.Name = "Stack"
72+
"""
73+
let opt = script.Eval(testCode) |> getValue
74+
let value = opt.Value
75+
Assert.AreEqual(true, value.ReflectionValue :?> bool)
7876

7977
[<Test>]
80-
member __.``Assembly reference event unsuccessful``() =
78+
member __.``Assembly reference unsuccessful``() =
8179
use script = new FSharpScript()
8280
let testAssembly = "not-an-assembly-that-can-be-found.dll"
83-
let mutable foundAssemblyReference = false
84-
Event.add (fun _ -> foundAssemblyReference <- true) script.AssemblyReferenceAdded
8581
let _result, errors = script.Eval(sprintf "#r \"%s\"" testAssembly)
8682
Assert.AreEqual(1, errors.Length)
87-
Assert.False(foundAssemblyReference)
8883

8984
[<Test>]
9085
member __.``Add include path event successful``() =
@@ -130,13 +125,10 @@ type InteractiveTests() =
130125
[<Test>]
131126
member __.``Nuget reference fires multiple events``() =
132127
use script = new FSharpScript(additionalArgs=[|"/langversion:preview"|])
133-
let mutable assemblyRefCount = 0
134128
let mutable includeAddCount = 0
135-
Event.add (fun _ -> assemblyRefCount <- assemblyRefCount + 1) script.AssemblyReferenceAdded
136129
Event.add (fun _ -> includeAddCount <- includeAddCount + 1) script.IncludePathAdded
137130
script.Eval("#r \"nuget:include=NUnitLite, version=3.11.0\"") |> ignoreValue
138131
script.Eval("0") |> ignoreValue
139-
Assert.GreaterOrEqual(assemblyRefCount, 2)
140132
Assert.GreaterOrEqual(includeAddCount, 1)
141133

142134
/// Native dll resolution is not implemented on desktop
@@ -183,8 +175,6 @@ printfn ""%A"" result
183175
123
184176
"
185177
use script = new FSharpScript(additionalArgs=[|"/langversion:preview"|])
186-
let mutable assemblyRefCount = 0;
187-
Event.add (fun _ -> assemblyRefCount <- assemblyRefCount + 1) script.AssemblyReferenceAdded
188178
let opt = script.Eval(code) |> getValue
189179
let value = opt.Value
190180
Assert.AreEqual(123, value.ReflectionValue :?> int32)
@@ -202,8 +192,6 @@ let tInput = new DenseTensor<float>(inputValues.AsMemory(), new ReadOnlySpan<int
202192
tInput.Length
203193
"
204194
use script = new FSharpScript(additionalArgs=[|"/langversion:preview"|])
205-
let mutable assemblyRefCount = 0;
206-
Event.add (fun _ -> assemblyRefCount <- assemblyRefCount + 1) script.AssemblyReferenceAdded
207195
let opt = script.Eval(code) |> getValue
208196
let value = opt.Value
209197
Assert.AreEqual(4L, value.ReflectionValue :?> int64)
@@ -230,7 +218,6 @@ else
230218
123
231219
"
232220
use script = new FSharpScript(additionalArgs=[|"/langversion:preview"|])
233-
let mutable assemblyRefCount = 0;
234221
let opt = script.Eval(code) |> getValue
235222
let value = opt.Value
236223
Assert.AreEqual(123, value.ReflectionValue :?> int32)

0 commit comments

Comments
 (0)