Skip to content

Commit 68044a6

Browse files
authored
Merge pull request #13314 from dotty-staging/stabilize-refelection-symbol-members-api
Stabilize Symbol member methods in reflection API
2 parents 639288d + 88764c5 commit 68044a6

File tree

4 files changed

+13
-25
lines changed

4 files changed

+13
-25
lines changed

library/src/scala/quoted/Quotes.scala

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3588,21 +3588,17 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
35883588
def declaredFields: List[Symbol]
35893589

35903590
/** Get named non-private fields declared or inherited */
3591-
// TODO: deprecate in 3.1.0 and remove @experimental from fieldMember
3592-
// @deprecated("Use fieldMember", "3.1")
3591+
@deprecated("Use fieldMember", "3.1.0")
35933592
def memberField(name: String): Symbol
35943593

35953594
/** Get named non-private fields declared or inherited */
3596-
@experimental
35973595
def fieldMember(name: String): Symbol
35983596

35993597
/** Get all non-private fields declared or inherited */
3600-
// TODO: deprecate in 3.1.0 and remove @experimental from fieldMembers
3601-
// @deprecated("Use fieldMembers", "3.1")
3598+
@deprecated("Use fieldMembers", "3.1.0")
36023599
def memberFields: List[Symbol]
36033600

36043601
/** Get all non-private fields declared or inherited */
3605-
@experimental
36063602
def fieldMembers: List[Symbol]
36073603

36083604
/** Get non-private named methods defined directly inside the class */
@@ -3612,21 +3608,17 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
36123608
def declaredMethods: List[Symbol]
36133609

36143610
/** Get named non-private methods declared or inherited */
3615-
// TODO: deprecate in 3.1.0 and remove @experimental from methodMember
3616-
// @deprecated("Use methodMember", "3.1")
3611+
@deprecated("Use methodMember", "3.1.0")
36173612
def memberMethod(name: String): List[Symbol]
36183613

36193614
/** Get named non-private methods declared or inherited */
3620-
@experimental
36213615
def methodMember(name: String): List[Symbol]
36223616

36233617
/** Get all non-private methods declared or inherited */
3624-
// TODO: deprecate in 3.1.0 and remove @experimental from methodMembers
3625-
// @deprecated("Use methodMembers", "3.1")
3618+
@deprecated("Use methodMembers", "3.1.0")
36263619
def memberMethods: List[Symbol]
36273620

36283621
/** Get all non-private methods declared or inherited */
3629-
@experimental
36303622
def methodMembers: List[Symbol]
36313623

36323624
/** Get non-private named methods defined directly inside the class */
@@ -3636,21 +3628,17 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
36363628
def declaredTypes: List[Symbol]
36373629

36383630
/** Type member with the given name directly declared in the class */
3639-
// TODO: deprecate in 3.1.0 and remove @experimental from typeMember
3640-
// @deprecated("Use typeMember", "3.1")
3631+
@deprecated("Use typeMember", "3.1.0")
36413632
def memberType(name: String): Symbol
36423633

36433634
/** Type member with the given name directly declared in the class */
3644-
@experimental
36453635
def typeMember(name: String): Symbol
36463636

36473637
/** Type member directly declared in the class */
3648-
// TODO: deprecate in 3.1.0 and remove @experimental from typeMembers
3649-
// @deprecated("Use typeMembers", "3.1")
3638+
@deprecated("Use typeMembers", "3.1.0")
36503639
def memberTypes: List[Symbol]
36513640

36523641
/** Type member directly declared in the class */
3653-
@experimental
36543642
def typeMembers: List[Symbol]
36553643

36563644
/** All members directly declared in the class */

scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ trait ClassLikeSupport:
272272
}
273273
// TODO check given methods?
274274
case dd: DefDef if !dd.symbol.isHiddenByVisibility && dd.symbol.isGiven && !dd.symbol.isArtifact =>
275-
Some(dd.symbol.owner.memberType(dd.name))
275+
Some(dd.symbol.owner.typeMember(dd.name))
276276
.filterNot(_.exists)
277277
.map { _ =>
278278
parseMethod(c, dd.symbol, specificKind =
@@ -312,7 +312,7 @@ trait ClassLikeSupport:
312312
case vd: ValDef if !isSyntheticField(vd.symbol) && (!vd.symbol.flags.is(Flags.Case) || !vd.symbol.flags.is(Flags.Enum)) =>
313313
Some(parseValDef(c, vd))
314314

315-
case c: ClassDef if c.symbol.owner.memberMethod(c.name).exists(_.flags.is(Flags.Given)) =>
315+
case c: ClassDef if c.symbol.owner.methodMember(c.name).exists(_.flags.is(Flags.Given)) =>
316316
Some(parseGivenClasslike(c))
317317

318318
case c: ClassDef if c.symbol.shouldDocumentClasslike && !c.symbol.isGiven =>
@@ -348,7 +348,7 @@ trait ClassLikeSupport:
348348
def inheritance = Some(InheritedFrom(s.symbol.owner.normalizedName, s.symbol.dri))
349349
processTreeOpt(s)(s match
350350
case c: ClassDef if c.symbol.shouldDocumentClasslike && !c.symbol.isGiven => Some(parseClasslike(c, signatureOnly = true))
351-
case c: ClassDef if c.symbol.owner.memberMethod(c.name).exists(_.flags.is(Flags.Given)) => Some(parseGivenClasslike(c))
351+
case c: ClassDef if c.symbol.owner.methodMember(c.name).exists(_.flags.is(Flags.Given)) => Some(parseGivenClasslike(c))
352352
case other => {
353353
val parsed = parseMember(c)(other)
354354
parsed.map(p =>

scaladoc/test/dotty/tools/scaladoc/tasty/comments/CommentExpanderTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ import dotty.tools.scaladoc.tasty.TastyParser
1212
class CommentExpanderTests {
1313
def check(using Quotes)(): Unit =
1414
assertCommentEquals(
15-
reflect.Symbol.requiredClass("tests.B").memberMethod("otherMethod").head,
15+
reflect.Symbol.requiredClass("tests.B").methodMember("otherMethod").head,
1616
"/** This is my foo: Bar, actually. */",
1717
)
1818
assertCommentEquals(
1919
reflect.Symbol.requiredClass("tests.C"),
2020
"/** This is foo: Foo expanded. */",
2121
)
2222
assertCommentEquals(
23-
reflect.Symbol.requiredModule("tests.O").memberMethod("method").head,
23+
reflect.Symbol.requiredModule("tests.O").methodMember("method").head,
2424
"/** This is foo: O's foo. */",
2525
)
2626

scaladoc/test/dotty/tools/scaladoc/tasty/comments/MemberLookupTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ class LookupTestCases[Q <: Quotes](val q: Quotes) {
141141
if s.flags.is(q.reflect.Flags.Module) then s.moduleClass else s
142142
Sym(hackResolveModule(symbol.declaredField(name)))
143143
def fun(name: String) =
144-
val List(sym) = symbol.memberMethod(name)
144+
val List(sym) = symbol.methodMember(name)
145145
Sym(sym)
146-
def tpe(name: String) = Sym(symbol.memberType(name))
146+
def tpe(name: String) = Sym(symbol.typeMember(name))
147147
}
148148

149149
def cls(fqn: String) = Sym(q.reflect.Symbol.classSymbol(fqn))

0 commit comments

Comments
 (0)