Skip to content

Commit 658ce9b

Browse files
committed
Add debug flag.
1 parent 3957345 commit 658ce9b

File tree

4 files changed

+35
-14
lines changed

4 files changed

+35
-14
lines changed

scaladoc-testcases/src/tests/snippetCompilerTest.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ package snippetCompiler
77
* a
88
* ```
99
*
10+
* ```scala sc:compile&debug
11+
* def a = 2
12+
* val x = 1 + List()
13+
* a
14+
* ```
15+
*
1016
* ```scala sc:compile&failing
1117
* def a = 2
1218
* ```

scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompilationResult.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@ enum MessageLevel(val text: String):
2626
case Info extends MessageLevel("Info")
2727
case Warning extends MessageLevel("Warning")
2828
case Error extends MessageLevel("Error")
29+
case Debug extends MessageLevel("Debug")
2930

scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompiler.scala

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,14 @@ class SnippetCompiler(
6060
errorMessages
6161
}
6262

63-
private def additionalMessages(arg: SnippetCompilerArg, context: Context): Seq[SnippetCompilerMessage] = {
64-
Option.when(arg.is(SCFlags.Fail) && !context.reporter.hasErrors)(
65-
SnippetCompilerMessage(None, "Snippet should not compile but compiled succesfully", MessageLevel.Error)
63+
private def additionalMessages(wrappedSnippet: WrappedSnippet, arg: SnippetCompilerArg, context: Context): Seq[SnippetCompilerMessage] = {
64+
(
65+
Option.when(arg.is(SCFlags.Fail) && !context.reporter.hasErrors)(
66+
SnippetCompilerMessage(None, "Snippet should not compile but compiled succesfully", MessageLevel.Error)
67+
) ++
68+
Option.when(arg.is(SCFlags.Debug))(
69+
SnippetCompilerMessage(None, s"\n${wrappedSnippet.snippet}", MessageLevel.Debug)
70+
)
6671
).toList
6772
}
6873

@@ -86,7 +91,7 @@ class SnippetCompiler(
8691

8792
val messages =
8893
createReportMessage(context.reporter.pendingMessages(using context), wrappedSnippet.lineOffset, wrappedSnippet.columnOffset) ++
89-
additionalMessages(arg, context)
94+
additionalMessages(wrappedSnippet, arg, context)
9095

9196
val t = Option.when(!context.reporter.hasErrors)(target)
9297
SnippetCompilationResult(isSuccessful(arg, context), t, messages)

scaladoc/src/dotty/tools/scaladoc/snippets/SnippetCompilerArgs.scala

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ object SnippetCompilerArg:
99
Set(SCFlags.NoCompile)
1010
)
1111

12-
enum SCFlags(val flagName: String, val forbiddenFlags: Set[SCFlags]):
13-
case Compile extends SCFlags("compile", Set())
14-
case NoCompile extends SCFlags("nocompile", Set())
15-
case Fail extends SCFlags("failing", Set())
12+
sealed trait SCFlags(val flagName: String, val forbiddenFlags: Set[SCFlags])
13+
14+
object SCFlags:
15+
case object Compile extends SCFlags("compile", Set(NoCompile))
16+
case object NoCompile extends SCFlags("nocompile", Set(Compile))
17+
case object Fail extends SCFlags("failing", Set())
18+
case object Debug extends SCFlags("debug", Set())
19+
20+
def values: Seq[SCFlags] = Seq(Compile, NoCompile, Fail, Debug)
1621

1722
case class SnippetCompilerArgs(scArgs: PathBased[SnippetCompilerArg]):
1823
def get(member: Member): Option[SnippetCompilerArg] = member.sources.flatMap(s => scArgs.get(s.path).map(_.elem))
@@ -58,15 +63,19 @@ object SnippetCompilerArgParser extends ArgParser[SnippetCompilerArg]:
5863
)
5964
).partition(_.isRight)
6065

66+
6167
val (flags, errors2) = parsed.collect {
6268
case Right(flag) => flag
6369
} match {
64-
case list => list.map(f =>
65-
list.find(elem => f.forbiddenFlags.contains(elem)) match {
66-
case Some(forbiddenElem) => Left(s"${f.flagName}: Cannot be used with flag: ${forbiddenElem.flagName}")
67-
case None => Right(f)
68-
}
69-
).partition(_.isRight)
70+
case list =>
71+
list.map(f =>
72+
list.find(elem =>
73+
f.forbiddenFlags.contains(elem)
74+
) match {
75+
case Some(forbiddenElem) => Left(s"${f.flagName}: Cannot be used with flag: ${forbiddenElem.flagName}")
76+
case None => Right(f)
77+
}
78+
).partition(_.isRight)
7079
}
7180

7281
val checkedFlags = flags.collect {

0 commit comments

Comments
 (0)