diff --git a/build.sbt b/build.sbt index 71568c59e..84c718b8b 100644 --- a/build.sbt +++ b/build.sbt @@ -105,6 +105,12 @@ lazy val lmCore = (project in file("core")) (((srcs --- sdirs --- base) pair (relativeTo(sdirs) | relativeTo(base) | flat)) toSeq) }, mimaSettings, + mimaBinaryIssueFilters ++= Seq( + // internal class moved + exclude[MissingClassProblem]("sbt.internal.librarymanagement.InlineConfigurationFunctions"), + // dropped internal class parent (InlineConfigurationFunctions) + exclude[MissingTypesProblem]("sbt.librarymanagement.ModuleDescriptorConfiguration$"), + ), ) .configure(addSbtIO, addSbtUtilLogging, addSbtUtilPosition, addSbtUtilCache) diff --git a/core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfiguration.scala b/core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfiguration.scala index 92c7a3a92..552b2ae61 100644 --- a/core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfiguration.scala +++ b/core/src/main/contraband-scala/sbt/librarymanagement/ModuleDescriptorConfiguration.scala @@ -72,7 +72,7 @@ final class ModuleDescriptorConfiguration private ( copy(conflictManager = conflictManager) } } -object ModuleDescriptorConfiguration extends sbt.internal.librarymanagement.InlineConfigurationFunctions { +object ModuleDescriptorConfiguration extends sbt.librarymanagement.InlineConfigurationFunctions { def apply(module: sbt.librarymanagement.ModuleID, moduleInfo: sbt.librarymanagement.ModuleInfo): ModuleDescriptorConfiguration = new ModuleDescriptorConfiguration(false, None, module, moduleInfo, Vector.empty, Vector.empty, Vector.empty, scala.xml.NodeSeq.Empty, sbt.librarymanagement.Configurations.default, Option(sbt.librarymanagement.Configurations.Compile), sbt.librarymanagement.ConflictManager.default) def apply(validate: Boolean, scalaModuleInfo: Option[sbt.librarymanagement.ScalaModuleInfo], module: sbt.librarymanagement.ModuleID, moduleInfo: sbt.librarymanagement.ModuleInfo, dependencies: Vector[sbt.librarymanagement.ModuleID], overrides: Vector[sbt.librarymanagement.ModuleID], excludes: Vector[sbt.librarymanagement.InclExclRule], ivyXML: scala.xml.NodeSeq, configurations: Vector[sbt.librarymanagement.Configuration], defaultConfiguration: Option[sbt.librarymanagement.Configuration], conflictManager: sbt.librarymanagement.ConflictManager): ModuleDescriptorConfiguration = new ModuleDescriptorConfiguration(validate, scalaModuleInfo, module, moduleInfo, dependencies, overrides, excludes, ivyXML, configurations, defaultConfiguration, conflictManager) diff --git a/core/src/main/contraband/librarymanagement.json b/core/src/main/contraband/librarymanagement.json index c7a04ede8..b31b9a856 100644 --- a/core/src/main/contraband/librarymanagement.json +++ b/core/src/main/contraband/librarymanagement.json @@ -572,7 +572,7 @@ }, { "name": "conflictManager", "type": "sbt.librarymanagement.ConflictManager", "default": "sbt.librarymanagement.ConflictManager.default", "since": "0.0.1" } ], - "parentsCompanion": "sbt.internal.librarymanagement.InlineConfigurationFunctions" + "parentsCompanion": "sbt.librarymanagement.InlineConfigurationFunctions" } ] }, diff --git a/core/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala b/core/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala index 71c527322..aac26548d 100644 --- a/core/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala +++ b/core/src/main/scala/sbt/internal/librarymanagement/IvyConfigurations.scala @@ -1,11 +1,9 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt.internal.librarymanagement +package sbt.librarymanagement -import sbt.librarymanagement._ - -abstract class InlineConfigurationFunctions { +private[librarymanagement] abstract class InlineConfigurationFunctions { def configurations( explicitConfigurations: Iterable[Configuration], defaultConfiguration: Option[Configuration] diff --git a/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala b/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala index 3bd58fe53..44db18be9 100644 --- a/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ArtifactExtra.scala @@ -6,7 +6,7 @@ package sbt.librarymanagement import java.io.File import java.net.URL -abstract class ArtifactExtra { +private[librarymanagement] abstract class ArtifactExtra { def name: String def `type`: String def extension: String @@ -33,7 +33,7 @@ abstract class ArtifactExtra { import Configurations.{ Optional, Pom, Test } -abstract class ArtifactFunctions { +private[librarymanagement] abstract class ArtifactFunctions { def apply(name: String, extra: Map[String, String]): Artifact = Artifact(name, DefaultType, DefaultExtension, None, Vector.empty, None, extra, None) def apply(name: String, classifier: String): Artifact = diff --git a/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala b/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala index 83cdd2bcd..00acf7305 100644 --- a/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala @@ -76,7 +76,7 @@ object Configurations { } } -abstract class ConfigurationExtra { +private[librarymanagement] abstract class ConfigurationExtra { def id: String def name: String def description: String @@ -142,7 +142,7 @@ private[sbt] object ConfigurationMacro { .map(_.tree.asInstanceOf[c.Tree]) } -abstract class ConfigRefFunctions { +private[librarymanagement] abstract class ConfigRefFunctions { implicit def configToConfigRef(c: Configuration): ConfigRef = c.toConfigRef } diff --git a/core/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala b/core/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala index a57a9f4f3..725573e41 100644 --- a/core/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/CrossVersionExtra.scala @@ -5,7 +5,7 @@ import sbt.librarymanagement.syntax._ final case class ScalaVersion(full: String, binary: String) -abstract class CrossVersionFunctions { +private[librarymanagement] abstract class CrossVersionFunctions { /** Compatibility with 0.13 */ final val Disabled = sbt.librarymanagement.Disabled diff --git a/core/src/main/scala/sbt/librarymanagement/Extra.scala b/core/src/main/scala/sbt/librarymanagement/Extra.scala index 03d0971f7..3d0feb29c 100644 --- a/core/src/main/scala/sbt/librarymanagement/Extra.scala +++ b/core/src/main/scala/sbt/librarymanagement/Extra.scala @@ -5,7 +5,7 @@ package sbt.librarymanagement import sbt.librarymanagement.DependencyBuilders.{ Organization, OrganizationArtifactName } -abstract class InclExclRuleFunctions { +private[librarymanagement] abstract class InclExclRuleFunctions { def everything = InclExclRule("*", "*", "*", Vector.empty, Disabled()) def apply(organization: String, name: String): InclExclRule = @@ -29,7 +29,7 @@ abstract class InclExclRuleFunctions { } } -abstract class ArtifactTypeFilterExtra { +private[librarymanagement] abstract class ArtifactTypeFilterExtra { def types: Set[String] def inverted: Boolean @@ -41,12 +41,12 @@ abstract class ArtifactTypeFilterExtra { def invert = copy(inverted = !inverted) } -abstract class ArtifactTypeFilterFunctions { +private[librarymanagement] abstract class ArtifactTypeFilterFunctions { def allow(types: Set[String]) = ArtifactTypeFilter(types, false) def forbid(types: Set[String]) = ArtifactTypeFilter(types, true) } -abstract class ConflictManagerFunctions { +private[librarymanagement] abstract class ConflictManagerFunctions { // To avoid NPE (or making the val's below lazy) // For case classes refchecks rewrites apply calls to constructor calls, we have to do it manually def apply(name: String, organization: String = "*", module: String = "*"): ConflictManager diff --git a/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala b/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala index 7d9bfece2..60b818a30 100644 --- a/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ModuleIDExtra.scala @@ -9,7 +9,7 @@ import sbt.internal.librarymanagement.mavenint.SbtPomExtraProperties import scala.collection.mutable.ListBuffer import sbt.librarymanagement.syntax._ -abstract class ModuleIDExtra { +private[librarymanagement] abstract class ModuleIDExtra { def organization: String def name: String def revision: String @@ -181,7 +181,7 @@ abstract class ModuleIDExtra { def branch(branchName: Option[String]) = copy(branchName = branchName) } -abstract class ModuleIDFunctions { +private[librarymanagement] abstract class ModuleIDFunctions { /** Prefixes all keys with `e:` if they are not already so prefixed. */ def checkE(attributes: Seq[(String, String)]) = diff --git a/core/src/main/scala/sbt/librarymanagement/ResolverExtra.scala b/core/src/main/scala/sbt/librarymanagement/ResolverExtra.scala index c8c3064f7..03974baba 100644 --- a/core/src/main/scala/sbt/librarymanagement/ResolverExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ResolverExtra.scala @@ -24,12 +24,12 @@ final class RawRepository(val resolver: AnyRef, name: String) extends Resolver(n } } -abstract class MavenRepositoryFunctions { +private[librarymanagement] abstract class MavenRepositoryFunctions { def apply(name: String, root: String, localIfFile: Boolean = true): MavenRepository = MavenRepo(name, root, localIfFile) } -abstract class PatternsFunctions { +private[librarymanagement] abstract class PatternsFunctions { implicit def defaultPatterns: Patterns = Resolver.defaultPatterns def apply(artifactPatterns: String*): Patterns = Patterns(true, artifactPatterns: _*) @@ -42,7 +42,7 @@ abstract class PatternsFunctions { } } -trait SshBasedRepositoryExtra { +private[librarymanagement] trait SshBasedRepositoryExtra { /** The object representing the configured ssh connection for this repository. */ def connection: SshConnection @@ -67,7 +67,7 @@ trait SshBasedRepositoryExtra { copy(KeyFileAuthentication(user, keyfile, password)) } -trait SshRepositoryExtra extends SshBasedRepositoryExtra { +private[librarymanagement] trait SshRepositoryExtra extends SshBasedRepositoryExtra { def name: String def patterns: sbt.librarymanagement.Patterns def publishPermissions: Option[String] @@ -78,7 +78,7 @@ trait SshRepositoryExtra extends SshBasedRepositoryExtra { SshRepository(name, connection, patterns, publishPermissions) } -trait SftpRepositoryExtra extends SshBasedRepositoryExtra { +private[librarymanagement] trait SftpRepositoryExtra extends SshBasedRepositoryExtra { def name: String def patterns: sbt.librarymanagement.Patterns @@ -93,7 +93,7 @@ private[sbt] class FakeRepository(resolver: AnyRef, name: String) extends xsbti. def rawRepository = new RawRepository(resolver, name) } -abstract class ResolverFunctions { +private[librarymanagement] abstract class ResolverFunctions { private[sbt] def useSecureResolvers = sys.props.get("sbt.repository.secure") map { _.toLowerCase == "true" } getOrElse true diff --git a/core/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala b/core/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala index e9c9c242b..cf146287b 100644 --- a/core/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/UpdateReportExtra.scala @@ -6,7 +6,7 @@ package sbt.librarymanagement import java.io.File import java.{ util => ju } -abstract class ConfigurationReportExtra { +private[librarymanagement] abstract class ConfigurationReportExtra { def configuration: ConfigRef def modules: Vector[ModuleReport] def details: Vector[OrganizationArtifactReport] @@ -34,7 +34,7 @@ abstract class ConfigurationReportExtra { }, details) } -abstract class ModuleReportExtra { +private[librarymanagement] abstract class ModuleReportExtra { def module: ModuleID def artifacts: Vector[(Artifact, File)] def missingArtifacts: Vector[Artifact] @@ -126,7 +126,7 @@ abstract class ModuleReportExtra { ): ModuleReport } -abstract class UpdateReportExtra { +private[librarymanagement] abstract class UpdateReportExtra { def cachedDescriptor: File def configurations: Vector[ConfigurationReport] def stats: UpdateStats