JetTypeCodeFragment: Remove usage of KotlinBuiltIns.getInstance()

This commit is contained in:
Pavel V. Talanov
2015-09-21 16:49:42 +03:00
parent b5712033a8
commit e35e6f7f52
2 changed files with 11 additions and 19 deletions
@@ -20,22 +20,14 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.JetNodeTypes; import org.jetbrains.kotlin.JetNodeTypes;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.types.JetType;
public class JetTypeCodeFragment extends JetCodeFragment { public class JetTypeCodeFragment extends JetCodeFragment {
public JetTypeCodeFragment(Project project, String name, CharSequence text, PsiElement context) { public JetTypeCodeFragment(Project project, String name, CharSequence text, PsiElement context) {
super(project, name, text, null, JetNodeTypes.TYPE_CODE_FRAGMENT, context); super(project, name, text, null, JetNodeTypes.TYPE_CODE_FRAGMENT, context);
} }
@Nullable public boolean hasTypeReference() {
public JetType getType() { return getContentElement() instanceof JetTypeReference;
JetElement typeReference = getContentElement();
if (typeReference instanceof JetTypeReference) {
//TODO return the actual type
return KotlinBuiltIns.getInstance().getAnyType();
}
return null;
} }
@Nullable @Nullable
@@ -51,13 +51,13 @@ import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor
import org.jetbrains.kotlin.psi.JetExpressionCodeFragment import org.jetbrains.kotlin.psi.JetExpressionCodeFragment
import org.jetbrains.kotlin.psi.JetPsiFactory import org.jetbrains.kotlin.psi.JetPsiFactory
import org.jetbrains.kotlin.psi.JetTypeCodeFragment import org.jetbrains.kotlin.psi.JetTypeCodeFragment
import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import java.awt.BorderLayout import java.awt.BorderLayout
import java.awt.Font import java.awt.Font
import java.awt.Toolkit import java.awt.Toolkit
import java.awt.event.ItemEvent import java.awt.event.ItemEvent
import java.awt.event.ItemListener import java.awt.event.ItemListener
import java.util.ArrayList import java.util.*
import javax.swing.* import javax.swing.*
public class JetChangeSignatureDialog( public class JetChangeSignatureDialog(
@@ -78,8 +78,6 @@ public class JetChangeSignatureDialog(
override fun createReturnTypeCodeFragment() = createReturnTypeCodeFragment(myProject, myMethod) override fun createReturnTypeCodeFragment() = createReturnTypeCodeFragment(myProject, myMethod)
public fun getReturnType(): JetType? = getType(myReturnTypeCodeFragment as JetTypeCodeFragment?)
private val parametersTableModel: JetCallableParameterTableModel get() = super.myParametersTableModel private val parametersTableModel: JetCallableParameterTableModel get() = super.myParametersTableModel
override fun getRowPresentation(item: ParameterTableModelItemBase<JetParameterInfo>, selected: Boolean, focused: Boolean): JComponent? { override fun getRowPresentation(item: ParameterTableModelItemBase<JetParameterInfo>, selected: Boolean, focused: Boolean): JComponent? {
@@ -337,7 +335,7 @@ public class JetChangeSignatureDialog(
throw ConfigurationException(JetRefactoringBundle.message("function.name.is.invalid")) throw ConfigurationException(JetRefactoringBundle.message("function.name.is.invalid"))
} }
if (myMethod.canChangeReturnType() === MethodDescriptor.ReadWriteOption.ReadWrite && getReturnType() == null) { if (myMethod.canChangeReturnType() === MethodDescriptor.ReadWriteOption.ReadWrite && !hasTypeReference(myReturnTypeCodeFragment)) {
throw ConfigurationException(JetRefactoringBundle.message("return.type.is.invalid")) throw ConfigurationException(JetRefactoringBundle.message("return.type.is.invalid"))
} }
@@ -351,7 +349,7 @@ public class JetChangeSignatureDialog(
throw ConfigurationException(JetRefactoringBundle.message("parameter.name.is.invalid", parameterName)) throw ConfigurationException(JetRefactoringBundle.message("parameter.name.is.invalid", parameterName))
} }
if (getType(item.typeCodeFragment as JetTypeCodeFragment) == null) { if (!hasTypeReference(item.typeCodeFragment)) {
throw ConfigurationException(JetRefactoringBundle.message("parameter.type.is.invalid", item.typeCodeFragment.getText())) throw ConfigurationException(JetRefactoringBundle.message("parameter.type.is.invalid", item.typeCodeFragment.getText()))
} }
} }
@@ -387,8 +385,6 @@ public class JetChangeSignatureDialog(
private fun createReturnTypeCodeFragment(project: Project, method: JetMethodDescriptor) = private fun createReturnTypeCodeFragment(project: Project, method: JetMethodDescriptor) =
JetPsiFactory(project).createTypeCodeFragment(method.renderOriginalReturnType(), method.baseDeclaration) JetPsiFactory(project).createTypeCodeFragment(method.renderOriginalReturnType(), method.baseDeclaration)
private fun getType(typeCodeFragment: JetTypeCodeFragment?) = typeCodeFragment?.getType()
public fun createRefactoringProcessorForSilentChangeSignature(project: Project, public fun createRefactoringProcessorForSilentChangeSignature(project: Project,
commandName: String, commandName: String,
method: JetMethodDescriptor, method: JetMethodDescriptor,
@@ -424,7 +420,8 @@ public class JetChangeSignatureDialog(
} }
val returnTypeText = if (returnTypeCodeFragment != null) returnTypeCodeFragment.getText().trim() else "" val returnTypeText = if (returnTypeCodeFragment != null) returnTypeCodeFragment.getText().trim() else ""
val returnType = getType(returnTypeCodeFragment as JetTypeCodeFragment?) //TODO return the actual type
val returnType = if (hasTypeReference(returnTypeCodeFragment)) methodDescriptor.baseDescriptor.builtIns.anyType else null
return JetChangeInfo(methodDescriptor.original, return JetChangeInfo(methodDescriptor.original,
methodName, methodName,
returnType, returnType,
@@ -434,5 +431,8 @@ public class JetChangeSignatureDialog(
parametersModel.getReceiver(), parametersModel.getReceiver(),
defaultValueContext) defaultValueContext)
} }
private fun hasTypeReference(codeFragment: PsiCodeFragment?): Boolean
= (codeFragment as? JetTypeCodeFragment)?.hasTypeReference() ?: false
} }
} }