summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-10-03 00:54:32 -0700
committerJason Zaugg <jzaugg@gmail.com>2013-10-03 00:54:32 -0700
commitb17619dd071c65925b1073b8470a33711f8aa9a5 (patch)
treef8d2b89d704646ab25114a65dfb5596c6a22ee02 /src
parent8aae23ed47c4e38a465ff3373392484ca82473d1 (diff)
parent59ba77519476b9ac7f420a6e23ddb8dd5b3d5608 (diff)
downloadscala-b17619dd071c65925b1073b8470a33711f8aa9a5.tar.gz
scala-b17619dd071c65925b1073b8470a33711f8aa9a5.tar.bz2
scala-b17619dd071c65925b1073b8470a33711f8aa9a5.zip
Merge pull request #2977 from sjrd/topic/remove-classpath-logic-dependent-on-inline
Don't avoid to load trait impl .class without inliner.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/settings/ScalaSettings.scala1
-rw-r--r--src/compiler/scala/tools/nsc/util/ClassPath.scala4
-rw-r--r--src/compiler/scala/tools/util/PathResolver.scala11
3 files changed, 12 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
index 61b3d35f6a..6cb228d9ab 100644
--- a/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala
@@ -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()
diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala
index 8beca86a25..d2ba61cc0b 100644
--- a/src/compiler/scala/tools/nsc/util/ClassPath.scala
+++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala
@@ -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"
diff --git a/src/compiler/scala/tools/util/PathResolver.scala b/src/compiler/scala/tools/util/PathResolver.scala
index 82f2c5dc74..5526660509 100644
--- a/src/compiler/scala/tools/util/PathResolver.scala
+++ b/src/compiler/scala/tools/util/PathResolver.scala
@@ -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
@@ -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()
@@ -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 {