Skip to content

Commit

Permalink
Merge pull request scala#2977 from sjrd/topic/remove-classpath-logic-…
Browse files Browse the repository at this point in the history
…dependent-on-inline

Don't avoid to load trait impl .class without inliner.
  • Loading branch information
retronym committed Oct 3, 2013
2 parents 8aae23e + 59ba775 commit b17619d
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ trait ScalaSettings extends AbsScalaSettings
val Yinvalidate = StringSetting ("-Yinvalidate", "classpath-entry", "Invalidate classpath entry before run", "")
val YvirtClasses = false // too embryonic to even expose as a -Y //BooleanSetting ("-Yvirtual-classes", "Support virtual classes")
val YdisableUnreachablePrevention = BooleanSetting("-Ydisable-unreachable-prevention", "Disable the prevention of unreachable blocks in code generation.")
val YnoLoadImplClass = BooleanSetting ("-Yno-load-impl-class", "Do not load $class.class files.")

val exposeEmptyPackage = BooleanSetting("-Yexpose-empty-package", "Internal only: expose the empty package.").internalOnly()

Expand Down
4 changes: 1 addition & 3 deletions src/compiler/scala/tools/nsc/util/ClassPath.scala
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,7 @@ object ClassPath {
def newClassPath(dir: AbstractFile) = new DirectoryClassPath(dir, this)
}

object DefaultJavaContext extends JavaContext {
override def isValidName(name: String) = !ReflectionUtils.scalacShouldntLoadClassfile(name)
}
object DefaultJavaContext extends JavaContext

private def endsClass(s: String) = s.length > 6 && s.substring(s.length - 6) == ".class"
private def endsScala(s: String) = s.length > 6 && s.substring(s.length - 6) == ".scala"
Expand Down
11 changes: 10 additions & 1 deletion src/compiler/scala/tools/util/PathResolver.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import scala.tools.reflect.WrappedProperties.AccessControl
import scala.tools.nsc.{ Settings }
import scala.tools.nsc.util.{ ClassPath, JavaClassPath }
import scala.reflect.io.{ File, Directory, Path, AbstractFile }
import scala.reflect.runtime.ReflectionUtils
import ClassPath.{ JavaContext, DefaultJavaContext, join, split }
import PartialFunction.condOpt
import scala.language.postfixOps
Expand Down Expand Up @@ -163,6 +164,12 @@ object PathResolver {
|}""".asLines
}

// used in PathResolver constructor
private object NoImplClassJavaContext extends JavaContext {
override def isValidName(name: String): Boolean =
!ReflectionUtils.scalacShouldntLoadClassfile(name)
}

// called from scalap
def fromPathString(path: String, context: JavaContext = DefaultJavaContext): JavaClassPath = {
val s = new Settings()
Expand Down Expand Up @@ -193,7 +200,9 @@ object PathResolver {
class PathResolver(settings: Settings, context: JavaContext) {
import PathResolver.{ Defaults, Environment, AsLines, MkLines, ppcp }

def this(settings: Settings) = this(settings, if (settings.inline) new JavaContext else DefaultJavaContext)
def this(settings: Settings) = this(settings,
if (settings.YnoLoadImplClass) PathResolver.NoImplClassJavaContext
else DefaultJavaContext)

private def cmdLineOrElse(name: String, alt: String) = {
(commandLineFor(name) match {
Expand Down

0 comments on commit b17619d

Please sign in to comment.