Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenRTB - Unextended Sealed traits - Linter Errors when using "oneof" #437

Closed
ArulselvanMadhavan opened this issue May 1, 2018 · 1 comment

Comments

@ArulselvanMadhavan
Copy link

ArulselvanMadhavan commented May 1, 2018

Hello,
Thanks for creating scalaPB. I find it to be very useful. I am trying to use scalaPB on openrtb - https://github.com/google/openrtb/blob/master/openrtb-core/src/main/protobuf/openrtb.proto

The scala classes created by scalaPB fail to compile on all occurences of "oneof" with an error saying "unextended sealed trait".

Error

[error] /Users/arul.madhavan/dev/adserver/adserver-shiba/target/scala-2.11/src_managed/main/com/google/openrtb/openrtb/BidRequest.scala:512:16: [UnextendedSealedTrait] This sealed trait is never extended
[error]   sealed trait DistributionchannelOneof extends _root_.scalapb.GeneratedOneof {
[error]                ^
[error] /Users/arul.madhavan/dev/adserver/adserver-shiba/target/scala-2.11/src_managed/main/com/google/openrtb/openrtb/BidRequest.scala:3859:20: [UnextendedSealedTrait] This sealed trait is never extended
[error]       sealed trait RequestOneof extends _root_.scalapb.GeneratedOneof {
[error]                    ^
[error] /Users/arul.madhavan/dev/adserver/adserver-shiba/target/scala-2.11/src_managed/main/com/google/openrtb/openrtb/BidResponse.scala:995:20: [UnextendedSealedTrait] This sealed trait is never extended
[error]       sealed trait AdmOneof extends _root_.scalapb.GeneratedOneof {
[error]                    ^
[error] /Users/arul.madhavan/dev/adserver/adserver-shiba/target/scala-2.11/src_managed/main/com/google/openrtb/openrtb/NativeRequest.scala:565:18: [UnextendedSealedTrait] This sealed trait is never extended
[error]     sealed trait AssetOneof extends _root_.scalapb.GeneratedOneof {
[error]                  ^
[error] /Users/arul.madhavan/dev/adserver/adserver-shiba/target/scala-2.11/src_managed/main/com/google/openrtb/openrtb/NativeResponse.scala:668:18: [UnextendedSealedTrait] This sealed trait is never extended
[error]     sealed trait AssetOneof extends _root_.scalapb.GeneratedOneof {
[error]                  ^
[error] 5 errors found
[error] (Compile / compileIncremental) Compilation failed

Sample Generated Code that is failing to compile

  sealed trait DistributionchannelOneof extends _root_.scalapb.GeneratedOneof {
    def isEmpty: _root_.scala.Boolean = false
    def isDefined: _root_.scala.Boolean = true
    def isSite: _root_.scala.Boolean = false
    def isApp: _root_.scala.Boolean = false
    def site: scala.Option[com.google.openrtb.openrtb.BidRequest.Site] = None
    def app: scala.Option[com.google.openrtb.openrtb.BidRequest.App] = None
  }
  object DistributionchannelOneof extends {
    @SerialVersionUID(0L)
    case object Empty extends com.google.openrtb.openrtb.BidRequest.DistributionchannelOneof {
      type ValueType = _root_.scala.Nothing
      override def isEmpty: _root_.scala.Boolean = true
      override def isDefined: _root_.scala.Boolean = false
      override def number: _root_.scala.Int = 0
      override def value: _root_.scala.Nothing = throw new java.util.NoSuchElementException("Empty.value")
    }
  
    @SerialVersionUID(0L)
    final case class Site(value: com.google.openrtb.openrtb.BidRequest.Site) extends com.google.openrtb.openrtb.BidRequest.DistributionchannelOneof {
      type ValueType = com.google.openrtb.openrtb.BidRequest.Site
      override def isSite: _root_.scala.Boolean = true
      override def site: scala.Option[com.google.openrtb.openrtb.BidRequest.Site] = Some(value)
      override def number: _root_.scala.Int = 3
    }
    @SerialVersionUID(0L)
    final case class App(value: com.google.openrtb.openrtb.BidRequest.App) extends com.google.openrtb.openrtb.BidRequest.DistributionchannelOneof {
      type ValueType = com.google.openrtb.openrtb.BidRequest.App
      override def isApp: _root_.scala.Boolean = true
      override def app: scala.Option[com.google.openrtb.openrtb.BidRequest.App] = Some(value)
      override def number: _root_.scala.Int = 4
    }
  }

Scala Version: 2.11.12
Linter Used: https://github.com/HairyFotr/linter
Protoc Version: 3.5.1
sbt-protoc: 0.99.18
ScalaPB Version: 0.7.1

  .settings(
    PB.targets in Compile := List(
      scalapb.gen(grpc = false, flatPackage = false) -> (sourceManaged in Compile).value
    ),
    includeFilter in PB.generate := new SimpleFileFilter(
      (f: File) => f.getName.equals("openrtb.proto")
    )
  )
@ArulselvanMadhavan ArulselvanMadhavan changed the title OpenRTB - Unextended Sealed traits Error when using "oneof" OpenRTB - Unextended Sealed traits - Linter Errors when using "oneof" May 1, 2018
@thesamet
Copy link
Contributor

thesamet commented May 1, 2018

Hi @ArulselvanMadhavan , you are observing a bug in the linter that is unrelated to ScalaPB. I filed HairyFotr/linter#62

In the mean time, you can disable this specific lint check.

@thesamet thesamet closed this as completed May 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants