- Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
area:metaprogramming:reflectionIssues related to the quotes reflection APIIssues related to the quotes reflection APIitype:bug
Description
Using Symbol.docstring from tests to inspect types defined in main always returns None
.
Compiler version
3.3.3
3.4.1
Minimized code
https://github.com/OndrejSpanel/Scala3-DocStringInTest
main:
import scala.quoted.* object Doc { inline def of[A]: Option[String] = ${ ofImpl[A] } def ofImpl[A: Type](using Quotes): Expr[Option[String]] = { import quotes.reflect.* val symbol = TypeRepr.of[A].typeSymbol Expr(symbol.docstring) } }
/** * my doc string for Main * * @param tracks track listing * */ class Main(tracks: String) object Main { def main(args: Array[String]): Unit = { val docString = Doc.of[Main] println(docString) } }
test:
/** * Doc of Test * */ class Test object Test { def main(args: Array[String]): Unit = { val docString = Doc.of[Main] println(docString) val docStringTest = Doc.of[Test] println(docStringTest) if (docString.isEmpty || docStringTest.isEmpty) System.exit(1) } }
Use Test/run
to run the code.
Output
None Some(/** * Doc of Test * */)
Note: while test can access values of docstring
defined in test. it cannot access any docstring
defined in main, it always gets None
.
Expectation
The docstring
values of symbols defined in the main should be available from tests.
Metadata
Metadata
Assignees
Labels
area:metaprogramming:reflectionIssues related to the quotes reflection APIIssues related to the quotes reflection APIitype:bug