Skip to content
This repository was archived by the owner on Dec 23, 2024. It is now read-only.

Commit bedb9fa

Browse files
abelbraaksmacharlesroddie
authored andcommitted
Remove CompactFramework references (dotnet#9987)
* Remove CompactFramework-supporting implementations * Remove unneeded TryDeref and simplify OR logic * Revert "Remove unneeded TryDeref and simplify OR logic" This reverts commit 9fb63c26d0f32a47556900f62ac87d8dcb810903. * remove CompactFramework reference and simplify or logic take 2 * ws cleanup Co-authored-by: Charles Roddie <[email protected]>
1 parent 64ff06e commit bedb9fa

File tree

3 files changed

+13
-25
lines changed

3 files changed

+13
-25
lines changed

src/fsharp/FSharp.Core/event.fs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,10 @@ namespace Microsoft.FSharp.Control
9797
// CreateDelegate creates a delegate that is fast to invoke.
9898
invoker.Invoke(multicast, sender, args) |> ignore
9999

100-
member x.Publish =
101-
// Note, we implement each interface explicitly: this works around a bug in the CLR
102-
// implementation on CompactFramework 3.7, used on Windows Phone 7
100+
member x.Publish =
103101
{ new obj() with
104102
member x.ToString() = "<published event>"
105-
interface IEvent<'Delegate,'Args>
106-
interface IDelegateEvent<'Delegate> with
103+
interface IEvent<'Delegate,'Args> with
107104
member e.AddHandler(d) =
108105
multicast <- System.Delegate.Combine(multicast, d) :?> 'Delegate
109106
member e.RemoveHandler(d) =
@@ -126,13 +123,10 @@ namespace Microsoft.FSharp.Control
126123
match x.multicast with
127124
| null -> ()
128125
| d -> d.Invoke(null,arg) |> ignore
129-
member x.Publish =
130-
// Note, we implement each interface explicitly: this works around a bug in the CLR
131-
// implementation on CompactFramework 3.7, used on Windows Phone 7
126+
member x.Publish =
132127
{ new obj() with
133128
member x.ToString() = "<published event>"
134-
interface IEvent<'T>
135-
interface IDelegateEvent<Handler<'T>> with
129+
interface IEvent<'T> with
136130
member e.AddHandler(d) =
137131
x.multicast <- (System.Delegate.Combine(x.multicast, d) :?> Handler<'T>)
138132
member e.RemoveHandler(d) =

src/fsharp/FSharp.Core/seqcore.fs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,9 @@ namespace Microsoft.FSharp.Core.CompilerServices
335335
(FinallyEnumerable(compensation, (fun () -> source)) :> seq<_>)
336336

337337
let CreateEvent (addHandler : 'Delegate -> unit) (removeHandler : 'Delegate -> unit) (createHandler : (obj -> 'Args -> unit) -> 'Delegate ) :IEvent<'Delegate,'Args> =
338-
// Note, we implement each interface explicitly: this works around a bug in the CLR
339-
// implementation on CompactFramework 3.7, used on Windows Phone 7
340338
{ new obj() with
341339
member x.ToString() = "<published event>"
342-
interface IEvent<'Delegate,'Args>
343-
interface IDelegateEvent<'Delegate> with
340+
interface IEvent<'Delegate,'Args> with
344341
member x.AddHandler(h) = addHandler h
345342
member x.RemoveHandler(h) = removeHandler h
346343
interface System.IObservable<'Args> with

src/fsharp/TypedTreeBasics.fs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -412,17 +412,14 @@ let primUnionCaseRefEq compilingFslib fslibCcu (UnionCaseRef(tcr1, c1) as uc1) (
412412
///
413413
/// Note this routine doesn't take type forwarding into account
414414
let primValRefEq compilingFslib fslibCcu (x: ValRef) (y: ValRef) =
415-
x === y ||
416-
if (x.IsResolved && y.IsResolved && x.ResolvedTarget === y.ResolvedTarget) ||
417-
(x.IsLocalRef && y.IsLocalRef && valEq x.ResolvedTarget y.ResolvedTarget) then
418-
true
419-
else
420-
(// Use TryDeref to guard against the platforms/times when certain F# language features aren't available,
421-
// e.g. CompactFramework doesn't have support for quotations.
422-
match x.TryDeref with
423-
| ValueSome v1 -> match y.TryDeref with ValueSome v2 -> v1 === v2 | _ -> false
424-
| _ -> match y.TryDeref with ValueNone -> true | _ -> false)
425-
|| (if compilingFslib then fslibValRefEq fslibCcu x y else false)
415+
x === y
416+
|| (x.IsResolved && y.IsResolved && x.ResolvedTarget === y.ResolvedTarget)
417+
|| (x.IsLocalRef && y.IsLocalRef && valEq x.ResolvedTarget y.ResolvedTarget)
418+
|| // Use TryDeref to guard against the platforms/times when certain F# language features aren't available
419+
match x.TryDeref with
420+
| ValueSome v1 -> match y.TryDeref with ValueSome v2 -> v1 === v2 | ValueNone -> false
421+
| ValueNone -> match y.TryDeref with ValueNone -> true | ValueSome _ -> false
422+
|| (compilingFslib && fslibValRefEq fslibCcu x y)
426423

427424
//---------------------------------------------------------------------------
428425
// pubpath/cpath mess

0 commit comments

Comments
 (0)