Skip to content

Commit 3981424

Browse files
committed
feat: Add support for LambdaType
scalameta/scalameta#2867
1 parent ef591de commit 3981424

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

generator/src/main/protobuf/scalameta.proto

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,15 @@ message Type {
7474
ByNameType by_name_type = 13;
7575
RepeatedType repeated_type = 14;
7676
MatchType match_type = 25;
77+
LambdaType lambda_type = 26;
7778
}
7879
}
7980

81+
message LambdaType {
82+
Scope parameters = 1;
83+
Type return_type = 2;
84+
}
85+
8086
message TypeRef {
8187
Type prefix = 1;
8288
string symbol = 2;

output/src/main/scala/generated/dotty/tools/dotc/semanticdb/Type.scala

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ object Type {
3939
case __v: dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.ByNameType => __v.value
4040
case __v: dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.RepeatedType => __v.value
4141
case __v: dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.MatchType => __v.value
42+
case __v: dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.LambdaType => __v.value
4243
case dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.Empty => Empty
4344
}
4445
override def toBase(__custom: dotty.tools.dotc.semanticdb.Type): dotty.tools.dotc.semanticdb.TypeMessage = dotty.tools.dotc.semanticdb.TypeMessage(__custom match {
@@ -57,6 +58,7 @@ object Type {
5758
case __v: dotty.tools.dotc.semanticdb.ByNameType => dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.ByNameType(__v)
5859
case __v: dotty.tools.dotc.semanticdb.RepeatedType => dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.RepeatedType(__v)
5960
case __v: dotty.tools.dotc.semanticdb.MatchType => dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.MatchType(__v)
61+
case __v: dotty.tools.dotc.semanticdb.LambdaType => dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.LambdaType(__v)
6062
case Empty => dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.Empty
6163
})
6264
}
@@ -129,6 +131,10 @@ final case class TypeMessage(
129131
val __value = sealedValue.matchType.get
130132
__size += 2 + SemanticdbOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
131133
};
134+
if (sealedValue.lambdaType.isDefined) {
135+
val __value = sealedValue.lambdaType.get
136+
__size += 2 + SemanticdbOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
137+
};
132138
__size
133139
}
134140
override def serializedSize: _root_.scala.Int = {
@@ -231,6 +237,12 @@ final case class TypeMessage(
231237
_output__.writeUInt32NoTag(__m.serializedSize)
232238
__m.writeTo(_output__)
233239
};
240+
sealedValue.lambdaType.foreach { __v =>
241+
val __m = __v
242+
_output__.writeTag(26, 2)
243+
_output__.writeUInt32NoTag(__m.serializedSize)
244+
__m.writeTo(_output__)
245+
};
234246
}
235247
def getTypeRef: dotty.tools.dotc.semanticdb.TypeRef = sealedValue.typeRef.getOrElse(dotty.tools.dotc.semanticdb.TypeRef.defaultInstance)
236248
def withTypeRef(__v: dotty.tools.dotc.semanticdb.TypeRef): TypeMessage = copy(sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.TypeRef(__v))
@@ -262,6 +274,8 @@ final case class TypeMessage(
262274
def withRepeatedType(__v: dotty.tools.dotc.semanticdb.RepeatedType): TypeMessage = copy(sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.RepeatedType(__v))
263275
def getMatchType: dotty.tools.dotc.semanticdb.MatchType = sealedValue.matchType.getOrElse(dotty.tools.dotc.semanticdb.MatchType.defaultInstance)
264276
def withMatchType(__v: dotty.tools.dotc.semanticdb.MatchType): TypeMessage = copy(sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.MatchType(__v))
277+
def getLambdaType: dotty.tools.dotc.semanticdb.LambdaType = sealedValue.lambdaType.getOrElse(dotty.tools.dotc.semanticdb.LambdaType.defaultInstance)
278+
def withLambdaType(__v: dotty.tools.dotc.semanticdb.LambdaType): TypeMessage = copy(sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.LambdaType(__v))
265279
def clearSealedValue: TypeMessage = copy(sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.Empty)
266280
def withSealedValue(__v: dotty.tools.dotc.semanticdb.TypeMessage.SealedValue): TypeMessage = copy(sealedValue = __v)
267281

@@ -311,6 +325,8 @@ object TypeMessage extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc
311325
__sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.RepeatedType(__sealedValue.repeatedType.fold(LiteParser.readMessage[dotty.tools.dotc.semanticdb.RepeatedType](_input__))(LiteParser.readMessage(_input__, _)))
312326
case 202 =>
313327
__sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.MatchType(__sealedValue.matchType.fold(LiteParser.readMessage[dotty.tools.dotc.semanticdb.MatchType](_input__))(LiteParser.readMessage(_input__, _)))
328+
case 210 =>
329+
__sealedValue = dotty.tools.dotc.semanticdb.TypeMessage.SealedValue.LambdaType(__sealedValue.lambdaType.fold(LiteParser.readMessage[dotty.tools.dotc.semanticdb.LambdaType](_input__))(LiteParser.readMessage(_input__, _)))
314330
case tag => _input__.skipField(tag)
315331
}
316332
}
@@ -345,6 +361,7 @@ object TypeMessage extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc
345361
def isByNameType: _root_.scala.Boolean = false
346362
def isRepeatedType: _root_.scala.Boolean = false
347363
def isMatchType: _root_.scala.Boolean = false
364+
def isLambdaType: _root_.scala.Boolean = false
348365
def typeRef: _root_.scala.Option[dotty.tools.dotc.semanticdb.TypeRef] = _root_.scala.None
349366
def singleType: _root_.scala.Option[dotty.tools.dotc.semanticdb.SingleType] = _root_.scala.None
350367
def thisType: _root_.scala.Option[dotty.tools.dotc.semanticdb.ThisType] = _root_.scala.None
@@ -360,6 +377,7 @@ object TypeMessage extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc
360377
def byNameType: _root_.scala.Option[dotty.tools.dotc.semanticdb.ByNameType] = _root_.scala.None
361378
def repeatedType: _root_.scala.Option[dotty.tools.dotc.semanticdb.RepeatedType] = _root_.scala.None
362379
def matchType: _root_.scala.Option[dotty.tools.dotc.semanticdb.MatchType] = _root_.scala.None
380+
def lambdaType: _root_.scala.Option[dotty.tools.dotc.semanticdb.LambdaType] = _root_.scala.None
363381
}
364382
object SealedValue {
365383
@SerialVersionUID(0L)
@@ -476,6 +494,13 @@ object TypeMessage extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc
476494
override def matchType: _root_.scala.Option[dotty.tools.dotc.semanticdb.MatchType] = Some(value)
477495
override def number: _root_.scala.Int = 25
478496
}
497+
@SerialVersionUID(0L)
498+
final case class LambdaType(value: dotty.tools.dotc.semanticdb.LambdaType) extends dotty.tools.dotc.semanticdb.TypeMessage.SealedValue derives CanEqual {
499+
type ValueType = dotty.tools.dotc.semanticdb.LambdaType
500+
override def isLambdaType: _root_.scala.Boolean = true
501+
override def lambdaType: _root_.scala.Option[dotty.tools.dotc.semanticdb.LambdaType] = Some(value)
502+
override def number: _root_.scala.Int = 26
503+
}
479504
}
480505
final val TYPE_REF_FIELD_NUMBER = 2
481506
final val SINGLE_TYPE_FIELD_NUMBER = 20
@@ -492,6 +517,7 @@ object TypeMessage extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc
492517
final val BY_NAME_TYPE_FIELD_NUMBER = 13
493518
final val REPEATED_TYPE_FIELD_NUMBER = 14
494519
final val MATCH_TYPE_FIELD_NUMBER = 25
520+
final val LAMBDA_TYPE_FIELD_NUMBER = 26
495521
def of(
496522
sealedValue: dotty.tools.dotc.semanticdb.TypeMessage.SealedValue
497523
): _root_.dotty.tools.dotc.semanticdb.TypeMessage = _root_.dotty.tools.dotc.semanticdb.TypeMessage(
@@ -2034,3 +2060,107 @@ object MatchType extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc.s
20342060
)
20352061
// @@protoc_insertion_point(GeneratedMessageCompanion[dotty.tools.dotc.semanticdb.MatchType])
20362062
}
2063+
2064+
@SerialVersionUID(0L)
2065+
final case class LambdaType(
2066+
parameters: _root_.scala.Option[dotty.tools.dotc.semanticdb.Scope] = _root_.scala.None,
2067+
returnType: dotty.tools.dotc.semanticdb.Type = dotty.tools.dotc.semanticdb.LambdaType._typemapper_returnType.toCustom(dotty.tools.dotc.semanticdb.TypeMessage.defaultInstance)
2068+
) extends dotty.tools.dotc.semanticdb.Type.NonEmpty with SemanticdbGeneratedMessage derives CanEqual {
2069+
@transient @sharable
2070+
private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
2071+
private[this] def __computeSerializedSize(): _root_.scala.Int = {
2072+
var __size = 0
2073+
if (parameters.isDefined) {
2074+
val __value = parameters.get
2075+
__size += 1 + SemanticdbOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
2076+
};
2077+
2078+
{
2079+
val __value = dotty.tools.dotc.semanticdb.LambdaType._typemapper_returnType.toBase(returnType)
2080+
if (__value.serializedSize != 0) {
2081+
__size += 1 + SemanticdbOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
2082+
}
2083+
};
2084+
__size
2085+
}
2086+
override def serializedSize: _root_.scala.Int = {
2087+
var __size = __serializedSizeMemoized
2088+
if (__size == 0) {
2089+
__size = __computeSerializedSize() + 1
2090+
__serializedSizeMemoized = __size
2091+
}
2092+
__size - 1
2093+
2094+
}
2095+
def writeTo(`_output__`: SemanticdbOutputStream): _root_.scala.Unit = {
2096+
parameters.foreach { __v =>
2097+
val __m = __v
2098+
_output__.writeTag(1, 2)
2099+
_output__.writeUInt32NoTag(__m.serializedSize)
2100+
__m.writeTo(_output__)
2101+
};
2102+
{
2103+
val __v = dotty.tools.dotc.semanticdb.LambdaType._typemapper_returnType.toBase(returnType)
2104+
if (__v.serializedSize != 0) {
2105+
_output__.writeTag(2, 2)
2106+
_output__.writeUInt32NoTag(__v.serializedSize)
2107+
__v.writeTo(_output__)
2108+
}
2109+
};
2110+
}
2111+
def getParameters: dotty.tools.dotc.semanticdb.Scope = parameters.getOrElse(dotty.tools.dotc.semanticdb.Scope.defaultInstance)
2112+
def clearParameters: LambdaType = copy(parameters = _root_.scala.None)
2113+
def withParameters(__v: dotty.tools.dotc.semanticdb.Scope): LambdaType = copy(parameters = Option(__v))
2114+
def withReturnType(__v: dotty.tools.dotc.semanticdb.Type): LambdaType = copy(returnType = __v)
2115+
2116+
2117+
2118+
2119+
// @@protoc_insertion_point(GeneratedMessage[dotty.tools.dotc.semanticdb.LambdaType])
2120+
}
2121+
2122+
object LambdaType extends SemanticdbGeneratedMessageCompanion[dotty.tools.dotc.semanticdb.LambdaType] {
2123+
implicit def messageCompanion: SemanticdbGeneratedMessageCompanion[dotty.tools.dotc.semanticdb.LambdaType] = this
2124+
def parseFrom(`_input__`: SemanticdbInputStream): dotty.tools.dotc.semanticdb.LambdaType = {
2125+
var __parameters: _root_.scala.Option[dotty.tools.dotc.semanticdb.Scope] = _root_.scala.None
2126+
var __returnType: _root_.scala.Option[dotty.tools.dotc.semanticdb.TypeMessage] = _root_.scala.None
2127+
var _done__ = false
2128+
while (!_done__) {
2129+
val _tag__ = _input__.readTag()
2130+
_tag__ match {
2131+
case 0 => _done__ = true
2132+
case 10 =>
2133+
__parameters = Option(__parameters.fold(LiteParser.readMessage[dotty.tools.dotc.semanticdb.Scope](_input__))(LiteParser.readMessage(_input__, _)))
2134+
case 18 =>
2135+
__returnType = _root_.scala.Some(__returnType.fold(LiteParser.readMessage[dotty.tools.dotc.semanticdb.TypeMessage](_input__))(LiteParser.readMessage(_input__, _)))
2136+
case tag => _input__.skipField(tag)
2137+
}
2138+
}
2139+
dotty.tools.dotc.semanticdb.LambdaType(
2140+
parameters = __parameters,
2141+
returnType = dotty.tools.dotc.semanticdb.LambdaType._typemapper_returnType.toCustom(__returnType.getOrElse(dotty.tools.dotc.semanticdb.TypeMessage.defaultInstance))
2142+
)
2143+
}
2144+
2145+
2146+
2147+
2148+
2149+
2150+
lazy val defaultInstance = dotty.tools.dotc.semanticdb.LambdaType(
2151+
parameters = _root_.scala.None,
2152+
returnType = dotty.tools.dotc.semanticdb.LambdaType._typemapper_returnType.toCustom(dotty.tools.dotc.semanticdb.TypeMessage.defaultInstance)
2153+
)
2154+
final val PARAMETERS_FIELD_NUMBER = 1
2155+
final val RETURN_TYPE_FIELD_NUMBER = 2
2156+
@transient @sharable
2157+
private[semanticdb] val _typemapper_returnType: SemanticdbTypeMapper[dotty.tools.dotc.semanticdb.TypeMessage, dotty.tools.dotc.semanticdb.Type] = implicitly[SemanticdbTypeMapper[dotty.tools.dotc.semanticdb.TypeMessage, dotty.tools.dotc.semanticdb.Type]]
2158+
def of(
2159+
parameters: _root_.scala.Option[dotty.tools.dotc.semanticdb.Scope],
2160+
returnType: dotty.tools.dotc.semanticdb.Type
2161+
): _root_.dotty.tools.dotc.semanticdb.LambdaType = _root_.dotty.tools.dotc.semanticdb.LambdaType(
2162+
parameters,
2163+
returnType
2164+
)
2165+
// @@protoc_insertion_point(GeneratedMessageCompanion[dotty.tools.dotc.semanticdb.LambdaType])
2166+
}

0 commit comments

Comments
 (0)