Skip to content

Cannot compile PureConfig with SHocon instead of typesafe config #10

@melrief

Description

@melrief

I've tried to use shocon as replacement for typesafe config as backend of pureconfig. I've pushed the branch try_shocon_as_backend if you are interested. The project doesn't compile because shocon API is missing some parts of typesafe config API.

To reproduce, just run sbt "++ 2.12.1 core/compile". The error list is

[info] Compiling 9 Scala sources to /tmp/sbt/home/mariop/prog/pureconfig/core/scala-2.12/classes...
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:110: not found: type ConfigList
[error]   implicit val configListConfigConvert: ConfigConvert[ConfigList] = new ConfigConvert[ConfigList] {
[error]                                                       ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/error/ConfigReaderFailure.scala:8: object ConfigOrigin is not a member of package com.typesafe.config
[error] import com.typesafe.config.{ ConfigOrigin, ConfigValue }
[error]        ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/error/ConfigReaderFailure.scala:50: not found: type ConfigOrigin
[error]   def apply(co: ConfigOrigin): Option[ConfigValueLocation] =
[error]                 ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:93: value valueType is not a member of com.typesafe.config.ConfigValue
[error]       case other => fail(WrongType(other.valueType().toString, "ConfigObject", ConfigValueLocation(config), None))
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:101: value valueType is not a member of com.typesafe.config.ConfigValue
[error]       case other => fail(WrongType(other.valueType().toString, "ConfigObject", ConfigValueLocation(config), None))
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:110: not found: type ConfigList
[error]   implicit val configListConfigConvert: ConfigConvert[ConfigList] = new ConfigConvert[ConfigList] {
[error]                                                                                       ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:111: not found: type ConfigList
[error]     override def from(config: ConfigValue): Either[ConfigReaderFailures, ConfigList] = config match {
[error]                                                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:115: not found: type ConfigList
[error]     override def to(t: ConfigList): ConfigValue = t
[error]                        ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:112: not found: type ConfigList
[error]       case c: ConfigList => Right(c)
[error]               ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/BasicConverters.scala:113: value valueType is not a member of com.typesafe.config.ConfigValue
[error]       case other => fail(WrongType(other.valueType().toString, "ConfigList", ConfigValueLocation(config), None))
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:46: value valueType is not a member of com.typesafe.config.ConfigValue
[error]         val string = config.valueType match {
[error]                             ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:47: not found: value ConfigValueType
[error]           case ConfigValueType.STRING => config.unwrapped.toString
[error]                ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:47: value unwrapped is not a member of com.typesafe.config.ConfigValue
[error]           case ConfigValueType.STRING => config.unwrapped.toString
[error]                                                 ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:48: no arguments allowed for nullary method render: ()String
[error]           case _ => config.render(ConfigRenderOptions.concise)
[error]                                                       ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:94: not found: value ConfigValueFactory
[error]     override def to(t: T): ConfigValue = ConfigValueFactory.fromAnyRef(t)
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:99: not found: value ConfigValueFactory
[error]     override def to(t: T): ConfigValue = ConfigValueFactory.fromAnyRef(t)
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/ConvertHelpers.scala:133: not found: value ConfigValueFactory
[error]     override def to(t: T): ConfigValue = ConfigValueFactory.fromAnyRef(toF(t))
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/CoproductHint.scala:72: value unwrapped is not a member of com.typesafe.config.ConfigValue
[error]         case Some(fv) => fv.unwrapped match {
[error]                             ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/CoproductHint.scala:75: value valueType is not a member of com.typesafe.config.ConfigValue
[error]           case _ => Left(ConfigReaderFailures(WrongType(fv.valueType.toString, expectedType = "String", ConfigValueLocation(fv), Some(key))))
[error]                                                            ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/CoproductHint.scala:79: value valueType is not a member of com.typesafe.config.ConfigValue
[error]     case _ => Left(ConfigReaderFailures(WrongType(cv.valueType.toString, expectedType = "ConfigObject", ConfigValueLocation(cv), None)))
[error]                                                      ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:178: not found: type ConfigList
[error]         case co: ConfigList =>
[error]                  ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:182: value asScala is not a member of com.typesafe.config.ConfigValue
[error]  Note: implicit method deriveTraversable is not applicable here because it comes after the application point and it lacks an explicit result type
[error]           co.asScala.foldLeft(z) {
[error]              ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:184: type mismatch;
[error]  found   : Any
[error]  required: Either[pureconfig.error.ConfigReaderFailures,?]
[error]  Note: implicit method deriveTraversable is not applicable here because it comes after the application point and it lacks an explicit result type
[error]               combineResults(acc, configConvert.value.from(value))(_ += _)
[error]                              ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:184: type mismatch;
[error]  found   : Any
[error]  required: com.typesafe.config.ConfigValue
[error]  Note: implicit method deriveTraversable is not applicable here because it comes after the application point and it lacks an explicit result type
[error]               combineResults(acc, configConvert.value.from(value))(_ += _)
[error]                                                            ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:189: ambiguous reference to overloaded definition,
[error] both method apply in object ConfigValueLocation of type (co: <error>)Option[pureconfig.error.ConfigValueLocation]
[error] and  method apply in object ConfigValueLocation of type (cv: com.typesafe.config.ConfigValue)Option[pureconfig.error.ConfigValueLocation]
[error] match argument types (com.typesafe.config.ConfigValue) and expected result type Option[pureconfig.error.ConfigValueLocation]
[error]             val keyResult = catchReadError(_.toInt)(implicitly)(key)(ConfigValueLocation(value)).left.flatMap(t => fail(CannotConvert(key, "Int",
[error]                                                                      ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:206: value valueType is not a member of com.typesafe.config.ConfigValue
[error]  Note: implicit method deriveTraversable is not applicable here because it comes after the application point and it lacks an explicit result type
[error]           fail(WrongType(other.valueType().toString, "ConfigList or ConfigObject", ConfigValueLocation(other), None))
[error]                                ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:211: not found: value ConfigValueFactory
[error]       ConfigValueFactory.fromIterable(ts.toList.map(configConvert.value.to).asJava)
[error]       ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:228: value valueType is not a member of com.typesafe.config.ConfigValue
[error]  Note: implicit method deriveMap is not applicable here because it comes after the application point and it lacks an explicit result type
[error]           fail(WrongType(other.valueType().toString, "ConfigObject", ConfigValueLocation(other), None))
[error]                                ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:233: not found: value ConfigValueFactory
[error]       ConfigValueFactory.fromMap(keyVals.mapValues(configConvert.value.to).asJava)
[error]       ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/CoproductHint.scala:85: type mismatch;
[error]  found   : com.typesafe.config.Config
[error]  required: com.typesafe.config.ConfigMergeable
[error]       else Right(Map(key -> fieldValue(name)).toConfig.withFallback(co.toConfig))
[error]                                                                        ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/CoproductHint.scala:88: value valueType is not a member of com.typesafe.config.ConfigValue
[error]       Left(ConfigReaderFailures(WrongType(cv.valueType.toString, "ConfigObject", ConfigValueLocation(cv), None)))
[error]                                              ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:31: value valueType is not a member of com.typesafe.config.ConfigValue
[error]       case other => fail(WrongType(foundType = other.valueType().toString, expectedType = "ConfigObject", ConfigValueLocation(other), None))
[error]                                                      ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:85: value withoutKey is not a member of com.typesafe.config.ConfigObject
[error]       val tailCo = if (hint.allowUnknownKeys) co else co.withoutKey(keyStr)
[error]                                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:98: value withValue is not a member of com.typesafe.config.ConfigObject
[error]               rem.asInstanceOf[ConfigObject].withValue(keyStr, v)
[error]                                              ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:104: value withValue is not a member of com.typesafe.config.ConfigObject
[error]           rem.asInstanceOf[ConfigObject].withValue(keyStr, fieldEntry)
[error]                                          ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:156: value unwrapped is not a member of com.typesafe.config.ConfigValue
[error]       if (config == null || config.unwrapped() == null)
[error]                                    ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/DerivedConverters.scala:164: not found: value ConfigValueFactory
[error]       case None => ConfigValueFactory.fromAnyRef(null)
[error]                    ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/backend/ConfigFactoryWrapper.scala:18: value invalidateCaches is not a member of object com.typesafe.config.ConfigFactory
[error]     unsafeToEither(ConfigFactory.invalidateCaches())
[error]                                  ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/backend/ConfigFactoryWrapper.scala:22: shocon - statically reading configuration from file:/tmp/sbt/home/mariop/prog/pureconfig/core/scala-2.12/classes/application.conf
[error]     unsafeToEither(ConfigFactory.load())
[error]                                      ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/backend/ConfigFactoryWrapper.scala:26: value parseFile is not a member of object com.typesafe.config.ConfigFactory
[error]     unsafeToEither(ConfigFactory.parseFile(path.toFile))
[error]                                  ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/backend/ConfigFactoryWrapper.scala:34: type Parse is not a member of object com.typesafe.config.ConfigException
[error]       case e: ConfigException.Parse =>
[error]                               ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/backend/ConfigFactoryWrapper.scala:35: value origin is not a member of Throwable
[error]         Left(ConfigReaderFailures(CannotParse(e.getLocalizedMessage, ConfigValueLocation(e.origin()))))
[error]                                                                                            ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/backend/ConfigFactoryWrapper.scala:37: value origin is not a member of com.typesafe.config.ConfigException
[error]         Left(ConfigReaderFailures(ThrowableFailure(e, ConfigValueLocation(e.origin()), None)))
[error]                                                                             ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/error/ConfigReaderFailure.scala:36: value origin is not a member of com.typesafe.config.ConfigValue
[error]     Option(cv).flatMap(v => apply(v.origin()))
[error]                                     ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/error/ConfigReaderFailure.scala:8: Unused import
[error] import com.typesafe.config.{ ConfigOrigin, ConfigValue }
[error]                              ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/package.scala:46: ambiguous reference to overloaded definition,
[error] both method apply in object ConfigValueLocation of type (co: <error>)Option[pureconfig.error.ConfigValueLocation]
[error] and  method apply in object ConfigValueLocation of type (cv: com.typesafe.config.ConfigValue)Option[pureconfig.error.ConfigValueLocation]
[error] match argument types (java.util.AbstractMap[String,com.typesafe.config.ConfigValue] with com.typesafe.config.ConfigObject) and expected result type Option[pureconfig.error.ConfigValueLocation]
[error]       config <- improveFailures[Config](loadConfig[Config](rawConfig)(conv), namespace, ConfigValueLocation(rawConfig.root())).right
[error]                                                                                         ^
[error] /home/mariop/prog/pureconfig/core/src/main/scala/pureconfig/package.scala:79: ambiguous reference to overloaded definition,
[error] both method apply in object ConfigValueLocation of type (co: <error>)Option[pureconfig.error.ConfigValueLocation]
[error] and  method apply in object ConfigValueLocation of type (cv: com.typesafe.config.ConfigValue)Option[pureconfig.error.ConfigValueLocation]
[error] match argument types (java.util.AbstractMap[String,com.typesafe.config.ConfigValue] with com.typesafe.config.ConfigObject) and expected result type Option[pureconfig.error.ConfigValueLocation]
[error]       config <- improveFailures[Config](loadConfig[Config](rawConfig)(conv), namespace, ConfigValueLocation(rawConfig.root())).right
[error]                                                                                         ^
[error] 47 errors found
[error] (core/compile:compileIncremental) Compilation failed
[error] Total time: 15 s, completed Mar 23, 2017 9:31:51 PM

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions