diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java index 41e97b5a8e07..4534bfb12509 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/GroovyRefactoringUtil.java @@ -181,6 +181,7 @@ public abstract class GroovyRefactoringUtil { // todo add type hierarchy public static Map getCompatibleTypeNames(@NotNull PsiType type) { + if (type instanceof PsiDisjunctionType) type = ((PsiDisjunctionType)type).getLeastUpperBound(); Map map = new LinkedHashMap(); final PsiPrimitiveType unboxed = PsiPrimitiveType.getUnboxedType(type); if (unboxed != null) type = unboxed; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java index 3e0bfbf517b5..2019ff4b7fa9 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/introduce/constant/GrIntroduceConstantDialog.java @@ -231,13 +231,18 @@ public class GrIntroduceConstantDialog extends DialogWrapper private void initializeTypeCombo() { - final PsiType expressionType; + PsiType expressionType; if (myContext.expression != null) { expressionType = myContext.expression.getType(); } else { expressionType = myContext.var.getDeclaredType(); } + + if (expressionType instanceof PsiDisjunctionType) { + expressionType = ((PsiDisjunctionType)expressionType).getLeastUpperBound(); + } + if (expressionType != null) { myTypes = GroovyRefactoringUtil.getCompatibleTypeNames(expressionType); for (String typeName : myTypes.keySet()) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/ui/GrTypeComboBox.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/ui/GrTypeComboBox.java index 4f17c158c0ec..8d5037342d70 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/ui/GrTypeComboBox.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/ui/GrTypeComboBox.java @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.groovy.refactoring.ui; +import com.intellij.psi.PsiDisjunctionType; import com.intellij.psi.PsiType; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil; @@ -34,6 +35,7 @@ public class GrTypeComboBox extends JComboBox { public GrTypeComboBox(PsiType type, boolean selectType) { super(); + if (type instanceof PsiDisjunctionType) type = ((PsiDisjunctionType)type).getLeastUpperBound(); myType = type; initialize(); if (selectType && getItemCount() > 1) {