Move deserialized callable descriptors to single file, convert to Kotlin
This commit is contained in:
+4
-1
@@ -139,7 +139,10 @@ public class MemberDeserializer(private val c: DeserializationContext) {
|
|||||||
val receiverAnnotations = if (proto.hasReceiver())
|
val receiverAnnotations = if (proto.hasReceiver())
|
||||||
getReceiverParameterAnnotations(proto, AnnotatedCallableKind.FUNCTION)
|
getReceiverParameterAnnotations(proto, AnnotatedCallableKind.FUNCTION)
|
||||||
else Annotations.EMPTY
|
else Annotations.EMPTY
|
||||||
val function = DeserializedSimpleFunctionDescriptor.create(c.containingDeclaration, annotations, proto, c.nameResolver, c.typeTable)
|
val function = DeserializedSimpleFunctionDescriptor(
|
||||||
|
c.containingDeclaration, /* original = */ null, annotations, c.nameResolver.getName(proto.name),
|
||||||
|
Deserialization.memberKind(Flags.MEMBER_KIND.get(proto.flags)), proto, c.nameResolver, c.typeTable
|
||||||
|
)
|
||||||
val local = c.childContext(function, proto.typeParameterList)
|
val local = c.childContext(function, proto.typeParameterList)
|
||||||
function.initialize(
|
function.initialize(
|
||||||
proto.receiverType(c.typeTable)?.let { local.typeDeserializer.type(it, receiverAnnotations) },
|
proto.receiverType(c.typeTable)?.let { local.typeDeserializer.type(it, receiverAnnotations) },
|
||||||
|
|||||||
+97
-1
@@ -17,7 +17,14 @@
|
|||||||
package org.jetbrains.kotlin.serialization.deserialization.descriptors
|
package org.jetbrains.kotlin.serialization.deserialization.descriptors
|
||||||
|
|
||||||
import com.google.protobuf.MessageLite
|
import com.google.protobuf.MessageLite
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
|
import org.jetbrains.kotlin.descriptors.impl.ConstructorDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
||||||
|
|
||||||
@@ -28,3 +35,92 @@ interface DeserializedCallableMemberDescriptor : CallableMemberDescriptor {
|
|||||||
|
|
||||||
val typeTable: TypeTable
|
val typeTable: TypeTable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DeserializedSimpleFunctionDescriptor(
|
||||||
|
containingDeclaration: DeclarationDescriptor,
|
||||||
|
original: SimpleFunctionDescriptor?,
|
||||||
|
annotations: Annotations,
|
||||||
|
name: Name,
|
||||||
|
kind: CallableMemberDescriptor.Kind,
|
||||||
|
override val proto: ProtoBuf.Function,
|
||||||
|
override val nameResolver: NameResolver,
|
||||||
|
override val typeTable: TypeTable
|
||||||
|
) : DeserializedCallableMemberDescriptor,
|
||||||
|
SimpleFunctionDescriptorImpl(containingDeclaration, original, annotations, name, kind, SourceElement.NO_SOURCE) {
|
||||||
|
|
||||||
|
override fun createSubstitutedCopy(
|
||||||
|
newOwner: DeclarationDescriptor,
|
||||||
|
original: FunctionDescriptor?,
|
||||||
|
kind: CallableMemberDescriptor.Kind,
|
||||||
|
newName: Name?,
|
||||||
|
preserveSource: Boolean
|
||||||
|
): FunctionDescriptorImpl {
|
||||||
|
return DeserializedSimpleFunctionDescriptor(
|
||||||
|
newOwner, original as SimpleFunctionDescriptor?, annotations, newName ?: name, kind, proto, nameResolver, typeTable
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeserializedPropertyDescriptor(
|
||||||
|
containingDeclaration: DeclarationDescriptor,
|
||||||
|
original: PropertyDescriptor?,
|
||||||
|
annotations: Annotations,
|
||||||
|
modality: Modality,
|
||||||
|
visibility: Visibility,
|
||||||
|
isVar: Boolean,
|
||||||
|
name: Name,
|
||||||
|
kind: CallableMemberDescriptor.Kind,
|
||||||
|
isLateInit: Boolean,
|
||||||
|
isConst: Boolean,
|
||||||
|
override val proto: ProtoBuf.Property,
|
||||||
|
override val nameResolver: NameResolver,
|
||||||
|
override val typeTable: TypeTable
|
||||||
|
) : DeserializedCallableMemberDescriptor,
|
||||||
|
PropertyDescriptorImpl(containingDeclaration, original, annotations,
|
||||||
|
modality, visibility, isVar, name, kind, SourceElement.NO_SOURCE, isLateInit, isConst) {
|
||||||
|
|
||||||
|
override fun createSubstitutedCopy(
|
||||||
|
newOwner: DeclarationDescriptor,
|
||||||
|
newModality: Modality,
|
||||||
|
newVisibility: Visibility,
|
||||||
|
original: PropertyDescriptor?,
|
||||||
|
kind: CallableMemberDescriptor.Kind
|
||||||
|
): PropertyDescriptorImpl {
|
||||||
|
return DeserializedPropertyDescriptor(
|
||||||
|
newOwner, original, annotations, newModality, newVisibility, isVar, name, kind, isLateInit, isConst,
|
||||||
|
proto, nameResolver, typeTable
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DeserializedConstructorDescriptor(
|
||||||
|
containingDeclaration: ClassDescriptor,
|
||||||
|
original: ConstructorDescriptor?,
|
||||||
|
annotations: Annotations,
|
||||||
|
isPrimary: Boolean,
|
||||||
|
kind: CallableMemberDescriptor.Kind,
|
||||||
|
override val proto: ProtoBuf.Constructor,
|
||||||
|
override val nameResolver: NameResolver,
|
||||||
|
override val typeTable: TypeTable
|
||||||
|
) : DeserializedCallableMemberDescriptor,
|
||||||
|
ConstructorDescriptorImpl(containingDeclaration, original, annotations, isPrimary, kind, SourceElement.NO_SOURCE) {
|
||||||
|
|
||||||
|
override fun createSubstitutedCopy(
|
||||||
|
newOwner: DeclarationDescriptor,
|
||||||
|
original: FunctionDescriptor?,
|
||||||
|
kind: CallableMemberDescriptor.Kind,
|
||||||
|
newName: Name?,
|
||||||
|
preserveSource: Boolean
|
||||||
|
): DeserializedConstructorDescriptor {
|
||||||
|
return DeserializedConstructorDescriptor(
|
||||||
|
newOwner as ClassDescriptor, original as ConstructorDescriptor?, annotations, isPrimary, kind,
|
||||||
|
proto, nameResolver, typeTable
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun isExternal(): Boolean = false
|
||||||
|
|
||||||
|
override fun isInline(): Boolean = false
|
||||||
|
|
||||||
|
override fun isTailrec(): Boolean = false
|
||||||
|
}
|
||||||
|
|||||||
-58
@@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.deserialization.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ConstructorDescriptorImpl
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
|
||||||
|
|
||||||
public class DeserializedConstructorDescriptor(
|
|
||||||
containingDeclaration: ClassDescriptor,
|
|
||||||
original: ConstructorDescriptor?,
|
|
||||||
annotations: Annotations,
|
|
||||||
isPrimary: Boolean,
|
|
||||||
kind: CallableMemberDescriptor.Kind,
|
|
||||||
override val proto: ProtoBuf.Constructor,
|
|
||||||
override val nameResolver: NameResolver,
|
|
||||||
override val typeTable: TypeTable
|
|
||||||
) : ConstructorDescriptorImpl(containingDeclaration, original, annotations, isPrimary, kind, SourceElement.NO_SOURCE),
|
|
||||||
DeserializedCallableMemberDescriptor {
|
|
||||||
|
|
||||||
override fun createSubstitutedCopy(
|
|
||||||
newOwner: DeclarationDescriptor,
|
|
||||||
original: FunctionDescriptor?,
|
|
||||||
kind: CallableMemberDescriptor.Kind,
|
|
||||||
newName: Name?,
|
|
||||||
preserveSource: Boolean
|
|
||||||
): DeserializedConstructorDescriptor {
|
|
||||||
return DeserializedConstructorDescriptor(
|
|
||||||
newOwner as ClassDescriptor, original as ConstructorDescriptor?,
|
|
||||||
annotations, isPrimary, kind, proto, nameResolver, typeTable
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isExternal(): Boolean = false
|
|
||||||
|
|
||||||
override fun isInline(): Boolean = false
|
|
||||||
|
|
||||||
override fun isTailrec(): Boolean = false
|
|
||||||
}
|
|
||||||
-58
@@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.deserialization.descriptors
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
|
||||||
|
|
||||||
class DeserializedPropertyDescriptor(
|
|
||||||
containingDeclaration: DeclarationDescriptor,
|
|
||||||
original: PropertyDescriptor?,
|
|
||||||
annotations: Annotations,
|
|
||||||
modality: Modality,
|
|
||||||
visibility: Visibility,
|
|
||||||
isVar: Boolean,
|
|
||||||
name: Name,
|
|
||||||
kind: Kind,
|
|
||||||
lateInit: Boolean,
|
|
||||||
isConst: Boolean,
|
|
||||||
override val proto: ProtoBuf.Property,
|
|
||||||
override val nameResolver: NameResolver,
|
|
||||||
override val typeTable: TypeTable
|
|
||||||
) : DeserializedCallableMemberDescriptor,
|
|
||||||
PropertyDescriptorImpl(containingDeclaration, original, annotations,
|
|
||||||
modality, visibility, isVar, name, kind, SourceElement.NO_SOURCE, lateInit, isConst) {
|
|
||||||
|
|
||||||
override fun createSubstitutedCopy(
|
|
||||||
newOwner: DeclarationDescriptor,
|
|
||||||
newModality: Modality,
|
|
||||||
newVisibility: Visibility,
|
|
||||||
original: PropertyDescriptor?,
|
|
||||||
kind: Kind
|
|
||||||
): PropertyDescriptorImpl {
|
|
||||||
return DeserializedPropertyDescriptor(
|
|
||||||
newOwner, original, annotations, newModality, newVisibility, isVar, name, kind, isLateInit, isConst,
|
|
||||||
proto, nameResolver, typeTable
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-121
@@ -1,121 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.deserialization.descriptors;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement;
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl;
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl;
|
|
||||||
import org.jetbrains.kotlin.name.Name;
|
|
||||||
import org.jetbrains.kotlin.serialization.Flags;
|
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf;
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.Deserialization;
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable;
|
|
||||||
|
|
||||||
public class DeserializedSimpleFunctionDescriptor extends SimpleFunctionDescriptorImpl implements DeserializedCallableMemberDescriptor {
|
|
||||||
|
|
||||||
private final ProtoBuf.Function proto;
|
|
||||||
private final NameResolver nameResolver;
|
|
||||||
private final TypeTable typeTable;
|
|
||||||
|
|
||||||
private DeserializedSimpleFunctionDescriptor(
|
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
|
||||||
@Nullable SimpleFunctionDescriptor original,
|
|
||||||
@NotNull Annotations annotations,
|
|
||||||
@NotNull Name name,
|
|
||||||
@NotNull Kind kind,
|
|
||||||
@NotNull ProtoBuf.Function proto,
|
|
||||||
@NotNull NameResolver nameResolver,
|
|
||||||
@NotNull TypeTable typeTable
|
|
||||||
) {
|
|
||||||
super(containingDeclaration, original, annotations, name, kind, SourceElement.NO_SOURCE);
|
|
||||||
this.proto = proto;
|
|
||||||
this.nameResolver = nameResolver;
|
|
||||||
this.typeTable = typeTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
protected FunctionDescriptorImpl createSubstitutedCopy(
|
|
||||||
@NotNull DeclarationDescriptor newOwner,
|
|
||||||
@Nullable FunctionDescriptor original,
|
|
||||||
@NotNull Kind kind,
|
|
||||||
@Nullable Name newName,
|
|
||||||
boolean preserveSource
|
|
||||||
) {
|
|
||||||
return new DeserializedSimpleFunctionDescriptor(
|
|
||||||
newOwner,
|
|
||||||
(DeserializedSimpleFunctionDescriptor) original,
|
|
||||||
getAnnotations(),
|
|
||||||
newName != null ? newName : getName(),
|
|
||||||
kind,
|
|
||||||
proto,
|
|
||||||
nameResolver,
|
|
||||||
typeTable
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public DeserializedSimpleFunctionDescriptor getOriginal() {
|
|
||||||
return (DeserializedSimpleFunctionDescriptor) super.getOriginal();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public ProtoBuf.Function getProto() {
|
|
||||||
return proto;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public NameResolver getNameResolver() {
|
|
||||||
return nameResolver;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public TypeTable getTypeTable() {
|
|
||||||
return typeTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public static DeserializedSimpleFunctionDescriptor create(
|
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
|
||||||
@NotNull Annotations annotations,
|
|
||||||
@NotNull ProtoBuf.Function proto,
|
|
||||||
@NotNull NameResolver nameResolver,
|
|
||||||
@NotNull TypeTable typeTable
|
|
||||||
) {
|
|
||||||
return new DeserializedSimpleFunctionDescriptor(
|
|
||||||
containingDeclaration,
|
|
||||||
null,
|
|
||||||
annotations,
|
|
||||||
nameResolver.getName(proto.getName()),
|
|
||||||
Deserialization.memberKind(Flags.MEMBER_KIND.get(proto.getFlags())),
|
|
||||||
proto,
|
|
||||||
nameResolver,
|
|
||||||
typeTable
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user