ScalaPB
ScalaPB copied to clipboard
Error in custom options after upgrade to 0.11.18
Hi @thesamet,
I am getting an error with respect to custom options after upgrading to 0.11.18 - I wonder what has changed that results in this:
[error] /Users/ahjohannessen/Development/Work/sbt-transforms/code-gen/target/jvm-2.12/src_managed/main/scalapb/alspb/options/Alspb.java:515:29: name clash: clearExtension(com.google.protobuf.GeneratedMessage.GeneratedExtension<alspb.options.Alspb.MessageOptions,?>) in alspb.options.Alspb.MessageOptions.Builder and clearExtension(com.google.protobuf.GeneratedMessage.GeneratedExtension<alspb.options.Alspb.MessageOptions,T>) in com.google.protobuf.GeneratedMessageV3.ExtendableBuilder have the same erasure, yet neither overrides the other
[error] @java.lang.Override
[error] public <Type> Builder clearExtension(
[error] com.google.protobuf.GeneratedMessage.GeneratedExtension<
[error] alspb.options.Alspb.MessageOptions, ?> extension) {
[error] return super.clearExtension(extension);
[error] }
[error] ^
[error] /Users/ahjohannessen/Development/Work/sbt-transforms/code-gen/target/jvm-2.12/src_managed/main/scalapb/alspb/options/Alspb.java:514:7: method does not override or implement a method from a supertype
[error] @java.lang.Override
[error] ^
[error] /Users/ahjohannessen/Development/Work/sbt-transforms/code-gen/target/jvm-2.13/src_managed/main/scalapb/alspb/options/Alspb.java:515:29: name clash: clearExtension(com.google.protobuf.GeneratedMessage.GeneratedExtension<alspb.options.Alspb.MessageOptions,?>) in alspb.options.Alspb.MessageOptions.Builder and clearExtension(com.google.protobuf.GeneratedMessage.GeneratedExtension<alspb.options.Alspb.MessageOptions,T>) in com.google.protobuf.GeneratedMessageV3.ExtendableBuilder have the same erasure, yet neither overrides the other
[error] @java.lang.Override
[error] public <Type> Builder clearExtension(
[error] com.google.protobuf.GeneratedMessage.GeneratedExtension<
[error] alspb.options.Alspb.MessageOptions, ?> extension) {
[error] return super.clearExtension(extension);
[error] }
[error] ^
[error] /Users/ahjohannessen/Development/Work/sbt-transforms/code-gen/target/jvm-2.13/src_managed/main/scalapb/alspb/options/Alspb.java:514:7: method does not override or implement a method from a supertype
[error] @java.lang.Override
[error] ^
[error] /Users/ahjohannessen/Development/Work/sbt-transforms/code-gen/target/jvm-3/src_managed/main/scalapb/alspb/options/Alspb.java:515:29: name clash: clearExtension(com.google.protobuf.GeneratedMessage.GeneratedExtension<alspb.options.Alspb.MessageOptions,?>) in alspb.options.Alspb.MessageOptions.Builder and clearExtension(com.google.protobuf.GeneratedMessage.GeneratedExtension<alspb.options.Alspb.MessageOptions,T>) in com.google.protobuf.GeneratedMessageV3.ExtendableBuilder have the same erasure, yet neither overrides the other
[error] @java.lang.Override
[error] public <Type> Builder clearExtension(
[error] com.google.protobuf.GeneratedMessage.GeneratedExtension<
[error] alspb.options.Alspb.MessageOptions, ?> extension) {
[error] return super.clearExtension(extension);
[error] }
[error] ^
[error] /Users/ahjohannessen/Development/Work/sbt-transforms/code-gen/target/jvm-3/src_managed/main/scalapb/alspb/options/Alspb.java:514:7: method does not override or implement a method from a supertype
[error] @java.lang.Override
[error] ^
[error] (codeGenJVM2_12 / Compile / compileIncremental) javac returned non-zero exit code
[error] (codeGenJVM3 / Compile / compileIncremental) javac returned non-zero exit code
[error] (codeGenJVM2_13 / Compile / compileIncremental) javac returned non-zero exit code
[error] Total time: 10 s, completed 10.06.2025, 09:04:33
The build definition in sbt:
lazy val codeGen = (projectMatrix in file("code-gen"))
.enablePlugins(BuildInfoPlugin)
.defaultAxes()
.settings(
name := "sbt-transforms",
buildInfoPackage := "fo.als.transforms.compiler",
buildInfoKeys := Seq[BuildInfoKey](
name,
organization,
version,
scalaVersion,
scalaBinaryVersion,
sbtVersion,
"coreName" -> (core.jvm(autoScalaLibrary = true) / name).value
),
libraryDependencies ++= Seq(
scalaPb,
// For finding google/protobuf/descriptor.proto
scalaPbRuntime % "protobuf",
alsPb % "protobuf-src" intransitive ()
),
Compile / PB.targets := Seq(PB.gens.java(versions.scalaPbProtobuf) -> (Compile / sourceManaged).value / "scalapb"),
Compile / PB.protocVersion := versions.scalaPbProtobuf
)
.jvmPlatform(
scalaVersions = Seq(Scala212, Scala213, Scala3),
noScalaDocOrSrc
)
lazy val codeGenJVM212 = codeGen
.jvm(Scala212)
.settings(noScalaDocOrSrc)
This has been working fine for years.
The custom option that is failing is this:
syntax = "proto2";
import "google/protobuf/descriptor.proto";
import "scalapb/scalapb.proto";
package alspb.options;
option java_package = "alspb.options";
option (scalapb.options) = {
scope: FILE
flat_package: false
single_file: true
lenses: false
java_conversions: false
preserve_unknown_fields: true
};
///====================================================================================================================
/// Message Options
///====================================================================================================================
enum MessageKind {
Data = 0;
Event = 1;
Command = 2;
}
message MessageOptions {
// Classifies message usage.
optional MessageKind kind = 1;
extensions 1000 to max;
}
extend google.protobuf.MessageOptions {
optional MessageOptions message = 50001;
}
///====================================================================================================================