Skip to content

Improve error reporting: report visibility issue between two assemblies #1348

@smoothdeveloper

Description

@smoothdeveloper

What

Declare private or internal member in project A

namespace Foo

[<AutoOpen>]
module internal Utils =
    let normalizeArgName () = ()

Try to use private or internal member in project B

open Foo

module Bar =
    let foo = normalizeArgName ()

Why

It might be worth considering reporting visibility issue when private or internal members of referenced assemblies are used (sometimes due to faulty InternalsVisible assembly declaration)

How

The value 'Foo.Utils.normalizeArgName' is not accessible from this code location

(this is same as error FS1094, but with qualified name)

Note that if I put the qualified name in usage spot:

open Foo

module Bar =
    let foo = Foo.Utils.normalizeArgName ()

I get expected error message.

Related #1103

Metadata

Metadata

Assignees

No one assigned

    Labels

    Feature ImprovementTheme-Simple-F#A cross-community initiative called "Simple F#", keeping people in the sweet spot of the language.

    Type

    No type

    Projects

    Status

    In Progress

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions