Make NameResolver.getClassId extension instead of member
To get rid of dependency of NameResolver on ClassId
This commit is contained in:
+6
-1
@@ -27,6 +27,11 @@ public interface NameResolver {
|
||||
@NotNull
|
||||
Name getName(int index);
|
||||
|
||||
/**
|
||||
* @return the fully qualified name of some class in the format: `org/foo/bar/Test.Inner`
|
||||
*/
|
||||
@NotNull
|
||||
ClassId getClassId(int index);
|
||||
String getQualifiedClassName(int index);
|
||||
|
||||
boolean isLocalClassName(int index);
|
||||
}
|
||||
|
||||
+8
-4
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.serialization.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import java.util.*
|
||||
@@ -32,11 +31,16 @@ class NameResolverImpl(
|
||||
|
||||
override fun getName(index: Int) = Name.guessByFirstCharacter(strings.getString(index))
|
||||
|
||||
override fun getClassId(index: Int): ClassId {
|
||||
val (packageFqNameSegments, relativeClassNameSegments, isLocal) = traverseIds(index)
|
||||
return ClassId(FqName.fromSegments(packageFqNameSegments), FqName.fromSegments(relativeClassNameSegments), isLocal)
|
||||
override fun getQualifiedClassName(index: Int): String {
|
||||
val (packageFqNameSegments, relativeClassNameSegments) = traverseIds(index)
|
||||
val className = relativeClassNameSegments.joinToString(".")
|
||||
return if (packageFqNameSegments.isEmpty()) className
|
||||
else packageFqNameSegments.joinToString("/") + "/$className"
|
||||
}
|
||||
|
||||
override fun isLocalClassName(index: Int): Boolean =
|
||||
traverseIds(index).third
|
||||
|
||||
fun getPackageFqName(index: Int): FqName {
|
||||
val packageNameSegments = traverseIds(index).first
|
||||
return FqName.fromSegments(packageNameSegments)
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.serialization.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
fun NameResolver.getClassId(index: Int): ClassId {
|
||||
return ClassId.fromString(getQualifiedClassName(index), isLocalClassName(index))
|
||||
}
|
||||
Reference in New Issue
Block a user