Refactor: process mentions of class object
Rename usages that refer to "default object" concept now Test data file names are left as is
This commit is contained in:
+9
-9
@@ -66,7 +66,7 @@ private class ClassClsStubBuilder(
|
||||
supertypeIds
|
||||
}
|
||||
}
|
||||
private val classObjectName = if (classProto.hasClassObjectName()) c.nameResolver.getName(classProto.getClassObjectName()) else null
|
||||
private val defaultObjectName = if (classProto.hasClassObjectName()) c.nameResolver.getName(classProto.getClassObjectName()) else null
|
||||
|
||||
private val classOrObjectStub = createClassOrObjectStubAndModifierListStub()
|
||||
|
||||
@@ -100,7 +100,7 @@ private class ClassClsStubBuilder(
|
||||
}
|
||||
|
||||
private fun doCreateClassOrObjectStub(): StubElement<out PsiElement> {
|
||||
val isClassObject = classKind == ProtoBuf.Class.Kind.CLASS_OBJECT
|
||||
val isDefaultObject = classKind == ProtoBuf.Class.Kind.CLASS_OBJECT
|
||||
val fqName = outerContext.containerFqName.child(classId.getRelativeClassName().shortName())
|
||||
val shortName = fqName.shortName()?.ref()
|
||||
val superTypeRefs = supertypeIds.filter {
|
||||
@@ -112,7 +112,7 @@ private class ClassClsStubBuilder(
|
||||
KotlinObjectStubImpl(
|
||||
parentStub, shortName, fqName, superTypeRefs,
|
||||
isTopLevel = !classId.isNestedClass(),
|
||||
isClassObject = isClassObject,
|
||||
isDefault = isDefaultObject,
|
||||
isLocal = false,
|
||||
isObjectLiteral = false
|
||||
)
|
||||
@@ -163,19 +163,19 @@ private class ClassClsStubBuilder(
|
||||
|
||||
private fun createClassBodyAndMemberStubs() {
|
||||
val classBody = KotlinPlaceHolderStubImpl<JetClassBody>(classOrObjectStub, JetStubElementTypes.CLASS_BODY)
|
||||
createClassObjectStub(classBody)
|
||||
createDefaultObjectStub(classBody)
|
||||
createEnumEntryStubs(classBody)
|
||||
createCallableMemberStubs(classBody)
|
||||
createInnerAndNestedClasses(classBody)
|
||||
}
|
||||
|
||||
private fun createClassObjectStub(classBody: KotlinPlaceHolderStubImpl<JetClassBody>) {
|
||||
if (classObjectName == null) {
|
||||
private fun createDefaultObjectStub(classBody: KotlinPlaceHolderStubImpl<JetClassBody>) {
|
||||
if (defaultObjectName == null) {
|
||||
return
|
||||
}
|
||||
|
||||
val classObjectId = classId.createNestedClassId(classObjectName)
|
||||
createNestedClassStub(classBody, classObjectId)
|
||||
val defaultObjectId = classId.createNestedClassId(defaultObjectName)
|
||||
createNestedClassStub(classBody, defaultObjectId)
|
||||
}
|
||||
|
||||
private fun createEnumEntryStubs(classBody: KotlinPlaceHolderStubImpl<JetClassBody>) {
|
||||
@@ -211,7 +211,7 @@ private class ClassClsStubBuilder(
|
||||
private fun createInnerAndNestedClasses(classBody: KotlinPlaceHolderStubImpl<JetClassBody>) {
|
||||
classProto.getNestedClassNameList().forEach { id ->
|
||||
val nestedClassName = c.nameResolver.getName(id)
|
||||
if (nestedClassName != classObjectName) {
|
||||
if (nestedClassName != defaultObjectName) {
|
||||
val nestedClassId = classId.createNestedClassId(nestedClassName)
|
||||
createNestedClassStub(classBody, nestedClassId)
|
||||
}
|
||||
|
||||
+1
-1
@@ -210,7 +210,7 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
}
|
||||
val typeConstraintListStub = KotlinPlaceHolderStubImpl<JetTypeConstraintList>(parent, JetStubElementTypes.TYPE_CONSTRAINT_LIST)
|
||||
for ((name, type) in protosForTypeConstraintList) {
|
||||
val typeConstraintStub = KotlinTypeConstraintStubImpl(typeConstraintListStub, isClassObjectConstraint = false)
|
||||
val typeConstraintStub = KotlinTypeConstraintStubImpl(typeConstraintListStub, isDefaultObjectConstraint = false)
|
||||
KotlinNameReferenceExpressionStubImpl(typeConstraintStub, name.ref())
|
||||
createTypeReferenceStub(typeConstraintStub, type)
|
||||
}
|
||||
|
||||
+4
-4
@@ -146,17 +146,17 @@ private fun buildDecompiledText(packageFqName: FqName, descriptors: List<Declara
|
||||
builder.append(" {\n")
|
||||
var firstPassed = false
|
||||
val subindent = indent + " "
|
||||
val classObject = descriptor.getDefaultObjectDescriptor()
|
||||
if (classObject != null) {
|
||||
val defaultObject = descriptor.getDefaultObjectDescriptor()
|
||||
if (defaultObject != null) {
|
||||
firstPassed = true
|
||||
builder.append(subindent)
|
||||
appendDescriptor(classObject, subindent)
|
||||
appendDescriptor(defaultObject, subindent)
|
||||
}
|
||||
for (member in descriptor.getDefaultType().getMemberScope().getDescriptors()) {
|
||||
if (member.getContainingDeclaration() != descriptor) {
|
||||
continue
|
||||
}
|
||||
if (member == classObject) {
|
||||
if (member == defaultObject) {
|
||||
continue
|
||||
}
|
||||
if (member is CallableMemberDescriptor
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ private object DeclarationKindDetector : JetVisitor<AnnotationHostKind?, Unit?>(
|
||||
override fun visitParameter(d: JetParameter, _: Unit?) = detect(d, "parameter", newLineNeeded = false)
|
||||
|
||||
override fun visitObjectDeclaration(d: JetObjectDeclaration, _: Unit?): AnnotationHostKind? {
|
||||
if (d.isClassObject()) return detect(d, "class object", name = "${d.getName()} of ${d.getStrictParentOfType<JetClass>()?.getName()}")
|
||||
if (d.isDefault()) return detect(d, "class object", name = "${d.getName()} of ${d.getStrictParentOfType<JetClass>()?.getName()}")
|
||||
if (d.getParent() is JetObjectLiteralExpression) return null
|
||||
return detect(d, "object")
|
||||
}
|
||||
|
||||
@@ -36,14 +36,14 @@ import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||
|
||||
// Navigation element of the resolved reference
|
||||
// For property accessor return enclosing property
|
||||
// For class object return enclosing class
|
||||
// For default object return enclosing class
|
||||
public val PsiReference.unwrappedTargets: Set<PsiElement>
|
||||
get() {
|
||||
fun PsiElement.adjust(): PsiElement? {
|
||||
val target = unwrapped?.getOriginalElement()
|
||||
return when {
|
||||
target is JetPropertyAccessor -> target.getNonStrictParentOfType<JetProperty>()
|
||||
target is JetObjectDeclaration && target.isClassObject() -> target.getNonStrictParentOfType<JetClass>()
|
||||
target is JetObjectDeclaration && target.isDefault() -> target.getNonStrictParentOfType<JetClass>()
|
||||
else -> target
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user