From 326342cf32f1392c7ed1801370b0202be8ec01a0 Mon Sep 17 00:00:00 2001 From: xuwei-k <6b656e6a69@gmail.com> Date: Wed, 1 Aug 2018 22:45:02 +0900 Subject: [PATCH] fix #134 validate Configuration id --- .../sbt/librarymanagement/ConfigurationExtra.scala | 3 +++ .../sbt/librarymanagement/ConfigMacroTest.scala | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala diff --git a/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala b/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala index 00acf7305..b8e339526 100644 --- a/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala +++ b/core/src/main/scala/sbt/librarymanagement/ConfigurationExtra.scala @@ -110,6 +110,9 @@ private[sbt] object ConfigurationMacro { c, methodName => s"""$methodName must be directly assigned to a val, such as `val Tooling = $methodName("tooling")`.""") + if (enclosingValName.head.isLower) { + c.error(c.enclosingPosition, "configuration id must be capitalized") + } val id = c.Expr[String](Literal(Constant(enclosingValName))) reify { Configuration.of(id.splice, name.splice) } } diff --git a/core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala b/core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala new file mode 100644 index 000000000..85d798a21 --- /dev/null +++ b/core/src/test/scala/sbt/librarymanagement/ConfigMacroTest.scala @@ -0,0 +1,13 @@ +package sbt.librarymanagement + +import sbt.librarymanagement.Configurations.config +import org.scalatest._ + +class ConfigMacroTest extends FunSpec with Matchers { + describe("Configurations.config") { + it("should validate the ID in compile time") { + """val A = config("a")""" should compile + """val b = config("b")""" shouldNot compile + } + } +}