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

No fields configured for Bug.

Projects

Status
In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions