Skip to content

Commit 50a8ded

Browse files
committed
Merge branch '2.13.x' into issue/11839
2 parents d2ec0a5 + f0e9c40 commit 50a8ded

File tree

153 files changed

+427
-374
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+427
-374
lines changed

build.sbt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ Global / mimaReferenceVersion := Some("2.13.0")
8989
import com.typesafe.tools.mima.core._
9090
val mimaFilterSettings = Seq {
9191
mimaBinaryIssueFilters ++= Seq(
92+
ProblemFilters.exclude[IncompatibleSignatureProblem]("*"),
93+
ProblemFilters.exclude[InaccessibleMethodProblem]("java.lang.Object.<clinit>"),
9294
ProblemFilters.exclude[Problem]("scala.reflect.internal.*"),
9395
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.reflect.runtime.JavaMirrors#JavaMirror.typeTag"),
9496
ProblemFilters.exclude[MissingClassProblem]("scala.reflect.runtime.JavaMirrors$JavaMirror$typeTagCache$"),
@@ -193,7 +195,7 @@ lazy val instanceSettings = Seq[Setting[_]](
193195
// We create a managed copy to prevent sbt from putting it on the classpath where we don't want it
194196
if(s.isManagedVersion) s else {
195197
import sbt.internal.inc.ScalaInstance
196-
val s2 = new ScalaInstance(s.version, s.loader, s.loaderLibraryOnly, s.libraryJar, s.compilerJar, s.allJars, Some(s.actualVersion))
198+
val s2 = new ScalaInstance(s.version, s.loader, s.loaderLibraryOnly, s.libraryJars, s.compilerJar, s.allJars, Some(s.actualVersion))
197199
assert(s2.isManagedVersion)
198200
s2
199201
}

project/DottySupport.scala

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scala.build
22

33
import sbt._
44
import sbt.Keys._
5+
import java.io.File
56

67
import sbt.librarymanagement.{
78
ivy, DependencyResolution, ScalaModuleInfo, UpdateConfiguration, UnresolvedWarningConfiguration
@@ -25,6 +26,19 @@ object DottySupport {
2526
// Needed to compile dotty-library together with scala-library
2627
compileOrder := CompileOrder.Mixed,
2728

29+
// Add the dotty-library sources to the sourcepath
30+
scalacOptions in Compile := {
31+
val old = (scalacOptions in Compile).value
32+
33+
val (beforeSourcepath, "-sourcepath" :: oldSourcepath :: afterSourcePath) = old.span(_ != "-sourcepath")
34+
35+
val newSourcepath =
36+
((sourceManaged in Compile).value / "dotty-library-src").getAbsolutePath +
37+
File.pathSeparator + oldSourcepath
38+
39+
beforeSourcepath ++ ("-sourcepath" :: newSourcepath :: afterSourcePath)
40+
},
41+
2842
// Some files shouldn't be compiled
2943
excludeFilter in unmanagedSources ~= (old =>
3044
old ||
@@ -41,14 +55,7 @@ object DottySupport {
4155
val name = file.name
4256
val path = file.getCanonicalPath
4357
file.isFile &&
44-
(path.endsWith(".scala") || path.endsWith(".java")) &&
45-
!file.getCanonicalPath.contains("src-non-bootstrapped") &&
46-
// Copies of files already present in the scala-library present until
47-
// Dotty switches to 2.13.
48-
!path.endsWith("scala/runtime/ModuleSerializationProxy.java") &&
49-
!path.endsWith("scala/ValueOf.scala") &&
50-
// Corresponding files have been copied in this repo
51-
!path.contains("scalaShadowing")
58+
(path.endsWith(".scala") || path.endsWith(".java"))
5259
}
5360
}
5461

project/SavedLogs.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ object SavedLogs {
2727

2828
def clearSavedLogsImpl(): Unit = synchronized { savedLogs.clear() }
2929

30-
class MyAppender(val name: String) extends AbstractAppender(name, null, null, true) {
30+
class MyAppender(val name: String) extends AbstractAppender(name, null, null, true, Array()) {
3131
start()
3232
val buf = new mutable.ArrayBuffer[StringEvent]
3333
override def append(logEvent: core.LogEvent): Unit = {

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=1.2.8
1+
sbt.version=1.3.7

project/plugins.sbt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ buildInfoKeys := Seq[BuildInfoKey](buildClasspath)
1717

1818
buildInfoPackage := "scalabuild"
1919

20-
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.3.0")
20+
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.6.1")
2121

2222
libraryDependencies ++= Seq(
2323
"org.eclipse.jgit" % "org.eclipse.jgit" % "4.6.0.201612231935-r",
@@ -31,13 +31,11 @@ concurrentRestrictions in Global := Seq(
3131

3232
addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.3.3")
3333

34-
scalaVersion := "2.12.7"
35-
3634
addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.0.0")
3735

3836
// See DottySupport.scala
3937
if (Option(System.getProperty("scala.build.compileWithDotty")).map(_.toBoolean).getOrElse(false))
40-
Seq(addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.3.3"))
38+
Seq(addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.3.4"))
4139
else
4240
Seq()
4341

scripts/common

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ else
1111
fi
1212

1313
SBT_CMD=${SBT_CMD-sbt}
14-
SBT_CMD="$SBT_CMD -sbt-version 1.2.8"
14+
SBT_CMD="$SBT_CMD -sbt-version 1.3.7"
1515

1616
# repo to publish builds
1717
integrationRepoUrl=${integrationRepoUrl-"https://scala-ci.typesafe.com/artifactory/scala-integration/"}

src/compiler/scala/tools/nsc/PhaseAssembly.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package scala.tools.nsc
1414

1515
import scala.collection.mutable
16-
import scala.language.postfixOps
1716

1817
/** Converts an unordered morass of components into an order that
1918
* satisfies their mutual constraints.
@@ -104,7 +103,7 @@ trait PhaseAssembly {
104103
/* Test if there are cycles in the graph, assign levels to the nodes
105104
* and collapse hard links into nodes
106105
*/
107-
def collapseHardLinksAndLevels(node: Node, lvl: Int) {
106+
def collapseHardLinksAndLevels(node: Node, lvl: Int): Unit = {
108107
if (node.visited) {
109108
dump("phase-cycle")
110109
throw new FatalError(s"Cycle in phase dependencies detected at ${node.phasename}, created phase-cycle.dot")
@@ -288,7 +287,7 @@ trait PhaseAssembly {
288287
* file showing its structure.
289288
* Plug-in supplied phases are marked as green nodes and hard links are marked as blue edges.
290289
*/
291-
private def graphToDotFile(graph: DependencyGraph, filename: String) {
290+
private def graphToDotFile(graph: DependencyGraph, filename: String): Unit = {
292291
val sbuf = new StringBuilder
293292
val extnodes = new mutable.HashSet[graph.Node]()
294293
val fatnodes = new mutable.HashSet[graph.Node]()

src/compiler/scala/tools/nsc/PipelineMain.scala

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@
1212

1313
package scala.tools.nsc
1414

15-
import java.io.{BufferedOutputStream, File}
15+
import java.io.File
1616
import java.lang.Thread.UncaughtExceptionHandler
17-
import java.nio.file.attribute.FileTime
1817
import java.nio.file.{Files, Path, Paths}
19-
import java.time.Instant
2018
import java.util.concurrent.ConcurrentHashMap
2119
import java.util.concurrent.atomic.{AtomicBoolean, AtomicInteger}
2220
import java.util.{Collections, Locale}
@@ -25,13 +23,13 @@ import javax.tools.Diagnostic.Kind
2523
import javax.tools.{Diagnostic, DiagnosticListener, JavaFileObject, ToolProvider}
2624

2725
import scala.collection.{immutable, mutable}
26+
import scala.collection.immutable.ArraySeq.unsafeWrapArray
2827
import scala.concurrent._
2928
import scala.concurrent.duration.Duration
3029
import scala.jdk.CollectionConverters._
3130
import scala.math.Ordering.Double.TotalOrdering
32-
import scala.reflect.internal.pickling.PickleBuffer
3331
import scala.reflect.internal.util.{BatchSourceFile, FakePos, NoPosition, Position}
34-
import scala.reflect.io.{PlainNioFile, RootPath}
32+
import scala.reflect.io.PlainNioFile
3533
import scala.tools.nsc.PipelineMain.{OutlineTypePipeline, Pipeline, Traditional}
3634
import scala.tools.nsc.io.AbstractFile
3735
import scala.tools.nsc.reporters.{ConsoleReporter, Reporter}
@@ -111,7 +109,6 @@ class PipelineMainClass(argFiles: Seq[Path], pipelineSettings: PipelineMain.Pipe
111109
val projects: List[Task] = argFiles.toList.map(commandFor)
112110
if (reporter.hasErrors) return false
113111

114-
val numProjects = projects.size
115112
val produces = mutable.LinkedHashMap[Path, Task]()
116113
for (p <- projects) {
117114
produces(p.outputDir) = p
@@ -664,7 +661,7 @@ object PipelineMain {
664661
case Array(path) if Files.isDirectory(Paths.get(path)) =>
665662
Files.walk(Paths.get(path)).iterator().asScala.filter(_.getFileName.toString.endsWith(".args")).toList
666663
case _ =>
667-
args.map(Paths.get(_))
664+
unsafeWrapArray(args.map(Paths.get(_)))
668665
}
669666
val main = new PipelineMainClass(argFiles, defaultSettings)
670667
val result = main.process()

src/compiler/scala/tools/nsc/ast/TreeBrowsers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ abstract class TreeBrowsers {
276276
val jmiGoto = new JMenuItem(
277277
new AbstractAction("Go to unit") {
278278
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, menuKey, false))
279-
override def actionPerformed(actionEvent: ActionEvent) {
279+
override def actionPerformed(actionEvent: ActionEvent): Unit = {
280280
val query = JOptionPane.showInputDialog("Go to unit:", frame.getOwner)
281281
if (query ne null) { // "Cancel" returns null
282282
val units = treeModel.program.units

src/compiler/scala/tools/nsc/ast/parser/Scanners.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,10 +1094,10 @@ trait Scanners extends ScannersCommon {
10941094
syntaxError("Invalid literal number")
10951095
}
10961096

1097-
@inline private def isNumberSeparator(c: Char): Boolean = c == '_' //|| c == '\''
1097+
@inline private def isNumberSeparator(c: Char): Boolean = c == '_'
10981098

10991099
@inline private def removeNumberSeparators(s: String): String =
1100-
if (s.indexOf('_') > 0) s.replaceAllLiterally("_", "") /*.replaceAll("'","")*/ else s
1100+
if (s.indexOf('_') > 0) s.replace("_", "") else s
11011101

11021102
// disallow trailing numeric separator char, but let lexing limp along
11031103
def checkNoTrailingSeparator(): Unit =

src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ abstract class BCodeHelpers extends BCodeIdiomatic {
6464
def needsStaticImplMethod(sym: Symbol) = sym.hasAttachment[global.mixer.NeedStaticImpl.type]
6565

6666
final def traitSuperAccessorName(sym: Symbol): String = {
67-
val name = sym.javaSimpleName
68-
if (sym.isMixinConstructor) name.toString
69-
else name + nme.NAME_JOIN_STRING
67+
val nameString = sym.javaSimpleName.toString
68+
if (sym.isMixinConstructor) nameString
69+
else nameString + nme.NAME_JOIN_STRING
7070
}
7171

7272
/**

src/compiler/scala/tools/nsc/backend/jvm/BTypes.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import java.lang.{StringBuilder, ThreadLocal}
1818

1919
import scala.annotation.tailrec
2020
import scala.collection.SortedMap
21-
import scala.tools.asm
22-
import scala.tools.asm.Opcodes
21+
import scala.collection.immutable.ArraySeq.unsafeWrapArray
22+
import scala.tools.asm, asm.Opcodes
2323
import scala.tools.nsc.backend.jvm.BTypes.{InlineInfo, InternalName}
2424
import scala.tools.nsc.backend.jvm.BackendReporting._
2525
import scala.tools.nsc.backend.jvm.opt._
@@ -1145,7 +1145,7 @@ object BTypes {
11451145
i += 1
11461146
}
11471147
scala.util.Sorting.quickSort(result)(Ordering.by(_._1))
1148-
result
1148+
unsafeWrapArray(result)
11491149
}
11501150
}
11511151

src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,9 @@ abstract class BTypesFromSymbols[G <: Global](val global: G) extends BTypes {
404404
* Here we get rid of the module class B, making sure that the class B is present.
405405
*/
406406
def nestedClassSymbolsNoJavaModuleClasses = nestedClassSymbols.filter { s =>
407-
val ok = !(s.isJavaDefined && s.isModuleClass) && !s.isPackage
407+
val ok = !(s.isJavaDefined && s.isModuleClass) && !s.hasPackageFlag
408408
if (!ok)
409-
if (!s.isPackage) {
409+
if (!s.hasPackageFlag) {
410410
// We could also search in nestedClassSymbols for s.linkedClassOfClass, but sometimes that
411411
// returns NoSymbol, so it doesn't work.
412412
val nb = nestedClassSymbols.count(mc => mc.name == s.name && mc.owner == s.owner)

src/compiler/scala/tools/nsc/backend/jvm/GeneratedClassHandler.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ package scala.tools.nsc
1414
package backend.jvm
1515

1616
import java.nio.channels.ClosedByInterruptException
17-
import java.nio.file.Path
1817
import java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy
1918
import java.util.concurrent._
2019

src/compiler/scala/tools/nsc/backend/jvm/analysis/AliasingAnalyzer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class AliasingFrame[V <: Value](nLocals: Int, nStack: Int) extends Frame[V](nLoc
3636
import Opcodes._
3737

3838
// Auxiliary constructor required for implementing `AliasingAnalyzer.newFrame`
39-
def this(src: Frame[_ <: V]) {
39+
def this(src: Frame[_ <: V]) = {
4040
this(src.getLocals, src.getMaxStackSize)
4141
init(src)
4242
}

src/compiler/scala/tools/nsc/backend/jvm/analysis/NullnessAnalyzer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ class NullnessFrame(nLocals: Int, nStack: Int) extends AliasingFrame[NullnessVal
152152
private[this] var ifNullAliases: AliasSet = null
153153

154154
// Auxiliary constructor required for implementing `NullnessAnalyzer.newFrame`
155-
def this(src: Frame[_ <: NullnessValue]) {
155+
def this(src: Frame[_ <: NullnessValue]) = {
156156
this(src.getLocals, src.getMaxStackSize)
157157
init(src)
158158
}

src/compiler/scala/tools/nsc/classpath/AggregateClassPath.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ package scala.tools.nsc.classpath
1414

1515
import java.net.URL
1616

17+
import scala.collection.immutable.ArraySeq.unsafeWrapArray
1718
import scala.collection.mutable.ArrayBuffer
1819
import scala.reflect.internal.FatalError
1920
import scala.reflect.io.AbstractFile
@@ -102,7 +103,7 @@ case class AggregateClassPath(aggregates: Seq[ClassPath]) extends ClassPath {
102103
}
103104
}
104105

105-
val distinctPackages: Seq[PackageEntry] = if (packages == null) Nil else packages.toArray(new Array[PackageEntry](packages.size()))
106+
val distinctPackages: Seq[PackageEntry] = if (packages == null) Nil else unsafeWrapArray(packages.toArray(new Array[PackageEntry](packages.size())))
106107
val distinctClassesAndSources = mergeClassesAndSources(classesAndSourcesBuffer)
107108
ClassPathEntries(distinctPackages, distinctClassesAndSources)
108109
}

src/compiler/scala/tools/nsc/classpath/DirectoryClassPath.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ trait DirectoryLookup[FileEntryType <: ClassRepresentation] extends EfficientCla
6363
case None => emptyFiles
6464
case Some(directory) => listChildren(directory, Some(isPackage))
6565
}
66-
nestedDirs.map(f => PackageEntryImpl(inPackage.entryName(getName(f))))
66+
scala.collection.immutable.ArraySeq.unsafeWrapArray(
67+
nestedDirs.map(f => PackageEntryImpl(inPackage.entryName(getName(f))))
68+
)
6769
}
6870

6971
protected def files(inPackage: PackageName): Seq[FileEntryType] = {
@@ -230,7 +232,7 @@ final class JrtClassPath(fs: java.nio.file.FileSystem) extends ClassPath with No
230232
final class CtSymClassPath(ctSym: java.nio.file.Path, release: Int) extends ClassPath with NoSourcePaths with Closeable {
231233
import java.nio.file.Path, java.nio.file._
232234

233-
private val fileSystem: FileSystem = FileSystems.newFileSystem(ctSym, null)
235+
private val fileSystem: FileSystem = FileSystems.newFileSystem(ctSym, null: ClassLoader)
234236
private val root: Path = fileSystem.getRootDirectories.iterator.next
235237
private val roots = Files.newDirectoryStream(root).iterator.asScala.toList
236238

@@ -317,7 +319,7 @@ case class DirectorySourcePath(dir: File) extends JFileDirectoryLookup[SourceFil
317319

318320
private def findSourceFile(className: String): Option[AbstractFile] = {
319321
val relativePath = FileUtils.dirPath(className)
320-
val sourceFile = Stream("scala", "java")
322+
val sourceFile = Iterator("scala", "java")
321323
.map(ext => new File(s"$dir/$relativePath.$ext"))
322324
.collectFirst { case file if file.exists() => file }
323325

src/compiler/scala/tools/nsc/plugins/OutputFileWriter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ package scala.tools.nsc.plugins
1515
import scala.reflect.io.AbstractFile
1616

1717
trait OutputFileWriter {
18-
def writeFile(relativeName: String, data: Array[Byte], outputDir: AbstractFile)
18+
def writeFile(relativeName: String, data: Array[Byte], outputDir: AbstractFile): Unit
1919
}

src/compiler/scala/tools/nsc/profile/Profiler.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ private [profile] class RealProfiler(reporter : ProfileReporter, val settings: S
172172
reporter.reportBackground(this, threadRange)
173173
}
174174

175-
def outDir = settings.outputDirs.getSingleOutput.getOrElse(settings.outputDirs.outputs.head._2.file).toString
175+
def outDir = settings.outputDirs.getSingleOutput.map(_.path).getOrElse(settings.outputDirs.outputs.head._2.path)
176176

177177
RealProfiler.gcMx foreach {
178178
case emitter: NotificationEmitter => emitter.addNotificationListener(this, null, null)
@@ -181,7 +181,7 @@ private [profile] class RealProfiler(reporter : ProfileReporter, val settings: S
181181

182182
val active = RealProfiler.allPlugins map (_.generate(this, settings))
183183

184-
private def doGC: Unit = {
184+
private def doGC(): Unit = {
185185
System.gc()
186186
System.runFinalization()
187187
}
@@ -241,7 +241,7 @@ private [profile] class RealProfiler(reporter : ProfileReporter, val settings: S
241241
assert(mainThread eq Thread.currentThread())
242242
if (chromeTrace != null) chromeTrace.traceDurationEventStart(Category.Phase, phase.name)
243243
if (settings.YprofileRunGcBetweenPhases.containsPhase(phase))
244-
doGC
244+
doGC()
245245
if (settings.YprofileExternalTool.containsPhase(phase)) {
246246
println("Profile hook start")
247247
ExternalToolHook.before()
@@ -259,7 +259,7 @@ private [profile] class RealProfiler(reporter : ProfileReporter, val settings: S
259259
ExternalToolHook.after()
260260
}
261261
val finalSnap = if (settings.YprofileRunGcBetweenPhases.containsPhase(phase)) {
262-
doGC
262+
doGC()
263263
initialSnap.updateHeap(RealProfiler.readHeapUsage())
264264
} else initialSnap
265265
if (chromeTrace != null) chromeTrace.traceDurationEventEnd(Category.Phase, phase.name)

src/compiler/scala/tools/nsc/reporters/StoreReporter.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ import scala.reflect.internal.util.Position
2020

2121
/** This class implements a Reporter that stores its reports in the set `infos`. */
2222
class StoreReporter(val settings: Settings) extends FilteringReporter {
23-
@deprecated("use the constructor with a `Settings` parameter", "2.13.1")
23+
@deprecated("use the constructor with a `Settings` parameter", since = "2.13.1")
2424
def this() = this(new Settings())
2525

26-
@deprecated("use StoreReporter.Info") // used in scalameta for example
26+
@deprecated("use StoreReporter.Info", since = "2.13.0") // used in scalameta for example
2727
type Info = StoreReporter.Info
2828

29-
@deprecated("use StoreReporter.Info")
29+
@deprecated("use StoreReporter.Info", since = "2.13.0")
3030
@uncheckedStable def Info: StoreReporter.Info.type = StoreReporter.Info
3131

3232
val infos = new mutable.LinkedHashSet[StoreReporter.Info]

src/compiler/scala/tools/nsc/settings/Warnings.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ trait Warnings {
115115
val EtaSam = LintWarning("eta-sam", "The Java-defined target interface for eta-expansion was not annotated @FunctionalInterface.")
116116
val Deprecation = LintWarning("deprecation", "Enable -deprecation and also check @deprecated annotations.")
117117
val ByNameImplicit = LintWarning("byname-implicit", "Block adapted by implicit with by-name parameter.")
118+
val RecurseWithDefault = LintWarning("recurse-with-default", "Recursive call used default argument.")
118119

119120
def allLintWarnings = values.toSeq.asInstanceOf[Seq[LintWarning]]
120121
}
@@ -144,6 +145,7 @@ trait Warnings {
144145
def warnEtaSam = lint contains EtaSam
145146
def lintDeprecation = lint contains Deprecation
146147
def warnByNameImplicit = lint contains ByNameImplicit
148+
def warnRecurseWithDefault = lint contains RecurseWithDefault
147149

148150
// The Xlint warning group.
149151
val lint = MultiChoiceSetting(

0 commit comments

Comments
 (0)