Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -48,8 +48,6 @@ public class AccessorForFunctionDescriptor extends AbstractAccessorForFunctionDe
|
||||
descriptor.getReturnType(),
|
||||
Modality.FINAL,
|
||||
Visibilities.LOCAL);
|
||||
setOperator(descriptor.isOperator());
|
||||
setInfix(descriptor.isInfix());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+6
-2
@@ -69,7 +69,9 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl implem
|
||||
public static class Getter extends PropertyGetterDescriptorImpl implements AccessorForCallableDescriptor<PropertyGetterDescriptor> {
|
||||
public Getter(AccessorForPropertyDescriptor property) {
|
||||
super(property, Annotations.Companion.getEMPTY(), Modality.FINAL, Visibilities.LOCAL,
|
||||
false, false, Kind.DECLARATION, null, SourceElement.NO_SOURCE);
|
||||
false, false,
|
||||
/* isExternal = */ false,
|
||||
Kind.DECLARATION, null, SourceElement.NO_SOURCE);
|
||||
initialize(property.getType());
|
||||
}
|
||||
|
||||
@@ -91,7 +93,9 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl implem
|
||||
public static class Setter extends PropertySetterDescriptorImpl implements AccessorForCallableDescriptor<PropertySetterDescriptor>{
|
||||
public Setter(AccessorForPropertyDescriptor property) {
|
||||
super(property, Annotations.Companion.getEMPTY(), Modality.FINAL, Visibilities.LOCAL,
|
||||
false, false, Kind.DECLARATION, null, SourceElement.NO_SOURCE);
|
||||
false, false,
|
||||
/* isExternal = */ false,
|
||||
Kind.DECLARATION, null, SourceElement.NO_SOURCE);
|
||||
initializeDefault();
|
||||
}
|
||||
|
||||
|
||||
@@ -62,9 +62,7 @@ public abstract class AnnotationCodegen {
|
||||
|
||||
public static final List<JvmFlagAnnotation> METHOD_FLAGS = Arrays.asList(
|
||||
new JvmFlagAnnotation("kotlin.jvm.Strictfp", Opcodes.ACC_STRICT),
|
||||
new JvmFlagAnnotation("kotlin.jvm.Synchronized", Opcodes.ACC_SYNCHRONIZED),
|
||||
new JvmFlagAnnotation("kotlin.jvm.native", Opcodes.ACC_NATIVE),
|
||||
new JvmFlagAnnotation("kotlin.external", Opcodes.ACC_NATIVE)
|
||||
new JvmFlagAnnotation("kotlin.jvm.Synchronized", Opcodes.ACC_SYNCHRONIZED)
|
||||
);
|
||||
|
||||
private static final AnnotationVisitor NO_ANNOTATION_VISITOR = new AnnotationVisitor(Opcodes.ASM5) {};
|
||||
|
||||
@@ -192,6 +192,10 @@ public class AsmUtil {
|
||||
}
|
||||
}
|
||||
|
||||
if (functionDescriptor.getOriginal().isExternal()) {
|
||||
flags |= Opcodes.ACC_NATIVE;
|
||||
}
|
||||
|
||||
if (AnnotationUtilKt.isPlatformStaticInCompanionObject(functionDescriptor)) {
|
||||
// Native method will be a member of the class, the companion object method will be delegated to it
|
||||
flags &= ~Opcodes.ACC_NATIVE;
|
||||
|
||||
@@ -479,7 +479,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
}
|
||||
|
||||
private void generateFunctionsForDataClasses() {
|
||||
if (!KotlinBuiltIns.isData(descriptor)) return;
|
||||
if (!descriptor.isData()) return;
|
||||
|
||||
new DataClassMethodGeneratorImpl(myClass, bindingContext).generate();
|
||||
}
|
||||
@@ -763,8 +763,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
||||
new DefaultParameterValueLoader() {
|
||||
@Override
|
||||
public StackValue genValue(ValueParameterDescriptor valueParameter, ExpressionCodegen codegen) {
|
||||
assert KotlinBuiltIns.isData((ClassDescriptor) function.getContainingDeclaration())
|
||||
: "Function container should be annotated with [data]: " + function;
|
||||
assert ((ClassDescriptor) function.getContainingDeclaration()).isData()
|
||||
: "Function container must have [data] modifier: " + function;
|
||||
PropertyDescriptor property = bindingContext.get(BindingContext.VALUE_PARAMETER_AS_PROPERTY, valueParameter);
|
||||
assert property != null : "Copy function doesn't correspond to any property: " + function;
|
||||
return codegen.intermediateValueForProperty(property, false, null, StackValue.LOCAL_0);
|
||||
|
||||
@@ -100,6 +100,11 @@ public class MutableClassDescriptor extends ClassDescriptorBase implements Class
|
||||
return isInner;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isData() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCompanionObject() {
|
||||
return false;
|
||||
|
||||
-9
@@ -20,7 +20,6 @@ import com.google.protobuf.MessageLite;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
||||
@@ -62,14 +61,6 @@ public class JvmSerializerExtension extends SerializerExtension {
|
||||
return useTypeTable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serializeClass(@NotNull ClassDescriptor descriptor, @NotNull ProtoBuf.Class.Builder proto) {
|
||||
AnnotationDescriptor annotation = descriptor.getAnnotations().findAnnotation(KotlinBuiltIns.FQ_NAMES.annotation);
|
||||
if (annotation != null) {
|
||||
proto.addExtension(JvmProtoBuf.classAnnotation, annotationSerializer.serializeAnnotation(annotation));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serializeValueParameter(@NotNull ValueParameterDescriptor descriptor, @NotNull ProtoBuf.ValueParameter.Builder proto) {
|
||||
Integer index = bindings.get(INDEX_FOR_VALUE_PARAMETER, descriptor);
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* 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.inline
|
||||
|
||||
import org.jetbrains.kotlin.load.kotlin.FileBasedKotlinClass
|
||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
|
||||
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||
|
||||
public fun inlineFunctionsJvmNames(bytes: ByteArray): Set<String> {
|
||||
val header = readKotlinHeader(bytes)
|
||||
val annotationData = header.annotationData
|
||||
val strings = header.strings
|
||||
|
||||
if (annotationData == null || strings == null) return emptySet()
|
||||
|
||||
return when (header.kind) {
|
||||
KotlinClassHeader.Kind.CLASS -> {
|
||||
val classData = JvmProtoBufUtil.readClassDataFrom(BitEncoding.decodeBytes(annotationData), strings)
|
||||
inlineFunctionsJvmNames(classData.classProto.functionList, classData.nameResolver, classData.classProto.typeTable)
|
||||
}
|
||||
KotlinClassHeader.Kind.FILE_FACADE,
|
||||
KotlinClassHeader.Kind.MULTIFILE_CLASS_PART -> {
|
||||
val packageData = JvmProtoBufUtil.readPackageDataFrom(BitEncoding.decodeBytes(annotationData), strings)
|
||||
inlineFunctionsJvmNames(packageData.packageProto.functionList, packageData.nameResolver, packageData.packageProto.typeTable)
|
||||
}
|
||||
else -> emptySet<String>()
|
||||
}
|
||||
}
|
||||
|
||||
private fun inlineFunctionsJvmNames(functions: List<ProtoBuf.Function>, nameResolver: NameResolver, protoTypeTable: ProtoBuf.TypeTable): Set<String> {
|
||||
val typeTable = TypeTable(protoTypeTable)
|
||||
val inlineFunctions = functions.filter { Flags.IS_INLINE.get(it.flags) }
|
||||
val jvmNames = inlineFunctions.map {
|
||||
JvmProtoBufUtil.getJvmMethodSignature(it, nameResolver, typeTable)
|
||||
}
|
||||
return jvmNames.filterNotNull().toSet()
|
||||
}
|
||||
|
||||
private fun readKotlinHeader(bytes: ByteArray): KotlinClassHeader {
|
||||
var header: KotlinClassHeader? = null
|
||||
|
||||
FileBasedKotlinClass.create(bytes) { className, classHeader, innerClasses ->
|
||||
header = classHeader
|
||||
null
|
||||
}
|
||||
|
||||
if (header == null) throw AssertionError("Could not read kotlin header from byte array")
|
||||
|
||||
return header!!
|
||||
}
|
||||
+10
-2
@@ -157,7 +157,11 @@ public class SingleAbstractMethodUtils {
|
||||
assert parameterType != null : "couldn't substitute type: " + parameterTypeUnsubstituted +
|
||||
", substitutor = " + typeParameters.substitutor;
|
||||
ValueParameterDescriptor parameter = new ValueParameterDescriptorImpl(
|
||||
result, null, 0, Annotations.Companion.getEMPTY(), Name.identifier("function"), parameterType, false, null, SourceElement.NO_SOURCE);
|
||||
result, null, 0, Annotations.Companion.getEMPTY(), Name.identifier("function"), parameterType,
|
||||
/* declaresDefaultValue = */ false,
|
||||
/* isCrossinline = */ false,
|
||||
/* isNoinline = */ false,
|
||||
null, SourceElement.NO_SOURCE);
|
||||
|
||||
JetType returnType = typeParameters.substitutor.substitute(samInterface.getDefaultType(), Variance.OUT_VARIANCE);
|
||||
assert returnType != null : "couldn't substitute type: " + samInterface.getDefaultType() +
|
||||
@@ -268,7 +272,11 @@ public class SingleAbstractMethodUtils {
|
||||
|
||||
ValueParameterDescriptor newParam = new ValueParameterDescriptorImpl(
|
||||
samAdapter, null, originalParam.getIndex(), originalParam.getAnnotations(),
|
||||
originalParam.getName(), newType, false, null, SourceElement.NO_SOURCE
|
||||
originalParam.getName(), newType,
|
||||
/* declaresDefaultValue = */ false,
|
||||
/* isCrossinline = */ false,
|
||||
/* isNoinline = */ false,
|
||||
null, SourceElement.NO_SOURCE
|
||||
);
|
||||
valueParameters.add(newParam);
|
||||
}
|
||||
|
||||
@@ -16,35 +16,23 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.kotlin.nativeDeclarations
|
||||
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||
import org.jetbrains.kotlin.psi.JetDeclarationWithBody
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.annotations.hasInlineAnnotation
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.SuppressDiagnosticsByAnnotations
|
||||
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.FUNCTION_NO_BODY_ERRORS
|
||||
|
||||
private val NATIVE_ANNOTATION_CLASS_NAME = FqName("kotlin.jvm.native")
|
||||
private val EXTERNAL_ANNOTATION_CLASS_NAME = FqName("kotlin.external")
|
||||
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.SuppressDiagnosticsByAnnotations
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
|
||||
public fun DeclarationDescriptor.hasNativeAnnotation(): Boolean {
|
||||
return getAnnotations().findAnnotation(EXTERNAL_ANNOTATION_CLASS_NAME) != null
|
||||
|| annotations.findAnnotation(NATIVE_ANNOTATION_CLASS_NAME) != null
|
||||
return this is FunctionDescriptor && this.isExternal
|
||||
}
|
||||
|
||||
public class SuppressNoBodyErrorsForExternalDeclarations : SuppressDiagnosticsByAnnotations(FUNCTION_NO_BODY_ERRORS, EXTERNAL_ANNOTATION_CLASS_NAME)
|
||||
public class SuppressNoBodyErrorsForNativeDeclarations : SuppressDiagnosticsByAnnotations(FUNCTION_NO_BODY_ERRORS, NATIVE_ANNOTATION_CLASS_NAME)
|
||||
|
||||
public class NativeFunChecker : DeclarationChecker {
|
||||
override fun check(
|
||||
declaration: JetDeclaration,
|
||||
@@ -66,7 +54,7 @@ public class NativeFunChecker : DeclarationChecker {
|
||||
diagnosticHolder.report(ErrorsJvm.EXTERNAL_DECLARATION_CANNOT_HAVE_BODY.on(declaration))
|
||||
}
|
||||
|
||||
if (descriptor.hasInlineAnnotation()) {
|
||||
if (InlineUtil.isInline(descriptor)) {
|
||||
diagnosticHolder.report(ErrorsJvm.EXTERNAL_DECLARATION_CANNOT_BE_INLINED.on(declaration))
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -28,9 +28,9 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.annotations.hasInlineAnnotation
|
||||
import org.jetbrains.kotlin.resolve.annotations.hasIntrinsicAnnotation
|
||||
import org.jetbrains.kotlin.resolve.annotations.hasPlatformStaticAnnotation
|
||||
import org.jetbrains.kotlin.resolve.inline.InlineUtil
|
||||
import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmOverloadsAnnotation
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
|
||||
@@ -41,7 +41,7 @@ public class LocalFunInlineChecker : DeclarationChecker {
|
||||
descriptor: DeclarationDescriptor,
|
||||
diagnosticHolder: DiagnosticSink,
|
||||
bindingContext: BindingContext) {
|
||||
if (descriptor.hasInlineAnnotation() &&
|
||||
if (InlineUtil.isInline(descriptor) &&
|
||||
declaration is JetNamedFunction &&
|
||||
descriptor is FunctionDescriptor &&
|
||||
descriptor.getVisibility() == Visibilities.LOCAL) {
|
||||
@@ -217,9 +217,10 @@ public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
||||
) {
|
||||
if (descriptor.hasIntrinsicAnnotation()) return
|
||||
|
||||
if (descriptor is CallableDescriptor && !descriptor.hasInlineAnnotation()) {
|
||||
if (descriptor is CallableDescriptor && !InlineUtil.isInline(descriptor)) {
|
||||
checkTypeParameterDescriptorsAreNotReified(descriptor.getTypeParameters(), diagnosticHolder)
|
||||
}
|
||||
|
||||
if (descriptor is ClassDescriptor) {
|
||||
checkTypeParameterDescriptorsAreNotReified(descriptor.getTypeConstructor().getParameters(), diagnosticHolder)
|
||||
}
|
||||
|
||||
+2
@@ -229,6 +229,8 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
||||
altName != null ? altName : originalParameterDescriptor.getName(),
|
||||
alternativeType,
|
||||
originalParameterDescriptor.declaresDefaultValue(),
|
||||
originalParameterDescriptor.isCrossinline(),
|
||||
originalParameterDescriptor.isNoinline(),
|
||||
alternativeVarargElementType,
|
||||
SourceElement.NO_SOURCE
|
||||
));
|
||||
|
||||
+2
@@ -266,6 +266,8 @@ public class SignaturesPropagationData {
|
||||
stableName != null ? stableName : originalParam.getName(),
|
||||
altType,
|
||||
originalParam.declaresDefaultValue(),
|
||||
originalParam.isCrossinline(),
|
||||
originalParam.isNoinline(),
|
||||
varargCheckResult.isVararg ? DescriptorUtilsKt.getBuiltIns(originalParam).getArrayElementType(altType) : null,
|
||||
SourceElement.NO_SOURCE
|
||||
));
|
||||
|
||||
+2
@@ -281,6 +281,7 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager) : JetScopeImp
|
||||
visibility,
|
||||
false,
|
||||
false,
|
||||
getMethod.isExternal,
|
||||
CallableMemberDescriptor.Kind.SYNTHESIZED,
|
||||
null,
|
||||
SourceElement.NO_SOURCE)
|
||||
@@ -293,6 +294,7 @@ class JavaSyntheticPropertiesScope(storageManager: StorageManager) : JetScopeImp
|
||||
syntheticExtensionVisibility(setMethod),
|
||||
false,
|
||||
false,
|
||||
setMethod.isExternal,
|
||||
CallableMemberDescriptor.Kind.SYNTHESIZED,
|
||||
null,
|
||||
SourceElement.NO_SOURCE)
|
||||
|
||||
+6
-4
@@ -30,9 +30,7 @@ import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
import java.util.LinkedHashSet
|
||||
import java.util.*
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
interface SamAdapterExtensionFunctionDescriptor : FunctionDescriptor {
|
||||
@@ -151,6 +149,9 @@ class SamAdapterFunctionsScope(storageManager: StorageManager) : JetScope by Jet
|
||||
newVisibility: Visibility,
|
||||
newIsOperator: Boolean,
|
||||
newIsInfix: Boolean,
|
||||
newIsExternal: Boolean,
|
||||
newIsInline: Boolean,
|
||||
newIsTailrec: Boolean,
|
||||
original: FunctionDescriptor?,
|
||||
copyOverrides: Boolean,
|
||||
kind: CallableMemberDescriptor.Kind,
|
||||
@@ -159,7 +160,8 @@ class SamAdapterFunctionsScope(storageManager: StorageManager) : JetScope by Jet
|
||||
newReturnType: JetType
|
||||
): FunctionDescriptor? {
|
||||
val descriptor = super<SimpleFunctionDescriptorImpl>.doSubstitute(
|
||||
originalSubstitutor, newOwner, newModality, newVisibility, newIsOperator, newIsInfix, original,
|
||||
originalSubstitutor, newOwner, newModality, newVisibility,
|
||||
newIsOperator, newIsInfix, newIsExternal, newIsInline, newIsTailrec, original,
|
||||
copyOverrides, kind, newValueParameterDescriptors, newExtensionReceiverParameterType, newReturnType)
|
||||
as MyFunctionDescriptor? ?: return null
|
||||
|
||||
|
||||
@@ -795,7 +795,7 @@ public class JetFlowInformationProvider {
|
||||
public void markTailCalls() {
|
||||
final DeclarationDescriptor subroutineDescriptor = trace.get(BindingContext.DECLARATION_TO_DESCRIPTOR, subroutine);
|
||||
if (!(subroutineDescriptor instanceof FunctionDescriptor)) return;
|
||||
if (!KotlinBuiltIns.isTailRecursive(subroutineDescriptor)) return;
|
||||
if (!((FunctionDescriptor) subroutineDescriptor).isTailrec()) return;
|
||||
|
||||
// finally blocks are copied which leads to multiple diagnostics reported on one instruction
|
||||
class KindAndCall {
|
||||
|
||||
@@ -216,11 +216,6 @@ public interface JetTokens {
|
||||
CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD
|
||||
};
|
||||
|
||||
// Please synchronize this array with org.jetbrains.kotlin.descriptors.annotations.ANNOTATION_MODIFIERS_FQ_NAMES
|
||||
JetModifierKeywordToken[] ANNOTATION_MODIFIERS_KEYWORDS_ARRAY = new JetModifierKeywordToken[] {
|
||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD
|
||||
};
|
||||
|
||||
TokenSet MODIFIER_KEYWORDS = TokenSet.create(MODIFIER_KEYWORDS_ARRAY);
|
||||
|
||||
TokenSet VISIBILITY_MODIFIERS = TokenSet.create(PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD);
|
||||
|
||||
@@ -26,7 +26,6 @@ import com.intellij.psi.impl.source.codeStyle.CodeEditUtil
|
||||
import com.intellij.psi.stubs.IStubElementType
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.JetNodeTypes
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
|
||||
@@ -108,17 +107,7 @@ abstract public class JetClassOrObject :
|
||||
|
||||
public fun getSecondaryConstructors(): List<JetSecondaryConstructor> = getBody()?.getSecondaryConstructors().orEmpty()
|
||||
|
||||
public fun isAnnotation(): Boolean =
|
||||
getAnnotation(KotlinBuiltIns.FQ_NAMES.annotation.shortName().asString()) != null || hasModifier(JetTokens.ANNOTATION_KEYWORD)
|
||||
|
||||
private fun getAnnotation(name: String): JetAnnotationEntry? {
|
||||
return getAnnotationEntries().firstOrNull() { entry ->
|
||||
val typeReference = entry.getTypeReference()
|
||||
val userType = typeReference?.getStubOrPsiChild(JetStubElementTypes.USER_TYPE)
|
||||
|
||||
name == userType?.getReferencedName()
|
||||
}
|
||||
}
|
||||
public fun isAnnotation(): Boolean = hasModifier(JetTokens.ANNOTATION_KEYWORD)
|
||||
|
||||
public override fun delete() {
|
||||
CheckUtil.checkWritable(this);
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.psi.stubs.KotlinFileStub;
|
||||
import java.io.IOException;
|
||||
|
||||
public class JetFileElementType extends IStubFileElementType<KotlinFileStub> {
|
||||
public static final int STUB_VERSION = 61;
|
||||
public static final int STUB_VERSION = 62;
|
||||
|
||||
private static final String NAME = "kotlin.FILE";
|
||||
|
||||
|
||||
@@ -18,14 +18,10 @@ package org.jetbrains.kotlin.resolve;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.*;
|
||||
import org.jetbrains.kotlin.diagnostics.Errors;
|
||||
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken;
|
||||
import org.jetbrains.kotlin.lexer.JetTokens;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.annotations.AnnotationUtilKt;
|
||||
import org.jetbrains.kotlin.resolve.calls.CallResolver;
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument;
|
||||
import org.jetbrains.kotlin.resolve.calls.results.OverloadResolutionResults;
|
||||
@@ -55,19 +51,14 @@ public class AnnotationResolver {
|
||||
@NotNull private TypeResolver typeResolver;
|
||||
@NotNull private final ConstantExpressionEvaluator constantExpressionEvaluator;
|
||||
|
||||
@NotNull private final List<AnnotationDescriptor> modifiersAnnotations;
|
||||
|
||||
public AnnotationResolver(
|
||||
@NotNull CallResolver callResolver,
|
||||
@NotNull ConstantExpressionEvaluator constantExpressionEvaluator,
|
||||
@NotNull StorageManager storageManager,
|
||||
@NotNull KotlinBuiltIns kotlinBuiltIns
|
||||
@NotNull StorageManager storageManager
|
||||
) {
|
||||
this.callResolver = callResolver;
|
||||
this.constantExpressionEvaluator = constantExpressionEvaluator;
|
||||
this.storageManager = storageManager;
|
||||
|
||||
modifiersAnnotations = AnnotationUtilKt.buildMigrationAnnotationDescriptors(kotlinBuiltIns);
|
||||
}
|
||||
|
||||
|
||||
@@ -123,31 +114,7 @@ public class AnnotationResolver {
|
||||
return Annotations.Companion.getEMPTY();
|
||||
}
|
||||
|
||||
List<JetAnnotationEntry> annotationEntryElements = modifierList.getAnnotationEntries();
|
||||
|
||||
return resolveAndAppendAnnotationsFromModifiers(
|
||||
resolveAnnotationEntries(scope, annotationEntryElements, trace, shouldResolveArguments),
|
||||
modifierList
|
||||
);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Annotations resolveAndAppendAnnotationsFromModifiers(
|
||||
@NotNull Annotations annotations,
|
||||
@NotNull JetModifierList modifierList
|
||||
) {
|
||||
List<AnnotationDescriptor> annotationFromModifiers = new ArrayList<AnnotationDescriptor>();
|
||||
|
||||
for (int i = 0; i < JetTokens.ANNOTATION_MODIFIERS_KEYWORDS_ARRAY.length; i++) {
|
||||
JetModifierKeywordToken modifier = JetTokens.ANNOTATION_MODIFIERS_KEYWORDS_ARRAY[i];
|
||||
if (modifierList.hasModifier(modifier)) {
|
||||
annotationFromModifiers.add(modifiersAnnotations.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
if (annotationFromModifiers.isEmpty()) return annotations;
|
||||
|
||||
return new CompositeAnnotations(annotations, new AnnotationsImpl(annotationFromModifiers));
|
||||
return resolveAnnotationEntries(scope, modifierList.getAnnotationEntries(), trace, shouldResolveArguments);
|
||||
}
|
||||
|
||||
private Annotations resolveAnnotationEntries(
|
||||
|
||||
@@ -16,21 +16,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.annotations
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.types.JetTypeImpl
|
||||
|
||||
public fun DeclarationDescriptor.hasInlineAnnotation(): Boolean {
|
||||
return getAnnotations().findAnnotation(FqName("kotlin.inline")) != null
|
||||
}
|
||||
|
||||
public fun DeclarationDescriptor.hasPlatformStaticAnnotation(): Boolean {
|
||||
return getAnnotations().findAnnotation(FqName("kotlin.platform.platformStatic")) != null ||
|
||||
@@ -67,21 +60,4 @@ public fun AnnotationDescriptor.argumentValue(parameterName: String): Any? {
|
||||
return getAllValueArguments().entrySet()
|
||||
.singleOrNull { it.key.getName().asString() == parameterName }
|
||||
?.value?.value
|
||||
}
|
||||
|
||||
public fun KotlinBuiltIns.buildMigrationAnnotationDescriptors(): List<AnnotationDescriptor> =
|
||||
JetTokens.ANNOTATION_MODIFIERS_KEYWORDS_ARRAY.map {
|
||||
modifierKeyword ->
|
||||
|
||||
val name = Name.identifier(modifierKeyword.value)
|
||||
val type = JetTypeImpl.create(
|
||||
Annotations.EMPTY,
|
||||
getBuiltInClassByNameNullable(name) ?: getAnnotationClassByName(name),
|
||||
/* nullable = */false, /* arguments = */emptyList()
|
||||
)
|
||||
|
||||
AnnotationDescriptorImpl(
|
||||
type,
|
||||
emptyMap(), SourceElement.NO_SOURCE
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -16,10 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.diagnostics.*
|
||||
import org.jetbrains.kotlin.builtins.*
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||
|
||||
|
||||
public class DataClassAnnotationChecker : DeclarationChecker {
|
||||
@@ -32,7 +34,7 @@ public class DataClassAnnotationChecker : DeclarationChecker {
|
||||
if (descriptor !is ClassDescriptor) return
|
||||
if (declaration !is JetClassOrObject) return
|
||||
|
||||
if (KotlinBuiltIns.isData(descriptor)) {
|
||||
if (descriptor.isData) {
|
||||
if (descriptor.unsubstitutedPrimaryConstructor == null && descriptor.constructors.isNotEmpty()) {
|
||||
declaration.nameIdentifier?.let { diagnosticHolder.report(Errors.PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS.on(it)) }
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1;
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory0;
|
||||
import org.jetbrains.kotlin.diagnostics.Errors;
|
||||
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken;
|
||||
@@ -714,6 +713,8 @@ public class DeclarationsChecker {
|
||||
|
||||
DeclarationDescriptor containingDescriptor = functionDescriptor.getContainingDeclaration();
|
||||
boolean hasAbstractModifier = function.hasModifier(JetTokens.ABSTRACT_KEYWORD);
|
||||
boolean hasExternalModifier = function.hasModifier(JetTokens.EXTERNAL_KEYWORD);
|
||||
|
||||
if (containingDescriptor instanceof ClassDescriptor) {
|
||||
ClassDescriptor classDescriptor = (ClassDescriptor) containingDescriptor;
|
||||
boolean inTrait = classDescriptor.getKind() == ClassKind.INTERFACE;
|
||||
@@ -728,19 +729,19 @@ public class DeclarationsChecker {
|
||||
trace.report(ABSTRACT_FUNCTION_WITH_BODY.on(function, functionDescriptor));
|
||||
}
|
||||
if (!hasBody && inTrait) {
|
||||
if (function.hasModifier(JetTokens.FINAL_KEYWORD)) {
|
||||
if (function.hasModifier(JetTokens.FINAL_KEYWORD) && !hasExternalModifier) {
|
||||
trace.report(FINAL_FUNCTION_WITH_NO_BODY.on(function, functionDescriptor));
|
||||
}
|
||||
if (function.hasModifier(JetTokens.PRIVATE_KEYWORD)) {
|
||||
trace.report(PRIVATE_FUNCTION_WITH_NO_BODY.on(function, functionDescriptor));
|
||||
}
|
||||
}
|
||||
if (!hasBody && !hasAbstractModifier && !inTrait) {
|
||||
if (!hasBody && !hasAbstractModifier && !hasExternalModifier && !inTrait) {
|
||||
trace.report(NON_ABSTRACT_FUNCTION_WITH_NO_BODY.on(function, functionDescriptor));
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!function.hasBody() && !hasAbstractModifier) {
|
||||
if (!function.hasBody() && !hasAbstractModifier && !hasExternalModifier) {
|
||||
trace.report(NON_MEMBER_FUNCTION_NO_BODY.on(function, functionDescriptor));
|
||||
}
|
||||
if (TypeUtilsKt.isNothing(functionDescriptor.getReturnType()) && !function.hasDeclaredReturnType()) {
|
||||
|
||||
@@ -61,8 +61,7 @@ import java.util.*;
|
||||
|
||||
import static org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.*;
|
||||
import static org.jetbrains.kotlin.diagnostics.Errors.*;
|
||||
import static org.jetbrains.kotlin.lexer.JetTokens.OVERRIDE_KEYWORD;
|
||||
import static org.jetbrains.kotlin.lexer.JetTokens.VARARG_KEYWORD;
|
||||
import static org.jetbrains.kotlin.lexer.JetTokens.*;
|
||||
import static org.jetbrains.kotlin.resolve.BindingContext.*;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.*;
|
||||
import static org.jetbrains.kotlin.resolve.ModifiersChecker.resolveModalityFromModifiers;
|
||||
@@ -278,6 +277,8 @@ public class DescriptorResolver {
|
||||
new ValueParameterDescriptorImpl(functionDescriptor, null, parameter.getIndex(), parameter.getAnnotations(),
|
||||
parameter.getName(), parameter.getType(),
|
||||
declaresDefaultValue,
|
||||
parameter.isCrossinline(),
|
||||
parameter.isNoinline(),
|
||||
parameter.getVarargElementType(), parameter.getSource());
|
||||
parameterDescriptors.add(parameterDescriptor);
|
||||
if (declaresDefaultValue) {
|
||||
@@ -366,6 +367,8 @@ public class DescriptorResolver {
|
||||
JetPsiUtil.safeName(valueParameter.getName()),
|
||||
variableType,
|
||||
valueParameter.hasDefaultValue(),
|
||||
valueParameter.hasModifier(CROSSINLINE_KEYWORD),
|
||||
valueParameter.hasModifier(NOINLINE_KEYWORD),
|
||||
varargElementType,
|
||||
KotlinSourceElementKt.toSourceElement(valueParameter)
|
||||
);
|
||||
@@ -1002,7 +1005,7 @@ public class DescriptorResolver {
|
||||
setterDescriptor = new PropertySetterDescriptorImpl(propertyDescriptor, annotations,
|
||||
resolveModalityFromModifiers(setter, propertyDescriptor.getModality()),
|
||||
resolveVisibilityFromModifiers(setter, propertyDescriptor.getVisibility()),
|
||||
setter.hasBody(), false,
|
||||
setter.hasBody(), false, setter.hasModifier(EXTERNAL_KEYWORD),
|
||||
CallableMemberDescriptor.Kind.DECLARATION, null, KotlinSourceElementKt
|
||||
.toSourceElement(setter));
|
||||
if (parameter != null) {
|
||||
@@ -1042,7 +1045,8 @@ public class DescriptorResolver {
|
||||
}
|
||||
else if (property.isVar()) {
|
||||
Annotations setterAnnotations = annotationSplitter.getAnnotationsForTarget(PROPERTY_SETTER);
|
||||
setterDescriptor = DescriptorFactory.createSetter(propertyDescriptor, setterAnnotations, !property.hasDelegate());
|
||||
setterDescriptor = DescriptorFactory.createSetter(propertyDescriptor, setterAnnotations, !property.hasDelegate(),
|
||||
/* isExternal = */ false);
|
||||
}
|
||||
|
||||
if (!property.isVar()) {
|
||||
@@ -1082,7 +1086,7 @@ public class DescriptorResolver {
|
||||
getterDescriptor = new PropertyGetterDescriptorImpl(propertyDescriptor, getterAnnotations,
|
||||
resolveModalityFromModifiers(getter, propertyDescriptor.getModality()),
|
||||
resolveVisibilityFromModifiers(getter, propertyDescriptor.getVisibility()),
|
||||
getter.hasBody(), false,
|
||||
getter.hasBody(), false, getter.hasModifier(EXTERNAL_KEYWORD),
|
||||
CallableMemberDescriptor.Kind.DECLARATION, null, KotlinSourceElementKt
|
||||
.toSourceElement(getter));
|
||||
getterDescriptor.initialize(returnType);
|
||||
@@ -1090,7 +1094,8 @@ public class DescriptorResolver {
|
||||
}
|
||||
else {
|
||||
Annotations getterAnnotations = annotationSplitter.getAnnotationsForTarget(PROPERTY_GETTER);
|
||||
getterDescriptor = DescriptorFactory.createGetter(propertyDescriptor, getterAnnotations, !property.hasDelegate());
|
||||
getterDescriptor = DescriptorFactory.createGetter(propertyDescriptor, getterAnnotations, !property.hasDelegate(),
|
||||
/* isExternal = */ false);
|
||||
getterDescriptor.initialize(propertyDescriptor.getType());
|
||||
}
|
||||
return getterDescriptor;
|
||||
|
||||
@@ -29,7 +29,9 @@ import org.jetbrains.kotlin.diagnostics.Errors.*
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorResolver.*
|
||||
import org.jetbrains.kotlin.resolve.DescriptorResolver.getDefaultModality
|
||||
import org.jetbrains.kotlin.resolve.DescriptorResolver.getDefaultVisibility
|
||||
import org.jetbrains.kotlin.resolve.DescriptorResolver.transformAnonymousTypeIfNeeded
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.getDispatchReceiverParameterIfNeeded
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.isFunctionExpression
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.isFunctionLiteral
|
||||
@@ -178,6 +180,9 @@ class FunctionDescriptorResolver(
|
||||
)
|
||||
functionDescriptor.isOperator = function.hasModifier(JetTokens.OPERATOR_KEYWORD)
|
||||
functionDescriptor.isInfix = function.hasModifier(JetTokens.INFIX_KEYWORD)
|
||||
functionDescriptor.isExternal = function.hasModifier(JetTokens.EXTERNAL_KEYWORD)
|
||||
functionDescriptor.isInline = function.hasModifier(JetTokens.INLINE_KEYWORD)
|
||||
functionDescriptor.isTailrec = function.hasModifier(JetTokens.TAILREC_KEYWORD)
|
||||
receiverType?.let { ForceResolveUtil.forceResolveAllContents(it.getAnnotations()) }
|
||||
for (valueParameterDescriptor in valueParameterDescriptors) {
|
||||
ForceResolveUtil.forceResolveAllContents(valueParameterDescriptor.getType().getAnnotations())
|
||||
@@ -198,6 +203,7 @@ class FunctionDescriptorResolver(
|
||||
val valueParameterDescriptor = expectedValueParameters.first()
|
||||
val it = ValueParameterDescriptorImpl(functionDescriptor, null, 0, Annotations.EMPTY, Name.identifier("it"),
|
||||
valueParameterDescriptor.getType(), valueParameterDescriptor.declaresDefaultValue(),
|
||||
valueParameterDescriptor.isCrossinline, valueParameterDescriptor.isNoinline,
|
||||
valueParameterDescriptor.getVarargElementType(), SourceElement.NO_SOURCE)
|
||||
trace.record(BindingContext.AUTO_CREATED_IT, it)
|
||||
return listOf(it)
|
||||
|
||||
@@ -141,6 +141,8 @@ public class FunctionDescriptorUtil {
|
||||
parameter.getName(),
|
||||
returnType,
|
||||
parameter.declaresDefaultValue(),
|
||||
parameter.isCrossinline(),
|
||||
parameter.isNoinline(),
|
||||
parameter.getVarargElementType(),
|
||||
SourceElement.NO_SOURCE
|
||||
)
|
||||
@@ -158,6 +160,9 @@ public class FunctionDescriptorUtil {
|
||||
function.getVisibility());
|
||||
descriptor.setOperator(function.isOperator());
|
||||
descriptor.setInfix(function.isInfix());
|
||||
descriptor.setExternal(function.isExternal());
|
||||
descriptor.setInline(function.isInline());
|
||||
descriptor.setTailrec(function.isTailrec());
|
||||
return descriptor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ public object ModifierCheckerCore {
|
||||
COMPANION_KEYWORD to EnumSet.of(OBJECT),
|
||||
LATEINIT_KEYWORD to EnumSet.of(MEMBER_PROPERTY),
|
||||
DATA_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS),
|
||||
INLINE_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, PROPERTY),
|
||||
INLINE_KEYWORD to EnumSet.of(FUNCTION),
|
||||
NOINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
|
||||
TAILREC_KEYWORD to EnumSet.of(FUNCTION),
|
||||
EXTERNAL_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER),
|
||||
|
||||
@@ -31,9 +31,7 @@ import kotlin.jvm.functions.Function1;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.ReadOnly;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
|
||||
import org.jetbrains.kotlin.lexer.JetTokens;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
@@ -733,7 +731,7 @@ public class OverrideResolver {
|
||||
}
|
||||
|
||||
private void checkOverrideForComponentFunction(@NotNull final CallableMemberDescriptor componentFunction) {
|
||||
final PsiElement dataAnnotation = findDataAnnotationForDataClass(componentFunction.getContainingDeclaration());
|
||||
final PsiElement dataModifier = findDataModifierForDataClass(componentFunction.getContainingDeclaration());
|
||||
|
||||
checkOverridesForMemberMarkedOverride(componentFunction, false, new CheckOverrideReportStrategy() {
|
||||
private boolean overrideConflict = false;
|
||||
@@ -742,7 +740,7 @@ public class OverrideResolver {
|
||||
public void overridingFinalMember(@NotNull CallableMemberDescriptor overridden) {
|
||||
if (!overrideConflict) {
|
||||
overrideConflict = true;
|
||||
trace.report(DATA_CLASS_OVERRIDE_CONFLICT.on(dataAnnotation, componentFunction, overridden.getContainingDeclaration()));
|
||||
trace.report(DATA_CLASS_OVERRIDE_CONFLICT.on(dataModifier, componentFunction, overridden.getContainingDeclaration()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -750,7 +748,7 @@ public class OverrideResolver {
|
||||
public void returnTypeMismatchOnOverride(@NotNull CallableMemberDescriptor overridden) {
|
||||
if (!overrideConflict) {
|
||||
overrideConflict = true;
|
||||
trace.report(DATA_CLASS_OVERRIDE_CONFLICT.on(dataAnnotation, componentFunction, overridden.getContainingDeclaration()));
|
||||
trace.report(DATA_CLASS_OVERRIDE_CONFLICT.on(dataModifier, componentFunction, overridden.getContainingDeclaration()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -777,16 +775,7 @@ public class OverrideResolver {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static PsiElement findDataAnnotationForDataClass(@NotNull DeclarationDescriptor dataClass) {
|
||||
AnnotationDescriptor annotation = dataClass.getAnnotations().findAnnotation(KotlinBuiltIns.FQ_NAMES.data);
|
||||
if (annotation != null) {
|
||||
JetAnnotationEntry entry = DescriptorToSourceUtils.getSourceFromAnnotation(annotation);
|
||||
if (entry != null) {
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static PsiElement findDataModifierForDataClass(@NotNull DeclarationDescriptor dataClass) {
|
||||
JetClass classDeclaration = (JetClass) DescriptorToSourceUtils.getSourceFromDescriptor(dataClass);
|
||||
if (classDeclaration != null && classDeclaration.getModifierList() != null) {
|
||||
PsiElement modifier = classDeclaration.getModifierList().getModifier(JetTokens.DATA_KEYWORD);
|
||||
@@ -795,7 +784,7 @@ public class OverrideResolver {
|
||||
}
|
||||
}
|
||||
|
||||
throw new IllegalStateException("No data annotation is found for data class " + dataClass);
|
||||
throw new IllegalStateException("No data modifier is found for data class " + dataClass);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
||||
import org.jetbrains.kotlin.resolve.calls.tasks.collectors.CallableDescriptorCollector
|
||||
import org.jetbrains.kotlin.resolve.calls.tasks.collectors.CallableDescriptorCollectors
|
||||
@@ -166,7 +165,9 @@ class DynamicCallableDescriptors(private val builtIns: KotlinBuiltIns) {
|
||||
Annotations.EMPTY,
|
||||
arg.getArgumentName()?.asName ?: Name.identifier("p$index"),
|
||||
outType,
|
||||
false,
|
||||
/* declaresDefaultValue = */ false,
|
||||
/* isCrossinline = */ false,
|
||||
/* isNoinline = */ false,
|
||||
varargElementType,
|
||||
SourceElement.NO_SOURCE
|
||||
))
|
||||
|
||||
+5
-2
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
import java.util.ArrayList
|
||||
import java.util.*
|
||||
|
||||
fun createSynthesizedInvokes(functions: Collection<FunctionDescriptor>): Collection<FunctionDescriptor> {
|
||||
val result = ArrayList<FunctionDescriptor>(1)
|
||||
@@ -75,7 +75,7 @@ private fun createSynthesizedFunctionWithFirstParameterAsReceiver(descriptor: Fu
|
||||
original.getValueParameters().drop(1).map { p ->
|
||||
ValueParameterDescriptorImpl(
|
||||
result, null, p.getIndex() - 1, p.getAnnotations(), Name.identifier("p${p.getIndex() + 1}"), p.getType(),
|
||||
p.declaresDefaultValue(), p.getVarargElementType(), p.getSource()
|
||||
p.declaresDefaultValue(), p.isCrossinline, p.isNoinline, p.getVarargElementType(), p.getSource()
|
||||
)
|
||||
},
|
||||
original.getReturnType(),
|
||||
@@ -84,6 +84,9 @@ private fun createSynthesizedFunctionWithFirstParameterAsReceiver(descriptor: Fu
|
||||
)
|
||||
result.isOperator = original.isOperator
|
||||
result.isInfix = original.isInfix
|
||||
result.isExternal = original.isExternal
|
||||
result.isInline = original.isInline
|
||||
result.isTailrec = original.isTailrec
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
@@ -31,14 +30,11 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilKt;
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMapping;
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch;
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
|
||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue;
|
||||
import org.jetbrains.kotlin.resolve.constants.EnumValue;
|
||||
|
||||
import static kotlin.CollectionsKt.firstOrNull;
|
||||
|
||||
public class InlineUtil {
|
||||
public static boolean isInlineLambdaParameter(@NotNull ParameterDescriptor valueParameterOrReceiver) {
|
||||
return !KotlinBuiltIns.isNoinline(valueParameterOrReceiver) &&
|
||||
return !(valueParameterOrReceiver instanceof ValueParameterDescriptor
|
||||
&& ((ValueParameterDescriptor) valueParameterOrReceiver).isNoinline()) &&
|
||||
KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(valueParameterOrReceiver.getOriginal().getType());
|
||||
}
|
||||
|
||||
@@ -48,20 +44,12 @@ public class InlineUtil {
|
||||
|
||||
@NotNull
|
||||
public static InlineStrategy getInlineStrategy(@NotNull DeclarationDescriptor descriptor) {
|
||||
AnnotationDescriptor annotation = descriptor.getAnnotations().findAnnotation(KotlinBuiltIns.FQ_NAMES.inline);
|
||||
if (annotation == null) {
|
||||
return InlineStrategy.NOT_INLINE;
|
||||
}
|
||||
ConstantValue<?> argument = firstOrNull(annotation.getAllValueArguments().values());
|
||||
if (argument == null) {
|
||||
if (descriptor instanceof FunctionDescriptor &&
|
||||
((FunctionDescriptor) descriptor).isInline()) {
|
||||
return InlineStrategy.AS_FUNCTION;
|
||||
}
|
||||
assert argument instanceof EnumValue : "Inline annotation parameter should be enum entry but was: " + argument;
|
||||
return InlineStrategy.valueOf(((EnumValue) argument).getValue().getName().asString());
|
||||
}
|
||||
|
||||
public static boolean hasOnlyLocalReturn(@NotNull ValueParameterDescriptor descriptor) {
|
||||
return descriptor.getAnnotations().findAnnotation(KotlinBuiltIns.FQ_NAMES.crossinline) != null;
|
||||
return InlineStrategy.NOT_INLINE;
|
||||
}
|
||||
|
||||
public static boolean checkNonLocalReturnUsage(
|
||||
@@ -141,7 +129,7 @@ public class InlineUtil {
|
||||
|
||||
public static boolean allowsNonLocalReturns(@NotNull CallableDescriptor lambda) {
|
||||
if (lambda instanceof ValueParameterDescriptor) {
|
||||
if (hasOnlyLocalReturn((ValueParameterDescriptor) lambda)) {
|
||||
if (((ValueParameterDescriptor) lambda).isCrossinline()) {
|
||||
//annotated
|
||||
return false;
|
||||
}
|
||||
|
||||
+16
-5
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorBase;
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation;
|
||||
import org.jetbrains.kotlin.lexer.JetTokens;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.*;
|
||||
@@ -83,6 +84,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
private final Visibility visibility;
|
||||
private final NotNullLazyValue<ClassKind> kind;
|
||||
private final NotNullLazyValue<Boolean> isInner;
|
||||
private final NotNullLazyValue<Boolean> isData;
|
||||
|
||||
private final Annotations annotations;
|
||||
private final Annotations danglingAnnotations;
|
||||
@@ -153,15 +155,22 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
}
|
||||
});
|
||||
|
||||
this.isData = storageManager.createLazyValue(new Function0<Boolean>() {
|
||||
@Override
|
||||
public Boolean invoke() {
|
||||
return modifierList != null && modifierList.hasModifier(JetTokens.DATA_KEYWORD);
|
||||
}
|
||||
});
|
||||
|
||||
this.kind = storageManager.createLazyValue(new Function0<ClassKind>() {
|
||||
@Override
|
||||
public ClassKind invoke() {
|
||||
return (syntaxKind == ClassKind.CLASS && KotlinBuiltIns.isAnnotation(descriptor)) ? ClassKind.ANNOTATION_CLASS : syntaxKind;
|
||||
return (syntaxKind == ClassKind.CLASS && modifierList != null && modifierList.hasModifier(JetTokens.ANNOTATION_KEYWORD)) ? ClassKind.ANNOTATION_CLASS : syntaxKind;
|
||||
}
|
||||
});
|
||||
|
||||
if (modifierList != null) {
|
||||
LazyAnnotations classAnnotations = new LazyAnnotations(
|
||||
this.annotations = new LazyAnnotations(
|
||||
new LazyAnnotationsContext(
|
||||
c.getAnnotationResolver(),
|
||||
storageManager,
|
||||
@@ -175,9 +184,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
},
|
||||
modifierList.getAnnotationEntries()
|
||||
);
|
||||
this.annotations = c.getAnnotationResolver().resolveAndAppendAnnotationsFromModifiers(
|
||||
classAnnotations, modifierList
|
||||
);
|
||||
}
|
||||
else {
|
||||
this.annotations = Annotations.Companion.getEMPTY();
|
||||
@@ -405,6 +411,11 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
return isInner.invoke();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isData() {
|
||||
return isData.invoke();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCompanionObject() {
|
||||
return isCompanionObject;
|
||||
|
||||
+2
-3
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.kotlin.resolve.lazy.descriptors
|
||||
|
||||
import com.google.common.collect.Lists
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE
|
||||
@@ -136,7 +135,7 @@ public open class LazyClassMemberScope(
|
||||
}
|
||||
|
||||
private fun generateDataClassMethods(result: MutableCollection<FunctionDescriptor>, name: Name, location: LookupLocation) {
|
||||
if (!KotlinBuiltIns.isData(thisDescriptor)) return
|
||||
if (!thisDescriptor.isData) return
|
||||
|
||||
val constructor = getPrimaryConstructor() ?: return
|
||||
|
||||
@@ -243,7 +242,7 @@ public open class LazyClassMemberScope(
|
||||
}
|
||||
|
||||
private fun addDataClassMethods(result: MutableCollection<DeclarationDescriptor>, location: LookupLocation) {
|
||||
if (!KotlinBuiltIns.isData(thisDescriptor)) return
|
||||
if (!thisDescriptor.isData) return
|
||||
|
||||
if (getPrimaryConstructor() == null) return
|
||||
|
||||
|
||||
+6
-2
@@ -32,7 +32,8 @@ import org.jetbrains.kotlin.resolve.ScriptBodyResolver
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.kotlin.resolve.lazy.LazyEntity
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.jetbrains.kotlin.resolve.scopes.*
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScopeImpl
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ScriptReceiver
|
||||
import org.jetbrains.kotlin.resolve.source.toSourceElement
|
||||
import org.jetbrains.kotlin.types.DeferredType
|
||||
@@ -78,7 +79,10 @@ public class LazyScriptDescriptor(
|
||||
scriptDefinition.getScriptParameters().mapIndexed { index, scriptParameter ->
|
||||
ValueParameterDescriptorImpl(
|
||||
result, null, index, Annotations.EMPTY, scriptParameter.getName(), scriptParameter.getType(),
|
||||
false, null, SourceElement.NO_SOURCE
|
||||
/* declaresDefaultValue = */ false,
|
||||
/* isCrossinline = */ false,
|
||||
/* isNoinline = */ false,
|
||||
null, SourceElement.NO_SOURCE
|
||||
)
|
||||
},
|
||||
DeferredType.create(resolveSession.storageManager, resolveSession.trace) {
|
||||
|
||||
+5
-1
@@ -118,7 +118,11 @@ public class ControlStructureTypingUtils {
|
||||
JetType argumentType = isArgumentNullable.get(i) ? nullableType : type;
|
||||
ValueParameterDescriptorImpl valueParameter = new ValueParameterDescriptorImpl(
|
||||
function, null, i, Annotations.Companion.getEMPTY(), Name.identifier(argumentNames.get(i)),
|
||||
argumentType, false, null, SourceElement.NO_SOURCE
|
||||
argumentType,
|
||||
/* declaresDefaultValue = */ false,
|
||||
/* isCrossinline = */ false,
|
||||
/* isNoinline = */ false,
|
||||
null, SourceElement.NO_SOURCE
|
||||
);
|
||||
valueParameters.add(valueParameter);
|
||||
}
|
||||
|
||||
+2
-2
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||
import org.jetbrains.kotlin.diagnostics.Errors.*
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getAnnotationEntries
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
@@ -38,7 +39,6 @@ import org.jetbrains.kotlin.types.TypeUtils
|
||||
import org.jetbrains.kotlin.types.TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE
|
||||
import org.jetbrains.kotlin.types.TypeUtils.NO_EXPECTED_TYPE
|
||||
import org.jetbrains.kotlin.types.TypeUtils.noExpectedType
|
||||
import org.jetbrains.kotlin.types.checker.JetTypeChecker
|
||||
import org.jetbrains.kotlin.types.expressions.CoercionStrategy.COERCION_TO_UNIT
|
||||
import org.jetbrains.kotlin.types.expressions.typeInfoFactory.createTypeInfo
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
@@ -104,7 +104,7 @@ public class FunctionsTypingVisitor(facade: ExpressionTypingInternals) : Express
|
||||
|
||||
components.modifiersChecker.withTrace(context.trace).checkModifiersForLocalDeclaration(function, functionDescriptor)
|
||||
components.identifierChecker.checkDeclaration(function, context.trace)
|
||||
if (!function.hasBody()) {
|
||||
if (!function.hasBody() && !function.hasModifier(JetTokens.EXTERNAL_KEYWORD)) {
|
||||
context.trace.report(NON_MEMBER_FUNCTION_NO_BODY.on(function, functionDescriptor))
|
||||
}
|
||||
|
||||
|
||||
+9
-4
@@ -125,7 +125,8 @@ public class DescriptorSerializer {
|
||||
ProtoBuf.Class.Builder builder = ProtoBuf.Class.newBuilder();
|
||||
|
||||
int flags = Flags.getClassFlags(hasAnnotations(classDescriptor), classDescriptor.getVisibility(), classDescriptor.getModality(),
|
||||
classDescriptor.getKind(), classDescriptor.isInner(), classDescriptor.isCompanionObject());
|
||||
classDescriptor.getKind(), classDescriptor.isInner(), classDescriptor.isCompanionObject(),
|
||||
classDescriptor.isData());
|
||||
if (flags != builder.getFlags()) {
|
||||
builder.setFlags(flags);
|
||||
}
|
||||
@@ -211,6 +212,7 @@ public class DescriptorSerializer {
|
||||
hasAnnotations,
|
||||
descriptor.getVisibility(),
|
||||
descriptor.getModality(),
|
||||
false,
|
||||
false
|
||||
);
|
||||
|
||||
@@ -283,7 +285,8 @@ public class DescriptorSerializer {
|
||||
|
||||
int flags = Flags.getFunctionFlags(
|
||||
hasAnnotations(descriptor), descriptor.getVisibility(), descriptor.getModality(), descriptor.getKind(),
|
||||
descriptor.isOperator(), descriptor.isInfix()
|
||||
descriptor.isOperator(), descriptor.isInfix(), descriptor.isInline(), descriptor.isTailrec(),
|
||||
descriptor.isExternal()
|
||||
);
|
||||
if (flags != builder.getFlags()) {
|
||||
builder.setFlags(flags);
|
||||
@@ -355,7 +358,8 @@ public class DescriptorSerializer {
|
||||
hasAnnotations(accessor),
|
||||
accessor.getVisibility(),
|
||||
accessor.getModality(),
|
||||
!accessor.isDefault()
|
||||
!accessor.isDefault(),
|
||||
accessor.isExternal()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -363,7 +367,8 @@ public class DescriptorSerializer {
|
||||
private ProtoBuf.ValueParameter.Builder valueParameter(@NotNull ValueParameterDescriptor descriptor) {
|
||||
ProtoBuf.ValueParameter.Builder builder = ProtoBuf.ValueParameter.newBuilder();
|
||||
|
||||
int flags = Flags.getValueParameterFlags(hasAnnotations(descriptor), descriptor.declaresDefaultValue());
|
||||
int flags = Flags.getValueParameterFlags(hasAnnotations(descriptor), descriptor.declaresDefaultValue(),
|
||||
descriptor.isCrossinline(), descriptor.isNoinline());
|
||||
if (flags != builder.getFlags()) {
|
||||
builder.setFlags(flags);
|
||||
}
|
||||
|
||||
+6
-30
@@ -289,7 +289,7 @@ public interface Comparable</*0*/ in T> {
|
||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() public final class Deprecated : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||
public final val level: kotlin.DeprecationLevel
|
||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||
@@ -468,7 +468,7 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E> {
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() public final class Extension : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.MustBeDocumented() public final annotation class Extension : kotlin.Annotation {
|
||||
/*primary*/ public constructor Extension()
|
||||
}
|
||||
|
||||
@@ -621,7 +621,7 @@ public interface FloatingPointConstants</*0*/ T> {
|
||||
public interface Function</*0*/ out R> {
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented() @kotlin.Deprecated(message = "Use @Deprecated("...", level = DeprecationLevel.HIDDEN) instead", replaceWith = kotlin.ReplaceWith(expression = "@Deprecated(, level = DeprecationLevel.HIDDEN)", imports = {})) @kotlin.annotation.annotation() public final class HiddenDeclaration : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented() @kotlin.Deprecated(message = "Use @Deprecated("...", level = DeprecationLevel.HIDDEN) instead", replaceWith = kotlin.ReplaceWith(expression = "@Deprecated(, level = DeprecationLevel.HIDDEN)", imports = {})) public final annotation class HiddenDeclaration : kotlin.Annotation {
|
||||
/*primary*/ public constructor HiddenDeclaration()
|
||||
}
|
||||
|
||||
@@ -1104,7 +1104,7 @@ public interface Range</*0*/ T : kotlin.Comparable<T>> {
|
||||
public open fun isEmpty(): kotlin.Boolean
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() public final class ReplaceWith : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented() public final annotation class ReplaceWith : kotlin.Annotation {
|
||||
/*primary*/ public constructor ReplaceWith(/*0*/ expression: kotlin.String, /*1*/ vararg imports: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val expression: kotlin.String
|
||||
public final fun <get-expression>(): kotlin.String
|
||||
@@ -1265,7 +1265,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
||||
}
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.annotation() public final class Suppress : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation {
|
||||
/*primary*/ public constructor Suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val names: kotlin.Array<out kotlin.String>
|
||||
public final fun <get-names>(): kotlin.Array<out kotlin.String>
|
||||
@@ -1284,30 +1284,6 @@ public object Unit {
|
||||
/*primary*/ private constructor Unit()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() public final class UnsafeVariance : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.MustBeDocumented() public final annotation class UnsafeVariance : kotlin.Annotation {
|
||||
/*primary*/ public constructor UnsafeVariance()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) @kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() private final class crossinline : kotlin.Annotation {
|
||||
/*primary*/ public constructor crossinline()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() private final class data : kotlin.Annotation {
|
||||
/*primary*/ public constructor data()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() private final class external : kotlin.Annotation {
|
||||
/*primary*/ public constructor external()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY}) @kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() private final class inline : kotlin.Annotation {
|
||||
/*primary*/ public constructor inline()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) @kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) @kotlin.annotation.MustBeDocumented() @kotlin.annotation.annotation() private final class noinline : kotlin.Annotation {
|
||||
/*primary*/ public constructor noinline()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.annotation() private final class tailrec : kotlin.Annotation {
|
||||
/*primary*/ public constructor tailrec()
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int = ..., /*1*/ e: kotlin.Any = ...): kotlin.Unit
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int = ..., /*1*/ e: kotlin.Any = ...): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun kotlin.Int.foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public tailrec fun kotlin.Int.foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun noTails(): kotlin.Unit
|
||||
public tailrec fun noTails(): kotlin.Unit
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
@kotlin.tailrec() public fun badTails(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun badTails(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public fun box(): kotlin.String
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public infix fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public infix tailrec fun kotlin.Int.test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public infix fun kotlin.Int.foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public infix tailrec fun kotlin.Int.foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ counter: kotlin.Int): kotlin.Int?
|
||||
public tailrec fun test(/*0*/ counter: kotlin.Int): kotlin.Int?
|
||||
|
||||
Vendored
+2
-2
@@ -13,8 +13,8 @@ public final class B {
|
||||
public final inner class C {
|
||||
public constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.tailrec() public final fun h(/*0*/ counter: kotlin.Int): kotlin.Unit
|
||||
@kotlin.tailrec() public final fun h2(/*0*/ x: kotlin.Any): kotlin.Unit
|
||||
public final tailrec fun h(/*0*/ counter: kotlin.Int): kotlin.Unit
|
||||
public final tailrec fun h2(/*0*/ x: kotlin.Any): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun </*0*/ T, /*1*/ A> kotlin.Iterator<T>.foldl(/*0*/ acc: A, /*1*/ foldFunction: (T, A) -> A): A
|
||||
public tailrec fun </*0*/ T, /*1*/ A> kotlin.Iterator<T>.foldl(/*0*/ acc: A, /*1*/ foldFunction: (T, A) -> A): A
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
public fun escapeChar(/*0*/ c: kotlin.Char): kotlin.String?
|
||||
@kotlin.tailrec() public fun kotlin.String.escape(/*0*/ i: kotlin.Int = ..., /*1*/ result: java.lang.StringBuilder = ...): kotlin.String
|
||||
public tailrec fun kotlin.String.escape(/*0*/ i: kotlin.Int = ..., /*1*/ result: java.lang.StringBuilder = ...): kotlin.String
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun kotlin.String.repeat(/*0*/ num: kotlin.Int, /*1*/ acc: java.lang.StringBuilder = ...): kotlin.String
|
||||
public tailrec fun kotlin.String.repeat(/*0*/ num: kotlin.Int, /*1*/ acc: java.lang.StringBuilder = ...): kotlin.String
|
||||
|
||||
Vendored
+1
-1
@@ -2,4 +2,4 @@ package
|
||||
|
||||
public fun bar(/*0*/ a: kotlin.Any): kotlin.Unit
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun foo(): kotlin.Unit
|
||||
public tailrec fun foo(): kotlin.Unit
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun foo(): kotlin.Unit
|
||||
public tailrec fun foo(): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public tailrec fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun sum(/*0*/ x: kotlin.Long, /*1*/ sum: kotlin.Long): kotlin.Long
|
||||
public tailrec fun sum(/*0*/ x: kotlin.Long, /*1*/ sum: kotlin.Long): kotlin.Long
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public tailrec fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public tailrec fun foo(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ go: kotlin.Boolean): kotlin.Unit
|
||||
public tailrec fun test(/*0*/ go: kotlin.Boolean): kotlin.Unit
|
||||
|
||||
+3
-3
@@ -5,9 +5,9 @@ public fun box(): kotlin.String
|
||||
public final class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.tailrec() public final fun f1(/*0*/ c: kotlin.Int): kotlin.Unit
|
||||
@kotlin.tailrec() public final fun f2(/*0*/ c: kotlin.Int): kotlin.Unit
|
||||
@kotlin.tailrec() public final fun f3(/*0*/ a: A): kotlin.Unit
|
||||
public final tailrec fun f1(/*0*/ c: kotlin.Int): kotlin.Unit
|
||||
public final tailrec fun f2(/*0*/ c: kotlin.Int): kotlin.Unit
|
||||
public final tailrec fun f3(/*0*/ a: A): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun test(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
public tailrec fun test(/*0*/ x: kotlin.Int): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun withWhen(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
public tailrec fun withWhen(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun withWhen(/*0*/ counter: kotlin.Int, /*1*/ d: kotlin.Any): kotlin.Int
|
||||
public tailrec fun withWhen(/*0*/ counter: kotlin.Int, /*1*/ d: kotlin.Any): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun withWhen(/*0*/ counter: kotlin.Int, /*1*/ d: kotlin.Any): kotlin.Int
|
||||
public tailrec fun withWhen(/*0*/ counter: kotlin.Int, /*1*/ d: kotlin.Any): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
public fun box(): kotlin.String
|
||||
@kotlin.tailrec() public fun withWhen2(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
public tailrec fun withWhen2(/*0*/ counter: kotlin.Int): kotlin.Int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package
|
||||
|
||||
@kotlin.Suppress(names = {"UNCHECKED_CAST"}) @kotlin.inline() public fun </*0*/ reified T> array(/*0*/ vararg t: T /*kotlin.Array<out T>*/): kotlin.Array<T>
|
||||
@kotlin.Suppress(names = {"UNCHECKED_CAST"}) public inline fun </*0*/ reified T> array(/*0*/ vararg t: T /*kotlin.Array<out T>*/): kotlin.Array<T>
|
||||
public fun box(): kotlin.String
|
||||
public fun main(/*0*/ args: kotlin.Array<kotlin.String>): kotlin.Unit
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.annotation() public final class AAA : kotlin.Annotation {
|
||||
public final annotation class AAA : kotlin.Annotation {
|
||||
public constructor AAA()
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ public object A {
|
||||
public const final val OBJECT: kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
|
||||
public final annotation class Ann : kotlin.Annotation {
|
||||
public constructor Ann(/*0*/ kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
}
|
||||
|
||||
+7
-7
@@ -1,36 +1,36 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.annotation() public final class AByte : kotlin.Annotation {
|
||||
public final annotation class AByte : kotlin.Annotation {
|
||||
public constructor AByte(/*0*/ kotlin.Byte)
|
||||
public final val value: kotlin.Byte
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AChar : kotlin.Annotation {
|
||||
public final annotation class AChar : kotlin.Annotation {
|
||||
public constructor AChar(/*0*/ kotlin.Char)
|
||||
public final val value: kotlin.Char
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class ADouble : kotlin.Annotation {
|
||||
public final annotation class ADouble : kotlin.Annotation {
|
||||
public constructor ADouble(/*0*/ kotlin.Double)
|
||||
public final val value: kotlin.Double
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AFloat : kotlin.Annotation {
|
||||
public final annotation class AFloat : kotlin.Annotation {
|
||||
public constructor AFloat(/*0*/ kotlin.Float)
|
||||
public final val value: kotlin.Float
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AInt : kotlin.Annotation {
|
||||
public final annotation class AInt : kotlin.Annotation {
|
||||
public constructor AInt(/*0*/ kotlin.Int)
|
||||
public final val value: kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class ALong : kotlin.Annotation {
|
||||
public final annotation class ALong : kotlin.Annotation {
|
||||
public constructor ALong(/*0*/ kotlin.Long)
|
||||
public final val value: kotlin.Long
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AString : kotlin.Annotation {
|
||||
public final annotation class AString : kotlin.Annotation {
|
||||
public constructor AString(/*0*/ kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
}
|
||||
|
||||
+7
-7
@@ -1,36 +1,36 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.annotation() public final class AByte : kotlin.Annotation {
|
||||
public final annotation class AByte : kotlin.Annotation {
|
||||
public constructor AByte(/*0*/ kotlin.Byte)
|
||||
public final val value: kotlin.Byte
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AChar : kotlin.Annotation {
|
||||
public final annotation class AChar : kotlin.Annotation {
|
||||
public constructor AChar(/*0*/ kotlin.Char)
|
||||
public final val value: kotlin.Char
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class ADouble : kotlin.Annotation {
|
||||
public final annotation class ADouble : kotlin.Annotation {
|
||||
public constructor ADouble(/*0*/ kotlin.Double)
|
||||
public final val value: kotlin.Double
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AFloat : kotlin.Annotation {
|
||||
public final annotation class AFloat : kotlin.Annotation {
|
||||
public constructor AFloat(/*0*/ kotlin.Float)
|
||||
public final val value: kotlin.Float
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AInt : kotlin.Annotation {
|
||||
public final annotation class AInt : kotlin.Annotation {
|
||||
public constructor AInt(/*0*/ kotlin.Int)
|
||||
public final val value: kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class ALong : kotlin.Annotation {
|
||||
public final annotation class ALong : kotlin.Annotation {
|
||||
public constructor ALong(/*0*/ kotlin.Long)
|
||||
public final val value: kotlin.Long
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class AString : kotlin.Annotation {
|
||||
public final annotation class AString : kotlin.Annotation {
|
||||
public constructor AString(/*0*/ kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public final class KotlinClass {
|
||||
public open class kt3698 {
|
||||
public constructor kt3698()
|
||||
|
||||
public/*package*/ final class Foo : kotlin.Annotation {
|
||||
public/*package*/ final annotation class Foo : kotlin.Annotation {
|
||||
public/*package*/ constructor Foo(/*0*/ kotlin.Int)
|
||||
public final val value: kotlin.Int
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package test
|
||||
|
||||
@test.meta() public/*package*/ final class MyAnn : kotlin.Annotation {
|
||||
@test.meta() public/*package*/ final annotation class MyAnn : kotlin.Annotation {
|
||||
public/*package*/ constructor MyAnn()
|
||||
}
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.ANNOTATION_CLASS}) @kotlin.annotation.annotation() public final class meta : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.ANNOTATION_CLASS}) public final annotation class meta : kotlin.Annotation {
|
||||
public constructor meta()
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@ package test
|
||||
@test.base() public/*package*/ open fun foo(/*0*/ @test.base() kotlin.Int): kotlin.Int
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
||||
public final annotation class base : kotlin.Annotation {
|
||||
public constructor base()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) @kotlin.annotation.annotation() public final class classifier : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) public final annotation class classifier : kotlin.Annotation {
|
||||
public constructor classifier()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CONSTRUCTOR}) @kotlin.annotation.annotation() public final class constructor : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CONSTRUCTOR}) public final annotation class constructor : kotlin.Annotation {
|
||||
public constructor constructor()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {}) @kotlin.annotation.annotation() public final class empty : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {}) public final annotation class empty : kotlin.Annotation {
|
||||
public constructor empty()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FIELD}) @kotlin.annotation.annotation() public final class field : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FIELD}) public final annotation class field : kotlin.Annotation {
|
||||
public constructor field()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION}) @kotlin.annotation.annotation() public final class function : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION}) public final annotation class function : kotlin.Annotation {
|
||||
public constructor function()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.annotation() public final class getter : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY_GETTER}) public final annotation class getter : kotlin.Annotation {
|
||||
public constructor getter()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.LOCAL_VARIABLE}) @kotlin.annotation.annotation() public final class local : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.LOCAL_VARIABLE}) public final annotation class local : kotlin.Annotation {
|
||||
public constructor local()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION}) @kotlin.annotation.annotation() public final class multiple : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION}) public final annotation class multiple : kotlin.Annotation {
|
||||
public constructor multiple()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) @kotlin.annotation.annotation() public final class parameter : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) public final annotation class parameter : kotlin.Annotation {
|
||||
public constructor parameter()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY}) @kotlin.annotation.annotation() public final class property : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY}) public final annotation class property : kotlin.Annotation {
|
||||
public constructor property()
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY_SETTER}) @kotlin.annotation.annotation() public final class setter : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.PROPERTY_SETTER}) public final annotation class setter : kotlin.Annotation {
|
||||
public constructor setter()
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package test
|
||||
|
||||
@kotlin.annotation.annotation() public final class Anno : kotlin.Annotation {
|
||||
public final annotation class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ e: [ERROR : test.E])
|
||||
public final val e: [ERROR : test.E]
|
||||
}
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ public final class B {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.data() public final class Data {
|
||||
public final data class Data {
|
||||
public constructor Data(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int)
|
||||
public final val x: kotlin.Int
|
||||
public final val y: kotlin.Int
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ public val something: kotlin.Any?
|
||||
public fun __(/*0*/ ___: kotlin.Int, /*1*/ y: _<kotlin.Int>?): kotlin.Int
|
||||
public fun doIt(/*0*/ f: (kotlin.Any?) -> kotlin.Any?): kotlin.Any?
|
||||
|
||||
@kotlin.Deprecated(message = "") @kotlin.data() public final class Pair {
|
||||
@kotlin.Deprecated(message = "") public final data class Pair {
|
||||
public constructor Pair(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int)
|
||||
public final val x: kotlin.Int
|
||||
public final val y: kotlin.Int
|
||||
|
||||
@@ -8,7 +8,7 @@ public final class Annotated {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.annotation.annotation() public final class ann : kotlin.Annotation {
|
||||
public final annotation class ann : kotlin.Annotation {
|
||||
public constructor ann()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package
|
||||
|
||||
public fun foo(): kotlin.Unit
|
||||
|
||||
@kotlin.annotation.annotation() public final class My : kotlin.Annotation {
|
||||
public final annotation class My : kotlin.Annotation {
|
||||
public constructor My()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package
|
||||
|
||||
public fun foo(): kotlin.Int
|
||||
|
||||
@kotlin.annotation.annotation() public final class My : kotlin.Annotation {
|
||||
public final annotation class My : kotlin.Annotation {
|
||||
public constructor My()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -2,7 +2,7 @@ package
|
||||
|
||||
public fun foo(): kotlin.Unit
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.annotation() public final class My : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class My : kotlin.Annotation {
|
||||
public constructor My()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -2,7 +2,7 @@ package
|
||||
|
||||
public fun foo(): @My(x = 42) kotlin.Int
|
||||
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.annotation() public final class My : kotlin.Annotation {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class My : kotlin.Annotation {
|
||||
public constructor My(/*0*/ x: kotlin.Int)
|
||||
public final val x: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
|
||||
@@ -2,7 +2,7 @@ package
|
||||
|
||||
public fun foo(/*0*/ arg: kotlin.Int): kotlin.Int
|
||||
|
||||
@kotlin.annotation.annotation() public final class My : kotlin.Annotation {
|
||||
public final annotation class My : kotlin.Annotation {
|
||||
public constructor My()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user