Skip to content

Commit 13ce496

Browse files
authored
Merge pull request #15324 from dotty-staging/fix-15323
Make private inline accessors `final`
2 parents cdee7a9 + 13df1bc commit 13ce496

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

Diff for: compiler/src/dotty/tools/dotc/transform/AccessProxies.scala

+5-4
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,18 @@ abstract class AccessProxies {
7676
}
7777

7878
/** A fresh accessor symbol */
79-
private def newAccessorSymbol(owner: Symbol, name: TermName, info: Type, span: Span)(using Context): TermSymbol = {
80-
val sym = newSymbol(owner, name, Synthetic | Method, info, coord = span).entered
81-
if (sym.allOverriddenSymbols.exists(!_.is(Deferred))) sym.setFlag(Override)
79+
private def newAccessorSymbol(owner: Symbol, name: TermName, info: Type, accessed: Symbol)(using Context): TermSymbol = {
80+
val sym = newSymbol(owner, name, Synthetic | Method, info, coord = accessed.span).entered
81+
if accessed.is(Private) then sym.setFlag(Final)
82+
else if sym.allOverriddenSymbols.exists(!_.is(Deferred)) then sym.setFlag(Override)
8283
sym
8384
}
8485

8586
/** An accessor symbol, create a fresh one unless one exists already */
8687
protected def accessorSymbol(owner: Symbol, accessorName: TermName, accessorInfo: Type, accessed: Symbol)(using Context): Symbol = {
8788
def refersToAccessed(sym: Symbol) = accessedBy.get(sym).contains(accessed)
8889
owner.info.decl(accessorName).suchThat(refersToAccessed).symbol.orElse {
89-
val acc = newAccessorSymbol(owner, accessorName, accessorInfo, accessed.span)
90+
val acc = newAccessorSymbol(owner, accessorName, accessorInfo, accessed)
9091
accessedBy(acc) = accessed
9192
acc
9293
}

Diff for: tests/neg/i15323.scala

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class A:
2+
private var x = 0
3+
inline def f1(): Int =
4+
x += 1;
5+
x
6+
7+
class B extends A:
8+
private var x = 0 // error
9+
inline def f2(): Int =
10+
x += 1
11+
x

0 commit comments

Comments
 (0)