From 0283ad2fc83b926c2e1eeaf4740ad7be117600b4 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 9 Sep 2011 18:39:06 -0400 Subject: [PATCH] prefix automatic imports with _root_. Fixes #173. --- main/Load.scala | 5 +++-- .../sbt-test/project/auto-import/changes/build.sbt | 3 +++ .../sbt-test/project/auto-import/project/P.scala | 14 ++++++++++++++ sbt/src/sbt-test/project/auto-import/test | 8 ++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 sbt/src/sbt-test/project/auto-import/changes/build.sbt create mode 100644 sbt/src/sbt-test/project/auto-import/project/P.scala create mode 100644 sbt/src/sbt-test/project/auto-import/test diff --git a/main/Load.scala b/main/Load.scala index 75ecbb6f7..65c6739f8 100644 --- a/main/Load.scala +++ b/main/Load.scala @@ -69,7 +69,7 @@ object Load def buildGlobalSettings(base: File, files: Seq[File], config: LoadBuildConfiguration): ClassLoader => Seq[Setting[_]] = { val eval = mkEval(data(config.globalPluginClasspath), base, defaultEvalOptions) - val imports = baseImports ++ importAll(config.globalPluginNames) + val imports = baseImports ++ importAllRoot(config.globalPluginNames) EvaluateConfigurations(eval, files, imports) } def loadGlobal(state: State, base: File, global: File, config: LoadBuildConfiguration): LoadBuildConfiguration = @@ -497,6 +497,7 @@ object Load ModuleUtilities.getObject(pluginName, loader).asInstanceOf[Plugin].settings def importAll(values: Seq[String]) = if(values.isEmpty) Nil else values.map( _ + "._" ).mkString("import ", ", ", "") :: Nil + def importAllRoot(values: Seq[String]) = importAll(values.map("_root_." + _)) def findPlugins(analysis: inc.Analysis): Seq[String] = discover(analysis, "sbt.Plugin") def findDefinitions(analysis: inc.Analysis): Seq[String] = discover(analysis, "sbt.Build") @@ -566,7 +567,7 @@ object Load def imports = getImports(unit) override def toString = unit.toString } - def getImports(unit: BuildUnit) = baseImports ++ importAll(unit.plugins.pluginNames ++ unit.definitions.buildNames) + def getImports(unit: BuildUnit) = baseImports ++ importAllRoot(unit.plugins.pluginNames ++ unit.definitions.buildNames) def referenced[PR <: ProjectReference](definitions: Seq[ProjectDefinition[PR]]): Seq[PR] = definitions flatMap { _.referenced } diff --git a/sbt/src/sbt-test/project/auto-import/changes/build.sbt b/sbt/src/sbt-test/project/auto-import/changes/build.sbt new file mode 100644 index 000000000..a03237561 --- /dev/null +++ b/sbt/src/sbt-test/project/auto-import/changes/build.sbt @@ -0,0 +1,3 @@ +maxErrors := xyz + +name := "Demo" \ No newline at end of file diff --git a/sbt/src/sbt-test/project/auto-import/project/P.scala b/sbt/src/sbt-test/project/auto-import/project/P.scala new file mode 100644 index 000000000..067fad606 --- /dev/null +++ b/sbt/src/sbt-test/project/auto-import/project/P.scala @@ -0,0 +1,14 @@ +package name.example + +import sbt._ + +object P extends Plugin { + val xyz = 3 + val checkMaxErrors = TaskKey[Unit]("check-max-errors") + val checkName = TaskKey[Unit]("check-name") + + override def settings = Seq[Setting[_]]( + checkMaxErrors <<= Keys.maxErrors map { me => assert(me == xyz, "Expected maxErrors to be " + xyz + ", but it was " + me ) }, + checkName <<= Keys.name map { n => assert(n == "Demo", "Expected name to be 'Demo', but it was '" + n + "'" ) } + ) +} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/auto-import/test b/sbt/src/sbt-test/project/auto-import/test new file mode 100644 index 000000000..ae890957b --- /dev/null +++ b/sbt/src/sbt-test/project/auto-import/test @@ -0,0 +1,8 @@ +-> check-name +-> check-max-errors + +$ copy-file changes/build.sbt build.sbt +> reload + +> check-name +> check-max-errors \ No newline at end of file