change signature: update expected type for default value on type change (IDEA-153576)

This commit is contained in:
Anna.Kozlova
2016-04-01 11:38:39 +02:00
parent 943ed6a002
commit 3fb215dbc0
@@ -23,6 +23,7 @@ import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.impl.source.PsiExpressionCodeFragmentImpl;
import com.intellij.refactoring.ui.JavaCodeFragmentTableCellEditor;
import com.intellij.refactoring.ui.RefactoringDialog;
import com.intellij.refactoring.ui.StringTableCellEditor;
@@ -30,6 +31,7 @@ import com.intellij.refactoring.util.CanonicalTypes;
import com.intellij.ui.ColoredTableCellRenderer;
import com.intellij.ui.EditorTextField;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.ui.ColumnInfo;
import org.jetbrains.annotations.Nullable;
@@ -106,6 +108,26 @@ public class JavaParameterTableModel extends ParameterTableModelBase<ParameterIn
};
}
@Override
public void setValueAtWithoutUpdate(Object aValue, int rowIndex, int columnIndex) {
super.setValueAtWithoutUpdate(aValue, rowIndex, columnIndex);
//if type was changed - update default value's expected type
PsiType type = null;
if (columnIndex == 0 && aValue instanceof String) {
try {
type = JavaPsiFacade.getElementFactory(myProject).createTypeFromText((String)aValue, myTypeContext);
}
catch (IncorrectOperationException e) {
type = null;
}
}
if (type != null) {
final ParameterTableModelItemBase<ParameterInfoImpl> item = getItem(rowIndex);
((PsiExpressionCodeFragmentImpl)item.defaultValueCodeFragment).setExpectedType(type);
}
}
@Nullable
private static PsiType getRowType(JTable table, int row) {
try {