Skip to content

Separate compilation violates package-protected accessibility #12321

Closed
scala/scala
#9454
@eed3si9n

Description

@eed3si9n

This is a retroactive bug report on Scala 2.12.x and 2.13.0 ~ 1 since it seems to be fixed in Scala 2.13.2.

reproduction steps

using Scala 2.13.1

bar/B.scala

package bar

protected[bar] class B(x: Int)

foo/Test.scala

package example

import bar.B

object Test {
  def b = new B(1)
}

bash

mkdir -p bar/classes/
mkdir -p foo/classes/
$HOME/Applications/scala-2.13.1/bin/scalac bar/B.scala -d bar/classes
ls bar/classes/bar
# outputs B.class

$HOME/Applications/scala-2.13.1/bin/scalac -cp bar/classes/ foo/Test.scala -d foo/classes
ls foo/classes/example
# outputs Test$.class  Test.class

problem

The separate compilation violates protected[bar].

expectation

Test should not compile.

foo/Test.scala:6: error: not found: type B
  def b = new B(1)
              ^
1 error

note

If I compile all sources together the accessibility is checked correctly:

$ $HOME/Applications/scala-2.13.1/bin/scalac bar/B.scala  foo/Test.scala -d foo/classes
foo/Test.scala:6: error: not found: type B
  def b = new B(1)
              ^
one error found

keyword for search

visibility

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions