11package protocgen
22
3+ import com .google .protobuf .UnknownFieldSet
34import com .google .protobuf .compiler .PluginProtos .CodeGeneratorResponse
45import scala .collection .JavaConverters ._
56
67sealed trait CodeGenResponse {
78 def toCodeGeneratorResponse : CodeGeneratorResponse =
89 this match {
9- case CodeGenResponse .Internal .Success (files, features) =>
10+ case value : CodeGenResponse .Internal .Success =>
1011 val b = CodeGeneratorResponse .newBuilder()
11- b.addAllFile(files.asJava)
12- b.setSupportedFeatures(features.map(_.getNumber()).sum)
12+ b.addAllFile(value.files.asJava)
13+ b.setSupportedFeatures(value.supportedFeatures.map(_.getNumber()).sum)
14+ b.setUnknownFields(
15+ // https://github.com/protocolbuffers/protobuf/blob/1f60d67437d7f57700/src/google/protobuf/compiler/plugin.proto#L105-L115
16+ UnknownFieldSet
17+ .newBuilder()
18+ .addField(
19+ 3 ,
20+ UnknownFieldSet .Field
21+ .newBuilder()
22+ .addVarint(
23+ value.minimumEdition
24+ )
25+ .build()
26+ )
27+ .addField(
28+ 4 ,
29+ UnknownFieldSet .Field
30+ .newBuilder()
31+ .addVarint(
32+ value.maximumEdition
33+ )
34+ .build()
35+ )
36+ .build()
37+ )
1338 b.build()
1439 case CodeGenResponse .Internal .Failure (msg) =>
1540 val b = CodeGeneratorResponse .newBuilder()
@@ -20,22 +45,32 @@ sealed trait CodeGenResponse {
2045
2146object CodeGenResponse {
2247 def succeed (files : Seq [CodeGeneratorResponse .File ]): CodeGenResponse =
23- Internal .Success (files, Set ())
48+ Internal .Success (files, Set (), 0 , 0 )
2449
2550 def succeed (
2651 files : Seq [CodeGeneratorResponse .File ],
2752 supportedFeatures : Set [CodeGeneratorResponse .Feature ]
2853 ): CodeGenResponse =
29- Internal .Success (files, supportedFeatures)
54+ Internal .Success (files, supportedFeatures, 0 , 0 )
55+
56+ def succeed (
57+ files : Seq [CodeGeneratorResponse .File ],
58+ supportedFeatures : Set [CodeGeneratorResponse .Feature ],
59+ minimumEdition : Int ,
60+ maximumEdition : Int
61+ ): CodeGenResponse =
62+ Internal .Success (files, supportedFeatures, minimumEdition, maximumEdition)
3063
3164 def fail (message : String ): CodeGenResponse = Internal .Failure (message)
3265
3366 private object Internal {
3467 final case class Failure (val message : String ) extends CodeGenResponse
3568
3669 final case class Success (
37- val files : Seq [CodeGeneratorResponse .File ],
38- supportedFeatures : Set [CodeGeneratorResponse .Feature ]
70+ files : Seq [CodeGeneratorResponse .File ],
71+ supportedFeatures : Set [CodeGeneratorResponse .Feature ],
72+ minimumEdition : Int ,
73+ maximumEdition : Int
3974 ) extends CodeGenResponse
4075 }
4176}
0 commit comments