Skip to content

Commit ea1b21a

Browse files
committed
Review comments
1 parent 495f786 commit ea1b21a

File tree

5 files changed

+63
-58
lines changed

5 files changed

+63
-58
lines changed

compiler/src/dotty/tools/dotc/transform/AccessProxies.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ abstract class AccessProxies {
136136
*/
137137
def useAccessor(reference: RefTree)(using Context): Tree = {
138138
val accessed = reference.symbol.asTerm
139-
assert(!accessed.hasPublicInBinary)
140139
var accessorClass = hostForAccessorOf(accessed: Symbol)
141140
if (accessorClass.exists) {
142141
if accessorClass.is(Package) then

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ object Checking {
542542
if sym.is(Enum) then fail(em"@publicInBinary cannot be used on enum definitions")
543543
else if sym.isType && !sym.is(Module) && !(sym.is(Given) || sym.companionModule.is(Given)) then fail(em"@publicInBinary cannot be used on ${sym.showKind} definitions")
544544
else if !sym.owner.isClass && !(sym.is(Param) && sym.owner.isConstructor) then fail(em"@publicInBinary cannot be used on local definitions")
545-
else if sym.is(Private) && !sym.privateWithin.exists && !sym.isConstructor then fail(em"@publicInBinary cannot be used on private definitions\n\nCould the definition `private[${sym.owner.name}]` or `protected` instead")
545+
else if sym.is(Private) && !sym.privateWithin.exists && !sym.isConstructor then fail(em"@publicInBinary cannot be used on private definitions\n\nThe definition could be `private[${sym.owner.name}]` or `protected` instead")
546546
if (sym.hasAnnotation(defn.NativeAnnot)) {
547547
if (!sym.is(Deferred))
548548
fail(NativeMembersMayNotHaveImplementation(sym))

compiler/test/dotty/tools/backend/jvm/PublicInBinaryTests.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class PublicInBinaryTests extends DottyBytecodeTest {
3636
val method = getField(classNode, fliedName)
3737
assert((method.access & Opcodes.ACC_PRIVATE) == Opcodes.ACC_PRIVATE)
3838

39+
private def checkPublicClass(classNode: ClassNode): Unit =
40+
assert((classNode.access & privateOrProtectedOpcode) == 0)
41+
3942
@Test
4043
def publicInBinaryDef(): Unit = {
4144
val code =
@@ -194,18 +197,21 @@ class PublicInBinaryTests extends DottyBytecodeTest {
194197
val code =
195198
"""package foo
196199
|import scala.annotation.publicInBinary
197-
|@publicInBinary private object PrivateObject
200+
|private object PrivateObject
198201
|@publicInBinary private[foo] object PackagePrivateObject
199202
|@publicInBinary protected object ProtectedObject
200203
""".stripMargin
201204
checkBCode(code) { dir =>
202205
val privateObject = loadClassNode(dir.subdirectoryNamed("foo").lookupName("PrivateObject$.class", directory = false).input, skipDebugInfo = false)
206+
checkPublicClass(privateObject)
203207
checkPublicField(privateObject, "MODULE$")
204208

205209
val packagePrivateObject = loadClassNode(dir.subdirectoryNamed("foo").lookupName("PackagePrivateObject$.class", directory = false).input, skipDebugInfo = false)
210+
checkPublicClass(packagePrivateObject)
206211
checkPublicField(packagePrivateObject, "MODULE$")
207212

208213
val protectedObject = loadClassNode(dir.subdirectoryNamed("foo").lookupName("ProtectedObject$.class", directory = false).input, skipDebugInfo = false)
214+
checkPublicClass(protectedObject)
209215
checkPublicField(protectedObject, "MODULE$")
210216
}
211217
}

tests/neg/inline-unstable-accessors.check

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:10:4 ------------------------------------------
2-
10 | valBinaryAPI1 + // error
3-
| ^^^^^^^^^^^^^
4-
| Unstable inline accessor foo$A$$inline$valBinaryAPI1 was generated in class A.
1+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:10:6 ------------------------------------------
2+
10 | valBinaryAPI1 + // error
3+
| ^^^^^^^^^^^^^
4+
| Unstable inline accessor foo$A$$inline$valBinaryAPI1 was generated in class A.
55
|--------------------------------------------------------------------------------------------------------------------
66
| Explanation (enabled by `-explain`)
77
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -21,10 +21,10 @@
2121
| added to class A:
2222
| @publicInBinary private[A] final def foo$A$$inline$valBinaryAPI1: Int = this.valBinaryAPI1
2323
--------------------------------------------------------------------------------------------------------------------
24-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:11:4 ------------------------------------------
25-
11 | valBinaryAPI2 + // error
26-
| ^^^^^^^^^^^^^
27-
| Unstable inline accessor foo$A$$inline$valBinaryAPI2 was generated in class A.
24+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:11:6 ------------------------------------------
25+
11 | valBinaryAPI2 + // error
26+
| ^^^^^^^^^^^^^
27+
| Unstable inline accessor foo$A$$inline$valBinaryAPI2 was generated in class A.
2828
|--------------------------------------------------------------------------------------------------------------------
2929
| Explanation (enabled by `-explain`)
3030
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -67,10 +67,10 @@
6767
| added to class B:
6868
| @publicInBinary private[B] def inline$valBinaryAPI2$i1(x$0: foo.A): Int = x$0.valBinaryAPI2
6969
--------------------------------------------------------------------------------------------------------------------
70-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:23:4 ------------------------------------------
71-
23 | valBinaryAPI1 + // error
72-
| ^^^^^^^^^^^^^
73-
| Unstable inline accessor inline$valBinaryAPI1 was generated in class C.
70+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:23:6 ------------------------------------------
71+
23 | valBinaryAPI1 + // error
72+
| ^^^^^^^^^^^^^
73+
| Unstable inline accessor inline$valBinaryAPI1 was generated in class C.
7474
|--------------------------------------------------------------------------------------------------------------------
7575
| Explanation (enabled by `-explain`)
7676
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -90,10 +90,10 @@
9090
| added to class C:
9191
| @publicInBinary private[C] final def inline$valBinaryAPI1: Int = this.valBinaryAPI1
9292
--------------------------------------------------------------------------------------------------------------------
93-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:24:4 ------------------------------------------
94-
24 | valBinaryAPI2 + // error
95-
| ^^^^^^^^^^^^^
96-
| Unstable inline accessor inline$valBinaryAPI2 was generated in class C.
93+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:24:6 ------------------------------------------
94+
24 | valBinaryAPI2 + // error
95+
| ^^^^^^^^^^^^^
96+
| Unstable inline accessor inline$valBinaryAPI2 was generated in class C.
9797
|--------------------------------------------------------------------------------------------------------------------
9898
| Explanation (enabled by `-explain`)
9999
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -136,10 +136,10 @@
136136
| added to class D:
137137
| @publicInBinary private[D] def inline$valBinaryAPI2$i2(x$0: foo.C): Int = x$0.valBinaryAPI2
138138
--------------------------------------------------------------------------------------------------------------------
139-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:36:4 ------------------------------------------
140-
36 | valBinaryAPI1 + // error
141-
| ^^^^^^^^^^^^^
142-
| Unstable inline accessor inline$valBinaryAPI1 was generated in object E.
139+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:36:6 ------------------------------------------
140+
36 | valBinaryAPI1 + // error
141+
| ^^^^^^^^^^^^^
142+
| Unstable inline accessor inline$valBinaryAPI1 was generated in object E.
143143
|--------------------------------------------------------------------------------------------------------------------
144144
| Explanation (enabled by `-explain`)
145145
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -159,10 +159,10 @@
159159
| added to object E:
160160
| @publicInBinary private[E] final def inline$valBinaryAPI1: Int = foo.E.valBinaryAPI1
161161
--------------------------------------------------------------------------------------------------------------------
162-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:37:4 ------------------------------------------
163-
37 | valBinaryAPI2 + // error
164-
| ^^^^^^^^^^^^^
165-
| Unstable inline accessor inline$valBinaryAPI2 was generated in object E.
162+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:37:6 ------------------------------------------
163+
37 | valBinaryAPI2 + // error
164+
| ^^^^^^^^^^^^^
165+
| Unstable inline accessor inline$valBinaryAPI2 was generated in object E.
166166
|--------------------------------------------------------------------------------------------------------------------
167167
| Explanation (enabled by `-explain`)
168168
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -205,10 +205,10 @@
205205
| added to object F:
206206
| @publicInBinary private[F] def inline$valBinaryAPI2$i3(x$0: object foo.E): Int = x$0.valBinaryAPI2
207207
--------------------------------------------------------------------------------------------------------------------
208-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:49:4 ------------------------------------------
209-
49 | valBinaryAPI1 + // error
210-
| ^^^^^^^^^^^^^
211-
| Unstable inline accessor inline$valBinaryAPI1 was generated in package G.
208+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:49:6 ------------------------------------------
209+
49 | valBinaryAPI1 + // error
210+
| ^^^^^^^^^^^^^
211+
| Unstable inline accessor inline$valBinaryAPI1 was generated in package G.
212212
|--------------------------------------------------------------------------------------------------------------------
213213
| Explanation (enabled by `-explain`)
214214
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -228,10 +228,10 @@
228228
| added to package G:
229229
| @publicInBinary private[G] def inline$valBinaryAPI1: Int = foo.G.valBinaryAPI1
230230
--------------------------------------------------------------------------------------------------------------------
231-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:50:4 ------------------------------------------
232-
50 | valBinaryAPI2 + // error
233-
| ^^^^^^^^^^^^^
234-
| Unstable inline accessor inline$valBinaryAPI2 was generated in package G.
231+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:50:6 ------------------------------------------
232+
50 | valBinaryAPI2 + // error
233+
| ^^^^^^^^^^^^^
234+
| Unstable inline accessor inline$valBinaryAPI2 was generated in package G.
235235
|--------------------------------------------------------------------------------------------------------------------
236236
| Explanation (enabled by `-explain`)
237237
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -274,10 +274,10 @@
274274
| added to package H:
275275
| @publicInBinary private[H] def inline$valBinaryAPI2$i4(x$0: foo.G): Int = x$0.valBinaryAPI2
276276
--------------------------------------------------------------------------------------------------------------------
277-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:62:4 ------------------------------------------
278-
62 | valBinaryAPI1 + // error
279-
| ^^^^^^^^^^^^^
280-
| Unstable inline accessor inline$valBinaryAPI1 was generated in package I.
277+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:62:6 ------------------------------------------
278+
62 | valBinaryAPI1 + // error
279+
| ^^^^^^^^^^^^^
280+
| Unstable inline accessor inline$valBinaryAPI1 was generated in package I.
281281
|--------------------------------------------------------------------------------------------------------------------
282282
| Explanation (enabled by `-explain`)
283283
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -297,10 +297,10 @@
297297
| added to package I:
298298
| @publicInBinary private[I] def inline$valBinaryAPI1: Int = foo.I.valBinaryAPI1
299299
--------------------------------------------------------------------------------------------------------------------
300-
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:63:4 ------------------------------------------
301-
63 | valBinaryAPI2 + // error
302-
| ^^^^^^^^^^^^^
303-
| Unstable inline accessor inline$valBinaryAPI2 was generated in package I.
300+
-- [E191] Compatibility Error: tests/neg/inline-unstable-accessors.scala:63:6 ------------------------------------------
301+
63 | valBinaryAPI2 + // error
302+
| ^^^^^^^^^^^^^
303+
| Unstable inline accessor inline$valBinaryAPI2 was generated in package I.
304304
|--------------------------------------------------------------------------------------------------------------------
305305
| Explanation (enabled by `-explain`)
306306
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

tests/neg/inline-unstable-accessors.scala

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ class A:
77
private[foo] val valBinaryAPI2: Int = 1
88
@publicInBinary private[foo] val valBinaryAPI3: Int = 1
99
inline def inlined =
10-
valBinaryAPI1 + // error
11-
valBinaryAPI2 + // error
12-
valBinaryAPI3
10+
valBinaryAPI1 + // error
11+
valBinaryAPI2 + // error
12+
valBinaryAPI3
1313
class B(val a: A):
1414
inline def inlined =
1515
a.valBinaryAPI2 + // error
@@ -20,9 +20,9 @@ final class C:
2020
private[foo] val valBinaryAPI2: Int = 1
2121
@publicInBinary private[foo] val valBinaryAPI3: Int = 1
2222
inline def inlined =
23-
valBinaryAPI1 + // error
24-
valBinaryAPI2 + // error
25-
valBinaryAPI3
23+
valBinaryAPI1 + // error
24+
valBinaryAPI2 + // error
25+
valBinaryAPI3
2626
final class D(val c: C):
2727
inline def inlined =
2828
c.valBinaryAPI2 + // error
@@ -33,9 +33,9 @@ object E:
3333
private[foo] val valBinaryAPI2: Int = 1
3434
@publicInBinary private[foo] val valBinaryAPI3: Int = 1
3535
inline def inlined =
36-
valBinaryAPI1 + // error
37-
valBinaryAPI2 + // error
38-
valBinaryAPI3
36+
valBinaryAPI1 + // error
37+
valBinaryAPI2 + // error
38+
valBinaryAPI3
3939
object F:
4040
inline def inlined =
4141
E.valBinaryAPI2 + // error
@@ -46,9 +46,9 @@ package object G:
4646
private[foo] val valBinaryAPI2: Int = 1
4747
@publicInBinary private[foo] val valBinaryAPI3: Int = 1
4848
inline def inlined =
49-
valBinaryAPI1 + // error
50-
valBinaryAPI2 + // error
51-
valBinaryAPI3
49+
valBinaryAPI1 + // error
50+
valBinaryAPI2 + // error
51+
valBinaryAPI3
5252
package object H:
5353
inline def inlined =
5454
G.valBinaryAPI2 + // error
@@ -59,9 +59,9 @@ package I:
5959
private[foo] val valBinaryAPI2: Int = 1
6060
@publicInBinary private[foo] val valBinaryAPI3: Int = 1
6161
inline def inlined =
62-
valBinaryAPI1 + // error
63-
valBinaryAPI2 + // error
64-
valBinaryAPI3
62+
valBinaryAPI1 + // error
63+
valBinaryAPI2 + // error
64+
valBinaryAPI3
6565
package J:
6666
inline def inlined =
6767
I.valBinaryAPI2 + // error

0 commit comments

Comments
 (0)