Skip to content

Commit 2da662a

Browse files
committed
refactor
1 parent 1904a78 commit 2da662a

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

compiler/src/dotty/tools/repl/Rendering.scala

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ private[repl] class Rendering(parentClassLoader: Option[ClassLoader] = None):
3535
/** (value, maxElements) => String */
3636
private var myReplStringOf: (Object, Int) => String = _
3737

38+
/** info to add if output got truncated */
39+
private val infoOutputGotTruncated = " ... large output truncated, print value to show all"
40+
3841
/** Class loader used to load compiled code */
3942
private[repl] def classLoader()(using Context) =
4043
if (myClassLoader != null && myClassLoader.root == ctx.settings.outputDir.value) myClassLoader
@@ -52,7 +55,6 @@ private[repl] class Rendering(parentClassLoader: Option[ClassLoader] = None):
5255
}
5356

5457
myClassLoader = new AbstractFileClassLoader(ctx.settings.outputDir.value, parent)
55-
val maxPrintElements = ctx.settings.VreplMaxPrintElements.valueIn(ctx.settingsState)
5658
myReplStringOf = {
5759
// We need to use the ScalaRunTime class coming from the scala-library
5860
// on the user classpath, and not the one available in the current
@@ -61,17 +63,19 @@ private[repl] class Rendering(parentClassLoader: Option[ClassLoader] = None):
6163
// For old API, try to clean up extraneous newlines by stripping suffix and maybe prefix newline.
6264
val scalaRuntime = Class.forName("scala.runtime.ScalaRunTime", true, myClassLoader)
6365
val renderer = "stringOf" // was: replStringOf
64-
try {
65-
val meth = scalaRuntime.getMethod(renderer, classOf[Object], classOf[Int], classOf[Boolean])
66-
val truly = java.lang.Boolean.TRUE
67-
68-
(value: Object, maxElements: Int) => meth.invoke(null, value, maxElements, truly).asInstanceOf[String]
69-
} catch {
70-
case _: NoSuchMethodException =>
71-
val meth = scalaRuntime.getMethod(renderer, classOf[Object], classOf[Int])
72-
73-
(value: Object, maxElements: Int) => meth.invoke(null, value, maxElements).asInstanceOf[String]
66+
def stringOfMaybeTruncated(value: Object, maxElements: Int): String = {
67+
try {
68+
val meth = scalaRuntime.getMethod(renderer, classOf[Object], classOf[Int], classOf[Boolean])
69+
val truly = java.lang.Boolean.TRUE
70+
meth.invoke(null, value, maxElements, truly).asInstanceOf[String]
71+
} catch {
72+
case _: NoSuchMethodException =>
73+
val meth = scalaRuntime.getMethod(renderer, classOf[Object], classOf[Int])
74+
meth.invoke(null, value, maxElements).asInstanceOf[String]
75+
}
7476
}
77+
78+
stringOfMaybeTruncated
7579
}
7680
myClassLoader
7781
}
@@ -83,10 +87,9 @@ private[repl] class Rendering(parentClassLoader: Option[ClassLoader] = None):
8387
* https://github.com/scala/bug/issues/12337
8488
*/
8589
private[repl] def truncate(str: String): String =
86-
val showTruncated = " ... large output truncated, print value to show all"
8790
val ncp = str.codePointCount(0, str.length) // to not cut inside code point
8891
if ncp <= MaxStringElements then str
89-
else str.substring(0, str.offsetByCodePoints(0, MaxStringElements - 1)) + showTruncated
92+
else str.substring(0, str.offsetByCodePoints(0, MaxStringElements - 1)) + infoOutputGotTruncated
9093

9194
/** Return a String representation of a value we got from `classLoader()`. */
9295
private[repl] def replStringOf(value: Object)(using Context): String =

0 commit comments

Comments
 (0)