Add platform/impl soft keywords, add isPlatform/isImpl to MemberDescriptor
This commit is contained in:
@@ -110,6 +110,16 @@ public class MutableClassDescriptor extends ClassDescriptorBase implements Class
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public TypeConstructor getTypeConstructor() {
|
public TypeConstructor getTypeConstructor() {
|
||||||
|
|||||||
@@ -189,6 +189,9 @@ public interface KtTokens {
|
|||||||
KtModifierKeywordToken COROUTINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("coroutine");
|
KtModifierKeywordToken COROUTINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("coroutine");
|
||||||
KtModifierKeywordToken SUSPEND_KEYWORD = KtModifierKeywordToken.softKeywordModifier("suspend");
|
KtModifierKeywordToken SUSPEND_KEYWORD = KtModifierKeywordToken.softKeywordModifier("suspend");
|
||||||
|
|
||||||
|
KtModifierKeywordToken PLATFORM_KEYWORD = KtModifierKeywordToken.softKeywordModifier("platform");
|
||||||
|
KtModifierKeywordToken IMPL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("impl");
|
||||||
|
|
||||||
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, INTERFACE_KEYWORD,
|
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, INTERFACE_KEYWORD,
|
||||||
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
|
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
|
||||||
NULL_KEYWORD,
|
NULL_KEYWORD,
|
||||||
@@ -209,7 +212,7 @@ public interface KtTokens {
|
|||||||
LATEINIT_KEYWORD,
|
LATEINIT_KEYWORD,
|
||||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD,
|
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD,
|
||||||
ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD,
|
ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD,
|
||||||
COROUTINE_KEYWORD, SUSPEND_KEYWORD
|
COROUTINE_KEYWORD, SUSPEND_KEYWORD, PLATFORM_KEYWORD, IMPL_KEYWORD
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -223,7 +226,7 @@ public interface KtTokens {
|
|||||||
PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD,
|
PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD,
|
||||||
REIFIED_KEYWORD, COMPANION_KEYWORD, SEALED_KEYWORD, LATEINIT_KEYWORD,
|
REIFIED_KEYWORD, COMPANION_KEYWORD, SEALED_KEYWORD, LATEINIT_KEYWORD,
|
||||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD,
|
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD,
|
||||||
CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD, COROUTINE_KEYWORD, SUSPEND_KEYWORD
|
CONST_KEYWORD, OPERATOR_KEYWORD, INFIX_KEYWORD, COROUTINE_KEYWORD, SUSPEND_KEYWORD, PLATFORM_KEYWORD, IMPL_KEYWORD
|
||||||
};
|
};
|
||||||
|
|
||||||
TokenSet MODIFIER_KEYWORDS = TokenSet.create(MODIFIER_KEYWORDS_ARRAY);
|
TokenSet MODIFIER_KEYWORDS = TokenSet.create(MODIFIER_KEYWORDS_ARRAY);
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ object KotlinStubVersions {
|
|||||||
// Though only kotlin declarations (no code in the bodies) are stubbed, please do increase this version
|
// Though only kotlin declarations (no code in the bodies) are stubbed, please do increase this version
|
||||||
// if you are not 100% sure it can be avoided.
|
// if you are not 100% sure it can be avoided.
|
||||||
// Increasing this version will lead to reindexing of all kotlin source files on the first IDE startup with the new version.
|
// Increasing this version will lead to reindexing of all kotlin source files on the first IDE startup with the new version.
|
||||||
const val SOURCE_STUB_VERSION = 119
|
const val SOURCE_STUB_VERSION = 120
|
||||||
|
|
||||||
// Binary stub version should be increased if stub format (org.jetbrains.kotlin.psi.stubs.impl) is changed
|
// Binary stub version should be increased if stub format (org.jetbrains.kotlin.psi.stubs.impl) is changed
|
||||||
// or changes are made to the core stub building code (org.jetbrains.kotlin.idea.decompiler.stubBuilder).
|
// or changes are made to the core stub building code (org.jetbrains.kotlin.idea.decompiler.stubBuilder).
|
||||||
// Increasing this version will lead to reindexing of all binary files that are potentially kotlin binaries (including all class files).
|
// Increasing this version will lead to reindexing of all binary files that are potentially kotlin binaries (including all class files).
|
||||||
private const val BINARY_STUB_VERSION = 54
|
private const val BINARY_STUB_VERSION = 55
|
||||||
|
|
||||||
// Classfile stub version should be increased if changes are made to classfile stub building subsystem (org.jetbrains.kotlin.idea.decompiler.classFile)
|
// Classfile stub version should be increased if changes are made to classfile stub building subsystem (org.jetbrains.kotlin.idea.decompiler.classFile)
|
||||||
// Increasing this version will lead to reindexing of all classfiles.
|
// Increasing this version will lead to reindexing of all classfiles.
|
||||||
|
|||||||
@@ -89,13 +89,17 @@ object ModifierCheckerCore {
|
|||||||
CROSSINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
|
CROSSINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
|
||||||
CONST_KEYWORD to EnumSet.of(MEMBER_PROPERTY, TOP_LEVEL_PROPERTY),
|
CONST_KEYWORD to EnumSet.of(MEMBER_PROPERTY, TOP_LEVEL_PROPERTY),
|
||||||
OPERATOR_KEYWORD to EnumSet.of(FUNCTION),
|
OPERATOR_KEYWORD to EnumSet.of(FUNCTION),
|
||||||
INFIX_KEYWORD to EnumSet.of(FUNCTION)
|
INFIX_KEYWORD to EnumSet.of(FUNCTION),
|
||||||
|
PLATFORM_KEYWORD to EnumSet.of(FUNCTION, CLASS_ONLY, OBJECT, INTERFACE, INNER_CLASS, ENUM_CLASS, ANNOTATION_CLASS), // TODO
|
||||||
|
IMPL_KEYWORD to EnumSet.of(FUNCTION, CLASS_ONLY, OBJECT, INTERFACE, INNER_CLASS, ENUM_CLASS, ANNOTATION_CLASS) // TODO
|
||||||
)
|
)
|
||||||
|
|
||||||
val featureDependencies = mapOf(
|
val featureDependencies = mapOf(
|
||||||
COROUTINE_KEYWORD to LanguageFeature.Coroutines,
|
COROUTINE_KEYWORD to LanguageFeature.Coroutines,
|
||||||
SUSPEND_KEYWORD to LanguageFeature.Coroutines,
|
SUSPEND_KEYWORD to LanguageFeature.Coroutines,
|
||||||
INLINE_KEYWORD to LanguageFeature.InlineProperties
|
INLINE_KEYWORD to LanguageFeature.InlineProperties,
|
||||||
|
PLATFORM_KEYWORD to LanguageFeature.MultiPlatformProjects,
|
||||||
|
IMPL_KEYWORD to LanguageFeature.MultiPlatformProjects
|
||||||
)
|
)
|
||||||
|
|
||||||
val featureDependenciesTargets = mapOf(
|
val featureDependenciesTargets = mapOf(
|
||||||
|
|||||||
+14
@@ -88,6 +88,8 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
private final ClassKind kind;
|
private final ClassKind kind;
|
||||||
private final boolean isInner;
|
private final boolean isInner;
|
||||||
private final boolean isData;
|
private final boolean isData;
|
||||||
|
private final boolean isPlatform;
|
||||||
|
private final boolean isImpl;
|
||||||
|
|
||||||
private final Annotations annotations;
|
private final Annotations annotations;
|
||||||
private final Annotations danglingAnnotations;
|
private final Annotations danglingAnnotations;
|
||||||
@@ -155,6 +157,8 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
|
|
||||||
this.isInner = isInnerClass(modifierList) && !ModifiersChecker.isIllegalInner(this);
|
this.isInner = isInnerClass(modifierList) && !ModifiersChecker.isIllegalInner(this);
|
||||||
this.isData = modifierList != null && modifierList.hasModifier(KtTokens.DATA_KEYWORD);
|
this.isData = modifierList != null && modifierList.hasModifier(KtTokens.DATA_KEYWORD);
|
||||||
|
this.isPlatform = modifierList != null && modifierList.hasModifier(KtTokens.PLATFORM_KEYWORD);
|
||||||
|
this.isImpl = modifierList != null && modifierList.hasModifier(KtTokens.IMPL_KEYWORD);
|
||||||
|
|
||||||
// Annotation entries are taken from both own annotations (if any) and object literal annotations (if any)
|
// Annotation entries are taken from both own annotations (if any) and object literal annotations (if any)
|
||||||
List<KtAnnotationEntry> annotationEntries = new ArrayList<KtAnnotationEntry>();
|
List<KtAnnotationEntry> annotationEntries = new ArrayList<KtAnnotationEntry>();
|
||||||
@@ -491,6 +495,16 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
return isCompanionObject;
|
return isCompanionObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return isPlatform;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return isImpl;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Annotations getAnnotations() {
|
public Annotations getAnnotations() {
|
||||||
|
|||||||
+6
@@ -19,8 +19,11 @@ package org.jetbrains.kotlin.resolve.lazy.descriptors
|
|||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.impl.AbstractTypeAliasDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.AbstractTypeAliasDescriptor
|
||||||
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.psi.KtTypeAlias
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||||
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
import org.jetbrains.kotlin.storage.NotNullLazyValue
|
import org.jetbrains.kotlin.storage.NotNullLazyValue
|
||||||
import org.jetbrains.kotlin.storage.NullableLazyValue
|
import org.jetbrains.kotlin.storage.NullableLazyValue
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
@@ -44,12 +47,15 @@ class LazyTypeAliasDescriptor(
|
|||||||
private lateinit var expandedTypeImpl: NotNullLazyValue<SimpleType>
|
private lateinit var expandedTypeImpl: NotNullLazyValue<SimpleType>
|
||||||
private lateinit var defaultTypeImpl: NotNullLazyValue<SimpleType>
|
private lateinit var defaultTypeImpl: NotNullLazyValue<SimpleType>
|
||||||
private lateinit var classDescriptorImpl: NullableLazyValue<ClassDescriptor>
|
private lateinit var classDescriptorImpl: NullableLazyValue<ClassDescriptor>
|
||||||
|
private val isImpl = (source.getPsi() as? KtTypeAlias)?.hasModifier(KtTokens.IMPL_KEYWORD) == true
|
||||||
|
|
||||||
override val underlyingType: SimpleType get() = underlyingTypeImpl()
|
override val underlyingType: SimpleType get() = underlyingTypeImpl()
|
||||||
override val expandedType: SimpleType get() = expandedTypeImpl()
|
override val expandedType: SimpleType get() = expandedTypeImpl()
|
||||||
override val classDescriptor: ClassDescriptor? get() = classDescriptorImpl()
|
override val classDescriptor: ClassDescriptor? get() = classDescriptorImpl()
|
||||||
override fun getDefaultType(): SimpleType = defaultTypeImpl()
|
override fun getDefaultType(): SimpleType = defaultTypeImpl()
|
||||||
|
|
||||||
|
override fun isImpl(): Boolean = isImpl
|
||||||
|
|
||||||
fun initialize(
|
fun initialize(
|
||||||
declaredTypeParameters: List<TypeParameterDescriptor>,
|
declaredTypeParameters: List<TypeParameterDescriptor>,
|
||||||
lazyUnderlyingType: NotNullLazyValue<SimpleType>,
|
lazyUnderlyingType: NotNullLazyValue<SimpleType>,
|
||||||
|
|||||||
+2
@@ -138,6 +138,8 @@ open class KnownClassDescriptor(
|
|||||||
override fun isCompanionObject(): Boolean = false
|
override fun isCompanionObject(): Boolean = false
|
||||||
override fun isData(): Boolean = false
|
override fun isData(): Boolean = false
|
||||||
override fun isInner(): Boolean = false
|
override fun isInner(): Boolean = false
|
||||||
|
override fun isPlatform(): Boolean = false
|
||||||
|
override fun isImpl(): Boolean = false
|
||||||
|
|
||||||
override fun <R : Any?, D : Any?> accept(visitor: DeclarationDescriptorVisitor<R, D>, data: D): R {
|
override fun <R : Any?, D : Any?> accept(visitor: DeclarationDescriptorVisitor<R, D>, data: D): R {
|
||||||
return visitor.visitClassDescriptor(this, data)
|
return visitor.visitClassDescriptor(this, data)
|
||||||
|
|||||||
+2
@@ -54,6 +54,8 @@ abstract class IrBuiltinOperatorDescriptorBase(containingDeclaration: Declaratio
|
|||||||
override fun isOperator(): Boolean = false
|
override fun isOperator(): Boolean = false
|
||||||
override fun isSuspend(): Boolean = false
|
override fun isSuspend(): Boolean = false
|
||||||
override fun isTailrec(): Boolean = false
|
override fun isTailrec(): Boolean = false
|
||||||
|
override fun isPlatform(): Boolean = false
|
||||||
|
override fun isImpl(): Boolean = false
|
||||||
override fun hasStableParameterNames(): Boolean = true
|
override fun hasStableParameterNames(): Boolean = true
|
||||||
override fun hasSynthesizedParameterNames(): Boolean = false
|
override fun hasSynthesizedParameterNames(): Boolean = false
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -95,6 +95,9 @@ class LazyJavaClassDescriptor(
|
|||||||
|
|
||||||
override fun isInner() = isInner
|
override fun isInner() = isInner
|
||||||
override fun isData() = false
|
override fun isData() = false
|
||||||
|
override fun isCompanionObject() = false
|
||||||
|
override fun isPlatform() = false
|
||||||
|
override fun isImpl() = false
|
||||||
|
|
||||||
private val typeConstructor = c.storageManager.createLazyValue { LazyJavaClassTypeConstructor() }
|
private val typeConstructor = c.storageManager.createLazyValue { LazyJavaClassTypeConstructor() }
|
||||||
override fun getTypeConstructor(): TypeConstructor = typeConstructor()
|
override fun getTypeConstructor(): TypeConstructor = typeConstructor()
|
||||||
@@ -132,8 +135,6 @@ class LazyJavaClassDescriptor(
|
|||||||
|
|
||||||
override fun getFunctionTypeForSamInterface(): SimpleType? = functionTypeForSamInterface()
|
override fun getFunctionTypeForSamInterface(): SimpleType? = functionTypeForSamInterface()
|
||||||
|
|
||||||
override fun isCompanionObject() = false
|
|
||||||
|
|
||||||
override fun toString() = "Lazy Java class ${this.fqNameUnsafe}"
|
override fun toString() = "Lazy Java class ${this.fqNameUnsafe}"
|
||||||
|
|
||||||
private inner class LazyJavaClassTypeConstructor : AbstractClassTypeConstructor(c.storageManager) {
|
private inner class LazyJavaClassTypeConstructor : AbstractClassTypeConstructor(c.storageManager) {
|
||||||
|
|||||||
+2
@@ -102,6 +102,8 @@ class FunctionClassDescriptor(
|
|||||||
override fun isCompanionObject() = false
|
override fun isCompanionObject() = false
|
||||||
override fun isInner() = false
|
override fun isInner() = false
|
||||||
override fun isData() = false
|
override fun isData() = false
|
||||||
|
override fun isPlatform() = false
|
||||||
|
override fun isImpl() = false
|
||||||
override val annotations: Annotations get() = Annotations.EMPTY
|
override val annotations: Annotations get() = Annotations.EMPTY
|
||||||
override fun getSource() = SourceElement.NO_SOURCE
|
override fun getSource() = SourceElement.NO_SOURCE
|
||||||
|
|
||||||
|
|||||||
@@ -25,4 +25,8 @@ public interface MemberDescriptor extends DeclarationDescriptorNonRoot, Declarat
|
|||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
Visibility getVisibility();
|
Visibility getVisibility();
|
||||||
|
|
||||||
|
boolean isPlatform();
|
||||||
|
|
||||||
|
boolean isImpl();
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -65,6 +65,10 @@ abstract class AbstractTypeAliasDescriptor(
|
|||||||
|
|
||||||
override fun getVisibility() = visibilityImpl
|
override fun getVisibility() = visibilityImpl
|
||||||
|
|
||||||
|
override fun isPlatform(): Boolean = false
|
||||||
|
|
||||||
|
override fun isImpl(): Boolean = false
|
||||||
|
|
||||||
override fun getTypeConstructor(): TypeConstructor =
|
override fun getTypeConstructor(): TypeConstructor =
|
||||||
typeConstructor
|
typeConstructor
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,16 @@ public class ClassDescriptorImpl extends ClassDescriptorBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClassConstructorDescriptor getUnsubstitutedPrimaryConstructor() {
|
public ClassConstructorDescriptor getUnsubstitutedPrimaryConstructor() {
|
||||||
return primaryConstructor;
|
return primaryConstructor;
|
||||||
|
|||||||
+10
@@ -154,6 +154,16 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public ClassConstructorDescriptor getUnsubstitutedPrimaryConstructor() {
|
public ClassConstructorDescriptor getUnsubstitutedPrimaryConstructor() {
|
||||||
|
|||||||
+22
@@ -43,6 +43,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
|||||||
private boolean isExternal = false;
|
private boolean isExternal = false;
|
||||||
private boolean isInline = false;
|
private boolean isInline = false;
|
||||||
private boolean isTailrec = false;
|
private boolean isTailrec = false;
|
||||||
|
private boolean isPlatform = false;
|
||||||
|
private boolean isImpl = false;
|
||||||
// Difference between these hidden kinds:
|
// Difference between these hidden kinds:
|
||||||
// 1. isHiddenToOvercomeSignatureClash prohibit calling such functions even in super-call context
|
// 1. isHiddenToOvercomeSignatureClash prohibit calling such functions even in super-call context
|
||||||
// 2. isHiddenForResolutionEverywhereBesideSupercalls propagates to it's overrides descriptors while isHiddenToOvercomeSignatureClash does not
|
// 2. isHiddenForResolutionEverywhereBesideSupercalls propagates to it's overrides descriptors while isHiddenToOvercomeSignatureClash does not
|
||||||
@@ -134,6 +136,14 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
|||||||
this.isTailrec = isTailrec;
|
this.isTailrec = isTailrec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlatform(boolean isPlatform) {
|
||||||
|
this.isPlatform = isPlatform;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImpl(boolean isImpl) {
|
||||||
|
this.isImpl = isImpl;
|
||||||
|
}
|
||||||
|
|
||||||
public void setHiddenToOvercomeSignatureClash(boolean hiddenToOvercomeSignatureClash) {
|
public void setHiddenToOvercomeSignatureClash(boolean hiddenToOvercomeSignatureClash) {
|
||||||
isHiddenToOvercomeSignatureClash = hiddenToOvercomeSignatureClash;
|
isHiddenToOvercomeSignatureClash = hiddenToOvercomeSignatureClash;
|
||||||
}
|
}
|
||||||
@@ -247,6 +257,16 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
|||||||
return isSuspend;
|
return isSuspend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return isPlatform;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return isImpl;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <V> V getUserData(UserDataKey<V> key) {
|
public <V> V getUserData(UserDataKey<V> key) {
|
||||||
if (userDataMap == null) return null;
|
if (userDataMap == null) return null;
|
||||||
@@ -631,6 +651,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
|
|||||||
substitutedDescriptor.setInline(isInline);
|
substitutedDescriptor.setInline(isInline);
|
||||||
substitutedDescriptor.setTailrec(isTailrec);
|
substitutedDescriptor.setTailrec(isTailrec);
|
||||||
substitutedDescriptor.setSuspend(isSuspend);
|
substitutedDescriptor.setSuspend(isSuspend);
|
||||||
|
substitutedDescriptor.setPlatform(isPlatform);
|
||||||
|
substitutedDescriptor.setImpl(isImpl);
|
||||||
substitutedDescriptor.setHasStableParameterNames(hasStableParameterNames);
|
substitutedDescriptor.setHasStableParameterNames(hasStableParameterNames);
|
||||||
substitutedDescriptor.setHiddenToOvercomeSignatureClash(configuration.isHiddenToOvercomeSignatureClash);
|
substitutedDescriptor.setHiddenToOvercomeSignatureClash(configuration.isHiddenToOvercomeSignatureClash);
|
||||||
substitutedDescriptor.setHiddenForResolutionEverywhereBesideSupercalls(configuration.isHiddenForResolutionEverywhereBesideSupercalls);
|
substitutedDescriptor.setHiddenForResolutionEverywhereBesideSupercalls(configuration.isHiddenForResolutionEverywhereBesideSupercalls);
|
||||||
|
|||||||
+10
@@ -221,6 +221,16 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor {
|
|||||||
return original.isCompanionObject();
|
return original.isCompanionObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return original.isPlatform();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return original.isImpl();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||||
return visitor.visitClassDescriptor(this, data);
|
return visitor.visitClassDescriptor(this, data);
|
||||||
|
|||||||
+10
@@ -102,6 +102,16 @@ public abstract class PropertyAccessorDescriptorImpl extends DeclarationDescript
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public FunctionDescriptor substitute(@NotNull TypeSubstitutor substitutor) {
|
public FunctionDescriptor substitute(@NotNull TypeSubstitutor substitutor) {
|
||||||
|
|||||||
+12
@@ -355,6 +355,18 @@ public class PropertyDescriptorImpl extends VariableDescriptorWithInitializerImp
|
|||||||
return kind;
|
return kind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isPlatform() {
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isImpl() {
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setOverriddenDescriptors(@NotNull Collection<? extends CallableMemberDescriptor> overriddenDescriptors) {
|
public void setOverriddenDescriptors(@NotNull Collection<? extends CallableMemberDescriptor> overriddenDescriptors) {
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
|
|||||||
@@ -263,8 +263,9 @@ enum class DescriptorRendererModifier(val includeByDefault: Boolean) {
|
|||||||
ANNOTATIONS(false),
|
ANNOTATIONS(false),
|
||||||
INNER(true),
|
INNER(true),
|
||||||
MEMBER_KIND(true),
|
MEMBER_KIND(true),
|
||||||
DATA(true)
|
DATA(true),
|
||||||
|
PLATFORM(true),
|
||||||
|
IMPL(true),
|
||||||
;
|
;
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -461,6 +461,20 @@ internal class DescriptorRendererImpl(
|
|||||||
builder.append(renderKeyword(keyword)).append(" ")
|
builder.append(renderKeyword(keyword)).append(" ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun renderPlatform(isPlatform: Boolean, builder: StringBuilder) {
|
||||||
|
if (DescriptorRendererModifier.PLATFORM !in modifiers) return
|
||||||
|
if (isPlatform) {
|
||||||
|
builder.append(renderKeyword("platform")).append(" ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun renderImpl(isImpl: Boolean, builder: StringBuilder) {
|
||||||
|
if (DescriptorRendererModifier.IMPL !in modifiers) return
|
||||||
|
if (isImpl) {
|
||||||
|
builder.append(renderKeyword("impl")).append(" ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun renderInner(isInner: Boolean, builder: StringBuilder) {
|
private fun renderInner(isInner: Boolean, builder: StringBuilder) {
|
||||||
if (DescriptorRendererModifier.INNER !in modifiers) return
|
if (DescriptorRendererModifier.INNER !in modifiers) return
|
||||||
if (isInner) {
|
if (isInner) {
|
||||||
@@ -526,6 +540,12 @@ internal class DescriptorRendererImpl(
|
|||||||
if (functionDescriptor.isSuspend) {
|
if (functionDescriptor.isSuspend) {
|
||||||
builder.append("suspend ")
|
builder.append("suspend ")
|
||||||
}
|
}
|
||||||
|
if (functionDescriptor.isPlatform) {
|
||||||
|
builder.append("platform ")
|
||||||
|
}
|
||||||
|
if (functionDescriptor.isImpl) {
|
||||||
|
builder.append("impl ")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun render(declarationDescriptor: DeclarationDescriptor): String {
|
override fun render(declarationDescriptor: DeclarationDescriptor): String {
|
||||||
@@ -882,6 +902,8 @@ internal class DescriptorRendererImpl(
|
|||||||
klass.kind.isSingleton && klass.modality == Modality.FINAL)) {
|
klass.kind.isSingleton && klass.modality == Modality.FINAL)) {
|
||||||
renderModality(klass.modality, builder)
|
renderModality(klass.modality, builder)
|
||||||
}
|
}
|
||||||
|
renderPlatform(klass.isPlatform, builder)
|
||||||
|
renderImpl(klass.isImpl, builder)
|
||||||
renderInner(klass.isInner, builder)
|
renderInner(klass.isInner, builder)
|
||||||
renderData(klass.isData, builder)
|
renderData(klass.isData, builder)
|
||||||
renderClassKindPrefix(klass, builder)
|
renderClassKindPrefix(klass, builder)
|
||||||
|
|||||||
+2
@@ -100,6 +100,8 @@ class NotFoundClasses(private val storageManager: StorageManager, private val mo
|
|||||||
|
|
||||||
override fun isCompanionObject() = false
|
override fun isCompanionObject() = false
|
||||||
override fun isData() = false
|
override fun isData() = false
|
||||||
|
override fun isPlatform() = false
|
||||||
|
override fun isImpl() = false
|
||||||
override val annotations: Annotations get() = Annotations.EMPTY
|
override val annotations: Annotations get() = Annotations.EMPTY
|
||||||
|
|
||||||
override fun getUnsubstitutedMemberScope() = MemberScope.Empty
|
override fun getUnsubstitutedMemberScope() = MemberScope.Empty
|
||||||
|
|||||||
+4
@@ -95,6 +95,10 @@ class DeserializedClassDescriptor(
|
|||||||
|
|
||||||
override fun isData() = Flags.IS_DATA.get(classProto.flags)
|
override fun isData() = Flags.IS_DATA.get(classProto.flags)
|
||||||
|
|
||||||
|
override fun isPlatform() = false
|
||||||
|
|
||||||
|
override fun isImpl() = false
|
||||||
|
|
||||||
override fun getUnsubstitutedMemberScope(): MemberScope = memberScope
|
override fun getUnsubstitutedMemberScope(): MemberScope = memberScope
|
||||||
|
|
||||||
override fun getStaticScope() = staticScope
|
override fun getStaticScope() = staticScope
|
||||||
|
|||||||
@@ -42,4 +42,6 @@ class MouseMovedEventArgs
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -36,4 +36,6 @@ class B {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -41,4 +41,6 @@ class A {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -40,4 +40,6 @@ var a : Int
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -27,4 +27,6 @@ annotation class Test {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -39,4 +39,6 @@ public class Test {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -33,4 +33,6 @@ class TestClass {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ enum class Test {
|
|||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: fun
|
// EXIST: fun
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
|
|
||||||
/* TODO: items below are not valid here */
|
/* TODO: items below are not valid here */
|
||||||
// EXIST: class
|
// EXIST: class
|
||||||
|
|||||||
@@ -29,4 +29,6 @@ interface Test {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ open class Foo {
|
|||||||
p<caret> val foo = 1
|
p<caret> val foo = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// EXIST: private, public, protected
|
// EXIST: private, public, protected, platform
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -30,4 +30,6 @@ object Test {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ class TestSample(<caret>)
|
|||||||
// EXIST: protected
|
// EXIST: protected
|
||||||
// EXIST: internal
|
// EXIST: internal
|
||||||
// EXIST: coroutine
|
// EXIST: coroutine
|
||||||
|
// EXIST: impl
|
||||||
/* TODO: keywords below should not be here*/
|
/* TODO: keywords below should not be here*/
|
||||||
// EXIST: abstract
|
// EXIST: abstract
|
||||||
// EXIST: const
|
// EXIST: const
|
||||||
|
|||||||
@@ -27,4 +27,6 @@ package Test
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -5,4 +5,5 @@ p<caret>
|
|||||||
// EXIST: package
|
// EXIST: package
|
||||||
// EXIST: private
|
// EXIST: private
|
||||||
// EXIST: public
|
// EXIST: public
|
||||||
|
// EXIST: platform
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -41,4 +41,6 @@ class Some {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -41,4 +41,6 @@ class Some {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -39,4 +39,6 @@ class Some {
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
@@ -26,4 +26,6 @@
|
|||||||
// EXIST: const
|
// EXIST: const
|
||||||
// EXIST: suspend
|
// EXIST: suspend
|
||||||
// EXIST: typealias
|
// EXIST: typealias
|
||||||
|
// EXIST: platform
|
||||||
|
// EXIST: impl
|
||||||
// NOTHING_ELSE
|
// NOTHING_ELSE
|
||||||
|
|||||||
Reference in New Issue
Block a user