Skip to content

Anonymous interface implementation accessibility when tuple deconstruction is used. #4161

@enricosada

Description

@enricosada

moved from fsharp/fsharp#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

Metadata

Metadata

Assignees

Labels

Area-Compiler-PatternMatchingpattern compilation, active patterns, performance, codegenBugImpact-Medium(Internal MS Team use only) Describes an issue with moderate impact on existing code.

Type

Projects

Status

In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions