fsharp icon indicating copy to clipboard operation
fsharp copied to clipboard

Anonymous interface implementation accessibility when tuple deconstruction is used.

Open enricosada opened this issue 7 years ago • 2 comments

moved from https://github.com/fsharp/fsharp/issues/802 by @FrankBro

by @FrankBro :

Anonymous interface implementation accessibility when tuple deconstruction is used

Repro steps

module private PM = 
    type PT = 
        abstract A : int
    let a = { new PT with member __.A = 1 } // ok
    let b, c = // PT is less accessible than PT * PT
        { new PT with member __.A = 1 }
        , { new PT with member __.A = 1 }
/home/runner/main.fs(5,9): error FS0410: The type 'PT' is less accessible than the value, member or type 'val patternInput : PM.PT * PM.PT' it is used in

/home/runner/main.fs(5,9): error FS0410: The type 'PT' is less accessible than the value, member or type 'val patternInput : PM.PT * PM.PT' it is used in

Expected behavior

Should work just like a does.

Actual behavior

Compile error

Known workarounds

Construct the tuple after implementing the anonymous interfaces

Related information

Repro'd here: https://repl.it/repls/FavorableDarkturquoiseGordonsetter

enricosada avatar Dec 22 '17 16:12 enricosada

Agree this is a bug. The compiler generated patternInput is either internally considered public or is somehow otherwise triggering the check

dsyme avatar Jan 09 '18 18:01 dsyme

Reminder to self: check with —realsig+

edgarfgp avatar Aug 02 '24 18:08 edgarfgp