Minor: fix warnings

This commit is contained in:
Natalia Ukhorskaya
2015-09-28 15:05:50 +03:00
parent a2d3607b5b
commit 17816002cc
@@ -78,7 +78,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
try { try {
val javaSourceFileName = location.sourceName("Java") val javaSourceFileName = location.sourceName("Java")
val javaClassName = JvmClassName.byInternalName(defaultInternalName(location)) val javaClassName = JvmClassName.byInternalName(defaultInternalName(location))
val project = myDebugProcess.getProject() val project = myDebugProcess.project
val defaultPsiFile = DebuggerUtils.findSourceFileForClass(project, GlobalSearchScope.allScope(project), javaClassName, javaSourceFileName, 0) val defaultPsiFile = DebuggerUtils.findSourceFileForClass(project, GlobalSearchScope.allScope(project), javaClassName, javaSourceFileName, 0)
if (defaultPsiFile != null) { if (defaultPsiFile != null) {
@@ -104,7 +104,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
if (lineNumber >= 0) { if (lineNumber >= 0) {
val lambdaOrFunIfInside = getLambdaOrFunIfInside(location, psiFile as JetFile, lineNumber) val lambdaOrFunIfInside = getLambdaOrFunIfInside(location, psiFile as JetFile, lineNumber)
if (lambdaOrFunIfInside != null) { if (lambdaOrFunIfInside != null) {
return SourcePosition.createFromElement(lambdaOrFunIfInside.getBodyExpression()!!) return SourcePosition.createFromElement(lambdaOrFunIfInside.bodyExpression!!)
} }
return SourcePosition.createFromLine(psiFile, lineNumber) return SourcePosition.createFromLine(psiFile, lineNumber)
} }
@@ -121,25 +121,25 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
if (start == null || end == null) return null if (start == null || end == null) return null
val literalsOrFunctions = CodeInsightUtils. val literalsOrFunctions = CodeInsightUtils.
findElementsOfClassInRange(file, start, end, javaClass<JetFunctionLiteral>(), javaClass<JetNamedFunction>()). findElementsOfClassInRange(file, start, end, JetFunctionLiteral::class.java, JetNamedFunction::class.java).
filter { JetPsiUtil.getParentCallIfPresent(it as JetExpression) != null } filter { JetPsiUtil.getParentCallIfPresent(it as JetExpression) != null }
if (literalsOrFunctions.isEmpty()) return null; if (literalsOrFunctions.isEmpty()) return null;
val isInLibrary = LibraryUtil.findLibraryEntry(file.getVirtualFile(), file.getProject()) != null val isInLibrary = LibraryUtil.findLibraryEntry(file.virtualFile, file.project) != null
val typeMapper = if (!isInLibrary) val typeMapper = if (!isInLibrary)
prepareTypeMapper(file) prepareTypeMapper(file)
else else
createTypeMapperForLibraryFile(file.findElementAt(start), file) createTypeMapperForLibraryFile(file.findElementAt(start), file)
val currentLocationClassName = JvmClassName.byFqNameWithoutInnerClasses(FqName(currentLocationFqName)).getInternalName() val currentLocationClassName = JvmClassName.byFqNameWithoutInnerClasses(FqName(currentLocationFqName)).internalName
for (literal in literalsOrFunctions) { for (literal in literalsOrFunctions) {
val functionLiteral = literal as JetFunction val functionLiteral = literal as JetFunction
if (isInlinedLambda(functionLiteral, typeMapper.getBindingContext())) { if (isInlinedLambda(functionLiteral, typeMapper.bindingContext)) {
continue continue
} }
val internalClassName = getInternalClassNameForElement(literal.getFirstChild(), typeMapper, file, isInLibrary).className val internalClassName = getInternalClassNameForElement(literal.firstChild, typeMapper, file, isInLibrary).className
if (internalClassName == currentLocationClassName) { if (internalClassName == currentLocationClassName) {
return functionLiteral return functionLiteral
} }
@@ -173,7 +173,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
val className = JvmClassName.byInternalName(referenceInternalName) val className = JvmClassName.byInternalName(referenceInternalName)
val project = myDebugProcess.getProject() val project = myDebugProcess.project
return DebuggerUtils.findSourceFileForClass(project, GlobalSearchScope.allScope(project), className, sourceName, location.lineNumber() - 1) return DebuggerUtils.findSourceFileForClass(project, GlobalSearchScope.allScope(project), className, sourceName, location.lineNumber() - 1)
} }
@@ -186,7 +186,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
} }
override fun getAllClasses(sourcePosition: SourcePosition): List<ReferenceType> { override fun getAllClasses(sourcePosition: SourcePosition): List<ReferenceType> {
val psiFile = sourcePosition.getFile() val psiFile = sourcePosition.file
if (psiFile is JetFile) { if (psiFile is JetFile) {
val result = ArrayList<ReferenceType>() val result = ArrayList<ReferenceType>()
@@ -194,16 +194,16 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
val names = classNameForPositionAndInlinedOnes(sourcePosition) val names = classNameForPositionAndInlinedOnes(sourcePosition)
for (name in names) { for (name in names) {
result.addAll(myDebugProcess.getVirtualMachineProxy().classesByName(name)) result.addAll(myDebugProcess.virtualMachineProxy.classesByName(name))
} }
return result return result
} }
if (psiFile is ClsFileImpl) { if (psiFile is ClsFileImpl) {
val decompiledPsiFile = runReadAction { psiFile.getDecompiledPsiFile() } val decompiledPsiFile = runReadAction { psiFile.decompiledPsiFile }
if (decompiledPsiFile is JetClsFile && sourcePosition.getLine() == -1) { if (decompiledPsiFile is JetClsFile && sourcePosition.line == -1) {
val className = PackageClassUtils.getPackageClassInternalName(decompiledPsiFile.getPackageFqName()) val className = PackageClassUtils.getPackageClassInternalName(decompiledPsiFile.packageFqName)
return myDebugProcess.getVirtualMachineProxy().classesByName(className) return myDebugProcess.virtualMachineProxy.classesByName(className)
} }
} }
@@ -216,28 +216,25 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
if (name != null) { if (name != null) {
result.add(name) result.add(name)
} }
val list = findInlinedCalls(sourcePosition.getElementAt(), sourcePosition.getFile()) val list = findInlinedCalls(sourcePosition.elementAt, sourcePosition.file)
result.addAll(list) result.addAll(list)
return result; return result;
} }
public fun classNameForPosition(sourcePosition: SourcePosition): String? { public fun classNameForPosition(sourcePosition: SourcePosition): String? {
val psiElement = runReadAction { sourcePosition.getElementAt() } val psiElement = runReadAction { sourcePosition.elementAt } ?: return null
if (psiElement == null) {
return null
}
return classNameForPosition(psiElement) return classNameForPosition(psiElement)
} }
private fun classNameForPosition(element: PsiElement): String? { private fun classNameForPosition(element: PsiElement): String? {
return runReadAction { return runReadAction {
if (DumbService.getInstance(element.getProject()).isDumb()) { if (DumbService.getInstance(element.project).isDumb) {
null null
} }
else { else {
val file = element.getContainingFile() as JetFile val file = element.containingFile as JetFile
val isInLibrary = LibraryUtil.findLibraryEntry(file.getVirtualFile(), file.getProject()) != null val isInLibrary = LibraryUtil.findLibraryEntry(file.virtualFile, file.project) != null
val typeMapper = if (!isInLibrary) prepareTypeMapper(file) else createTypeMapperForLibraryFile(element, file) val typeMapper = if (!isInLibrary) prepareTypeMapper(file) else createTypeMapperForLibraryFile(element, file)
getInternalClassNameForElement(element, typeMapper, file, isInLibrary).className getInternalClassNameForElement(element, typeMapper, file, isInLibrary).className
} }
@@ -249,25 +246,25 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
var value: CachedValue<JetTypeMapper>? = myTypeMappers.get(key) var value: CachedValue<JetTypeMapper>? = myTypeMappers.get(key)
if (value == null) { if (value == null) {
value = CachedValuesManager.getManager(file.getProject()).createCachedValue<JetTypeMapper>( value = CachedValuesManager.getManager(file.project).createCachedValue<JetTypeMapper>(
{ {
val typeMapper = createTypeMapper(file) val typeMapper = createTypeMapper(file)
CachedValueProvider.Result<JetTypeMapper>(typeMapper, PsiModificationTracker.MODIFICATION_COUNT) CachedValueProvider.Result(typeMapper, PsiModificationTracker.MODIFICATION_COUNT)
}, false) }, false)
myTypeMappers.put(key, value) myTypeMappers.put(key, value)
} }
return value.getValue() return value.value
} }
override fun locationsOfLine(type: ReferenceType, position: SourcePosition): List<Location> { override fun locationsOfLine(type: ReferenceType, position: SourcePosition): List<Location> {
if (position.getFile() !is JetFile) { if (position.file !is JetFile) {
throw NoDataException.INSTANCE throw NoDataException.INSTANCE
} }
try { try {
val line = position.getLine() + 1 val line = position.line + 1
val locations = if (myDebugProcess.getVirtualMachineProxy().versionHigher("1.4")) val locations = if (myDebugProcess.virtualMachineProxy.versionHigher("1.4"))
type.locationsOfLine("Kotlin", null, line) type.locationsOfLine("Kotlin", null, line)
else else
type.locationsOfLine(line) type.locationsOfLine(line)
@@ -281,37 +278,34 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
@Deprecated("Since Idea 14.0.3 use createPrepareRequests fun") @Deprecated("Since Idea 14.0.3 use createPrepareRequests fun")
override fun createPrepareRequest(classPrepareRequestor: ClassPrepareRequestor, sourcePosition: SourcePosition): ClassPrepareRequest? { override fun createPrepareRequest(classPrepareRequestor: ClassPrepareRequestor, sourcePosition: SourcePosition): ClassPrepareRequest? {
if (sourcePosition.getFile() !is JetFile) { if (sourcePosition.file !is JetFile) {
throw NoDataException.INSTANCE throw NoDataException.INSTANCE
} }
val className = classNameForPosition(sourcePosition) val className = classNameForPosition(sourcePosition) ?: return null
if (className == null) { return myDebugProcess.requestsManager.createClassPrepareRequest(classPrepareRequestor, className.replace('/', '.'))
return null
}
return myDebugProcess.getRequestsManager().createClassPrepareRequest(classPrepareRequestor, className.replace('/', '.'))
} }
override fun createPrepareRequests(requestor: ClassPrepareRequestor, position: SourcePosition): List<ClassPrepareRequest> { override fun createPrepareRequests(requestor: ClassPrepareRequestor, position: SourcePosition): List<ClassPrepareRequest> {
if (position.getFile() !is JetFile) { if (position.file !is JetFile) {
throw NoDataException.INSTANCE throw NoDataException.INSTANCE
} }
return classNameForPositionAndInlinedOnes(position).map { return classNameForPositionAndInlinedOnes(position).map {
className -> myDebugProcess.getRequestsManager().createClassPrepareRequest(requestor, className.replace('/', '.')) className -> myDebugProcess.requestsManager.createClassPrepareRequest(requestor, className.replace('/', '.'))
}.filterNotNull() }.filterNotNull()
} }
@TestOnly @TestOnly
public fun addTypeMapper(file: JetFile, typeMapper: JetTypeMapper) { public fun addTypeMapper(file: JetFile, typeMapper: JetTypeMapper) {
val value = CachedValuesManager.getManager(file.getProject()).createCachedValue<JetTypeMapper>( val value = CachedValuesManager.getManager(file.project).createCachedValue<JetTypeMapper>(
{ CachedValueProvider.Result<JetTypeMapper>(typeMapper, PsiModificationTracker.MODIFICATION_COUNT) }, false) { CachedValueProvider.Result(typeMapper, PsiModificationTracker.MODIFICATION_COUNT) }, false)
val key = createKeyForTypeMapper(file) val key = createKeyForTypeMapper(file)
myTypeMappers.put(key, value) myTypeMappers.put(key, value)
} }
companion object { companion object {
public fun createTypeMapper(file: JetFile): JetTypeMapper { public fun createTypeMapper(file: JetFile): JetTypeMapper {
val project = file.getProject() val project = file.project
val analysisResult = file.analyzeFullyAndGetResult() val analysisResult = file.analyzeFullyAndGetResult()
analysisResult.throwIfError() analysisResult.throwIfError()
@@ -331,49 +325,49 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
when { when {
element is JetClassOrObject -> return PositionedElement(getJvmInternalNameForImpl(typeMapper, element), element) element is JetClassOrObject -> return PositionedElement(getJvmInternalNameForImpl(typeMapper, element), element)
element is JetFunctionLiteral -> { element is JetFunctionLiteral -> {
if (isInlinedLambda(element, typeMapper.getBindingContext())) { if (isInlinedLambda(element, typeMapper.bindingContext)) {
return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary) return getInternalClassNameForElement(element.parent, typeMapper, file, isInLibrary)
} }
else { else {
val asmType = CodegenBinding.asmTypeForAnonymousClass(typeMapper.getBindingContext(), element) val asmType = CodegenBinding.asmTypeForAnonymousClass(typeMapper.bindingContext, element)
return PositionedElement(asmType.getInternalName(), element) return PositionedElement(asmType.internalName, element)
} }
} }
element is JetClassInitializer -> { element is JetClassInitializer -> {
val parent = getElementToCalculateClassName(element.getParent()) val parent = getElementToCalculateClassName(element.parent)
// Class-object initializer // Class-object initializer
if (parent is JetObjectDeclaration && parent.isCompanion()) { if (parent is JetObjectDeclaration && parent.isCompanion()) {
return PositionedElement(getInternalClassNameForElement(parent.getParent(), typeMapper, file, isInLibrary).className, parent) return PositionedElement(getInternalClassNameForElement(parent.parent, typeMapper, file, isInLibrary).className, parent)
} }
return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary) return getInternalClassNameForElement(element.parent, typeMapper, file, isInLibrary)
} }
element is JetProperty && (!element.isTopLevel() || !isInLibrary) -> { element is JetProperty && (!element.isTopLevel || !isInLibrary) -> {
if (isInPropertyAccessor(notPositionedElement)) { if (isInPropertyAccessor(notPositionedElement)) {
val classOrObject = PsiTreeUtil.getParentOfType(element, javaClass<JetClassOrObject>()) val classOrObject = PsiTreeUtil.getParentOfType(element, JetClassOrObject::class.java)
if (classOrObject != null) { if (classOrObject != null) {
return PositionedElement(getJvmInternalNameForImpl(typeMapper, classOrObject), element) return PositionedElement(getJvmInternalNameForImpl(typeMapper, classOrObject), element)
} }
} }
val descriptor = typeMapper.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, element) val descriptor = typeMapper.bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element)
if (descriptor !is PropertyDescriptor) { if (descriptor !is PropertyDescriptor) {
return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary) return getInternalClassNameForElement(element.parent, typeMapper, file, isInLibrary)
} }
return PositionedElement(getJvmInternalNameForPropertyOwner(typeMapper, descriptor), element) return PositionedElement(getJvmInternalNameForPropertyOwner(typeMapper, descriptor), element)
} }
element is JetNamedFunction -> { element is JetNamedFunction -> {
if (isInlinedLambda(element, typeMapper.getBindingContext())) { if (isInlinedLambda(element, typeMapper.bindingContext)) {
return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary) return getInternalClassNameForElement(element.parent, typeMapper, file, isInLibrary)
} }
val parent = getElementToCalculateClassName(element.getParent()) val parent = getElementToCalculateClassName(element.parent)
if (parent is JetClassOrObject) { if (parent is JetClassOrObject) {
return PositionedElement(getJvmInternalNameForImpl(typeMapper, parent), element) return PositionedElement(getJvmInternalNameForImpl(typeMapper, parent), element)
} }
else if (parent != null) { else if (parent != null) {
val asmType = CodegenBinding.asmTypeForAnonymousClass(typeMapper.getBindingContext(), element) val asmType = CodegenBinding.asmTypeForAnonymousClass(typeMapper.bindingContext, element)
return PositionedElement(asmType.getInternalName(), element) return PositionedElement(asmType.internalName, element)
} }
} }
} }
@@ -381,10 +375,10 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
if (isInLibrary) { if (isInLibrary) {
val elementAtForLibraryFile = val elementAtForLibraryFile =
if (element is JetDeclaration) element if (element is JetDeclaration) element
else PsiTreeUtil.getParentOfType(element, javaClass<JetDeclaration>()) else PsiTreeUtil.getParentOfType(element, JetDeclaration::class.java)
assert(elementAtForLibraryFile != null) { assert(elementAtForLibraryFile != null) {
"Couldn't find element at breakpoint for library file " + file.getName() + "Couldn't find element at breakpoint for library file " + file.name +
(if (notPositionedElement == null) "" else ", notPositionedElement = " + notPositionedElement.getElementTextWithContext()) (if (notPositionedElement == null) "" else ", notPositionedElement = " + notPositionedElement.getElementTextWithContext())
} }
return PositionedElement(findPackagePartInternalNameForLibraryFile(elementAtForLibraryFile!!), elementAtForLibraryFile) return PositionedElement(findPackagePartInternalNameForLibraryFile(elementAtForLibraryFile!!), elementAtForLibraryFile)
@@ -394,11 +388,11 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
} }
private val TYPES_TO_CALCULATE_CLASSNAME: Array<Class<out JetElement>> = private val TYPES_TO_CALCULATE_CLASSNAME: Array<Class<out JetElement>> =
arrayOf(javaClass<JetClassOrObject>(), arrayOf(JetClassOrObject::class.java,
javaClass<JetFunctionLiteral>(), JetFunctionLiteral::class.java,
javaClass<JetNamedFunction>(), JetNamedFunction::class.java,
javaClass<JetProperty>(), JetProperty::class.java,
javaClass<JetClassInitializer>()) JetClassInitializer::class.java)
private fun getElementToCalculateClassName(notPositionedElement: PsiElement?): JetElement? { private fun getElementToCalculateClassName(notPositionedElement: PsiElement?): JetElement? {
if (notPositionedElement?.javaClass in TYPES_TO_CALCULATE_CLASSNAME ) return notPositionedElement as JetElement if (notPositionedElement?.javaClass in TYPES_TO_CALCULATE_CLASSNAME ) return notPositionedElement as JetElement
@@ -414,29 +408,26 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
private fun isInPropertyAccessor(element: PsiElement?) = private fun isInPropertyAccessor(element: PsiElement?) =
element is JetPropertyAccessor || element is JetPropertyAccessor ||
PsiTreeUtil.getParentOfType(element, javaClass<JetProperty>(), javaClass<JetPropertyAccessor>()) is JetPropertyAccessor PsiTreeUtil.getParentOfType(element, JetProperty::class.java, JetPropertyAccessor::class.java) is JetPropertyAccessor
private fun getElementToCreateTypeMapperForLibraryFile(element: PsiElement?) = private fun getElementToCreateTypeMapperForLibraryFile(element: PsiElement?) =
if (element is JetElement) element else PsiTreeUtil.getParentOfType(element, javaClass<JetElement>()) if (element is JetElement) element else PsiTreeUtil.getParentOfType(element, JetElement::class.java)
private fun getJvmInternalNameForImpl(typeMapper: JetTypeMapper, jetClass: JetClassOrObject): String? { private fun getJvmInternalNameForImpl(typeMapper: JetTypeMapper, jetClass: JetClassOrObject): String? {
val classDescriptor = typeMapper.getBindingContext().get<PsiElement, ClassDescriptor>(BindingContext.CLASS, jetClass) val classDescriptor = typeMapper.bindingContext.get<PsiElement, ClassDescriptor>(BindingContext.CLASS, jetClass) ?: return null
if (classDescriptor == null) {
return null
}
if (jetClass is JetClass && jetClass.isInterface()) { if (jetClass is JetClass && jetClass.isInterface()) {
return typeMapper.mapDefaultImpls(classDescriptor).getInternalName() return typeMapper.mapDefaultImpls(classDescriptor).internalName
} }
return typeMapper.mapClass(classDescriptor).getInternalName() return typeMapper.mapClass(classDescriptor).internalName
} }
private fun createTypeMapperForLibraryFile(notPositionedElement: PsiElement?, file: JetFile): JetTypeMapper { private fun createTypeMapperForLibraryFile(notPositionedElement: PsiElement?, file: JetFile): JetTypeMapper {
val element = getElementToCreateTypeMapperForLibraryFile(notPositionedElement) val element = getElementToCreateTypeMapperForLibraryFile(notPositionedElement)
val analysisResult = element!!.analyzeAndGetResult() val analysisResult = element!!.analyzeAndGetResult()
val state = GenerationState(file.getProject(), ClassBuilderFactories.THROW_EXCEPTION, analysisResult.moduleDescriptor, analysisResult.bindingContext, listOf(file)) val state = GenerationState(file.project, ClassBuilderFactories.THROW_EXCEPTION, analysisResult.moduleDescriptor, analysisResult.bindingContext, listOf(file))
state.beforeCompile() state.beforeCompile()
return state.typeMapper return state.typeMapper
} }
@@ -455,19 +446,19 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
return runReadAction { return runReadAction {
val result = arrayListOf<String>() val result = arrayListOf<String>()
val isInLibrary = LibraryUtil.findLibraryEntry(jetFile.getVirtualFile(), jetFile.getProject()) != null val isInLibrary = LibraryUtil.findLibraryEntry(jetFile.virtualFile, jetFile.project) != null
val typeMapper = if (!isInLibrary) prepareTypeMapper(jetFile) else createTypeMapperForLibraryFile(element, jetFile) val typeMapper = if (!isInLibrary) prepareTypeMapper(jetFile) else createTypeMapperForLibraryFile(element, jetFile)
val psiElement = getInternalClassNameForElement(element, typeMapper, jetFile, isInLibrary).element; val psiElement = getInternalClassNameForElement(element, typeMapper, jetFile, isInLibrary).element;
if (psiElement is JetNamedFunction && if (psiElement is JetNamedFunction &&
InlineUtil.isInline(typeMapper.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, psiElement)) InlineUtil.isInline(typeMapper.bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, psiElement))
) { ) {
ReferencesSearch.search(psiElement).forEach { ReferencesSearch.search(psiElement).forEach {
if (!it.isImportUsage()) { if (!it.isImportUsage()) {
val psiElement = it.getElement() val usage = it.element
if (psiElement is JetElement) { if (usage is JetElement) {
//TODO recursive search //TODO recursive search
val name = classNameForPosition(psiElement) val name = classNameForPosition(usage)
if (name != null) { if (name != null) {
result.add(name) result.add(name)
} }