From d3d105515a8798e5ce4eddc75d2c83591811a9e9 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Mon, 11 Sep 2017 14:46:23 +0100 Subject: [PATCH] Don't warn on by-name keys .. which is apparently what the type of bare vals in *.sbt files are. Fixes #3299, again. --- .../main/scala/sbt/std/TaskLinterDSL.scala | 2 +- .../src/test/scala/sbt/std/TaskPosSpec.scala | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/main-settings/src/main/scala/sbt/std/TaskLinterDSL.scala b/main-settings/src/main/scala/sbt/std/TaskLinterDSL.scala index 247f5f990..0fa3a630d 100644 --- a/main-settings/src/main/scala/sbt/std/TaskLinterDSL.scala +++ b/main-settings/src/main/scala/sbt/std/TaskLinterDSL.scala @@ -65,7 +65,7 @@ abstract class BaseTaskLinterDSL extends LinterDSL { val wrapperName = nme.decodedName.toString val (qualName, isSettingKey) = Option(qual.symbol) - .map(sym => (sym.name.decodedName.toString, sym.info <:< typeOf[SettingKey[_]])) + .map(sym => (sym.name.decodedName.toString, qual.tpe <:< typeOf[SettingKey[_]])) .getOrElse((ap.pos.lineContent, false)) if (!isSettingKey && !shouldIgnore && isTask(wrapperName, tpe.tpe, qual)) { diff --git a/main-settings/src/test/scala/sbt/std/TaskPosSpec.scala b/main-settings/src/test/scala/sbt/std/TaskPosSpec.scala index 451ed2bf7..eb52dbdc4 100644 --- a/main-settings/src/test/scala/sbt/std/TaskPosSpec.scala +++ b/main-settings/src/test/scala/sbt/std/TaskPosSpec.scala @@ -151,6 +151,15 @@ class TaskPosSpec { } } + locally { + import sbt._, Def._ + def withKey(foo: => SettingKey[String]) = { + Def.task { if (true) foo.value } + } + val foo = settingKey[String]("") + withKey(foo) + } + locally { import sbt._ import sbt.Def._ @@ -171,4 +180,17 @@ class TaskPosSpec { (1 to 10).map(_ => foo.value) } } + + locally { + import sbt._, Def._ + def withKey(bar: => SettingKey[Int]) = { + Def.task { + List(42).map { _ => + if (true) bar.value + } + } + } + val bar = settingKey[Int]("bar") + withKey(bar) + } }