Java 类com.intellij.psi.impl.PsiDiamondTypeUtil 实例源码
项目:intellij-ce-playground
文件:ExplicitTypeCanBeDiamondInspection.java
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
return new JavaElementVisitor() {
@Override
public void visitNewExpression(PsiNewExpression expression) {
if (PsiDiamondTypeUtil.canCollapseToDiamond(expression, expression, null)) {
final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference();
LOG.assertTrue(classReference != null);
final PsiReferenceParameterList parameterList = classReference.getParameterList();
LOG.assertTrue(parameterList != null);
final PsiElement firstChild = parameterList.getFirstChild();
final PsiElement lastChild = parameterList.getLastChild();
final TextRange range = new TextRange(firstChild != null && firstChild.getNode().getElementType() == JavaTokenType.LT ? 1 : 0,
parameterList.getTextLength() - (lastChild != null && lastChild.getNode().getElementType() == JavaTokenType.GT ? 1 : 0));
holder.registerProblem(parameterList, "Explicit type argument #ref #loc can be replaced with <>", ProblemHighlightType.LIKE_UNUSED_SYMBOL, range, new ReplaceWithDiamondFix());
}
}
};
}
项目:intellij-ce-playground
文件:IntroduceVariableBase.java
public static PsiExpression replaceExplicitWithDiamondWhenApplicable(final PsiExpression initializer,
final PsiType expectedType) {
if (initializer instanceof PsiNewExpression) {
final PsiNewExpression newExpression = (PsiNewExpression)initializer;
final PsiExpression tryToDetectDiamondNewExpr = ((PsiVariable)JavaPsiFacade.getElementFactory(initializer.getProject())
.createVariableDeclarationStatement("x", expectedType, initializer, initializer).getDeclaredElements()[0])
.getInitializer();
if (tryToDetectDiamondNewExpr instanceof PsiNewExpression &&
PsiDiamondTypeUtil.canCollapseToDiamond((PsiNewExpression)tryToDetectDiamondNewExpr,
(PsiNewExpression)tryToDetectDiamondNewExpr,
expectedType)) {
final PsiElement paramList = PsiDiamondTypeUtil
.replaceExplicitWithDiamond(newExpression.getClassOrAnonymousClassReference().getParameterList());
return PsiTreeUtil.getParentOfType(paramList, PsiNewExpression.class);
}
}
return initializer;
}
项目:intellij-ce-playground
文件:AtomicConversionRule.java
public static TypeConversionDescriptor wrapWithNewExpression(PsiType to, PsiType from, @Nullable PsiExpression expression, PsiElement context) {
final String typeText = PsiDiamondTypeUtil.getCollapsedType(to, context);
final PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(to);
final PsiClass atomicClass = resolveResult.getElement();
LOG.assertTrue(atomicClass != null);
final PsiTypeParameter[] typeParameters = atomicClass.getTypeParameters();
if (typeParameters.length == 1) {
final PsiType initial = resolveResult.getSubstitutor().substitute(typeParameters[0]);
final PsiPrimitiveType unboxedInitialType = PsiPrimitiveType.getUnboxedType(initial);
if (unboxedInitialType != null) {
LOG.assertTrue(initial != null);
if (from instanceof PsiPrimitiveType) {
final PsiClassType boxedFromType = ((PsiPrimitiveType)from).getBoxedType(atomicClass);
LOG.assertTrue(boxedFromType != null);
if (!TypeConversionUtil.isAssignable(initial, boxedFromType)) {
return new TypeConversionDescriptor("$val$", "new " + typeText + "((" + unboxedInitialType.getCanonicalText() + ")$val$)", expression);
}
}
}
}
return new TypeConversionDescriptor("$val$", "new " + typeText + "($val$)", expression);
}
项目:tools-idea
文件:ExplicitTypeCanBeDiamondInspection.java
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
return new JavaElementVisitor() {
@Override
public void visitNewExpression(PsiNewExpression expression) {
if (PsiDiamondTypeUtil.canCollapseToDiamond(expression, expression, null)) {
final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference();
LOG.assertTrue(classReference != null);
final PsiReferenceParameterList parameterList = classReference.getParameterList();
LOG.assertTrue(parameterList != null);
final PsiElement firstChild = parameterList.getFirstChild();
final PsiElement lastChild = parameterList.getLastChild();
final TextRange range = new TextRange(firstChild != null && firstChild.getNode().getElementType() == JavaTokenType.LT ? 1 : 0,
parameterList.getTextLength() - (lastChild != null && lastChild.getNode().getElementType() == JavaTokenType.GT ? 1 : 0));
holder.registerProblem(parameterList, "Explicit type argument #ref #loc can be replaced with <>", ProblemHighlightType.LIKE_UNUSED_SYMBOL, range, new ReplaceWithDiamondFix());
}
}
};
}
项目:tools-idea
文件:IntroduceVariableBase.java
public static PsiExpression replaceExplicitWithDiamondWhenApplicable(final PsiExpression initializer,
final PsiType expectedType) {
if (initializer instanceof PsiNewExpression) {
final PsiNewExpression newExpression = (PsiNewExpression)initializer;
final PsiExpression tryToDetectDiamondNewExpr = ((PsiVariable)JavaPsiFacade.getElementFactory(initializer.getProject())
.createVariableDeclarationStatement("x", expectedType, initializer).getDeclaredElements()[0])
.getInitializer();
if (tryToDetectDiamondNewExpr instanceof PsiNewExpression &&
PsiDiamondTypeUtil.canCollapseToDiamond((PsiNewExpression)tryToDetectDiamondNewExpr,
(PsiNewExpression)tryToDetectDiamondNewExpr,
expectedType)) {
final PsiElement paramList = PsiDiamondTypeUtil
.replaceExplicitWithDiamond(newExpression.getClassOrAnonymousClassReference().getParameterList());
return PsiTreeUtil.getParentOfType(paramList, PsiNewExpression.class);
}
}
return initializer;
}
项目:consulo-java
文件:ExplicitTypeCanBeDiamondInspection.java
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
return new JavaElementVisitor() {
@Override
public void visitNewExpression(PsiNewExpression expression) {
if (PsiDiamondTypeUtil.canCollapseToDiamond(expression, expression, null)) {
final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference();
LOG.assertTrue(classReference != null);
final PsiReferenceParameterList parameterList = classReference.getParameterList();
LOG.assertTrue(parameterList != null);
holder.registerProblem(parameterList, "Explicit type argument #ref #loc can be replaced with <>",
ProblemHighlightType.LIKE_UNUSED_SYMBOL, new ReplaceWithDiamondFix());
}
}
};
}
项目:consulo-java
文件:IntroduceVariableBase.java
public static PsiExpression replaceExplicitWithDiamondWhenApplicable(final PsiExpression initializer, final PsiType expectedType)
{
if(initializer instanceof PsiNewExpression)
{
final PsiNewExpression newExpression = (PsiNewExpression) initializer;
final PsiExpression tryToDetectDiamondNewExpr = ((PsiVariable) JavaPsiFacade.getElementFactory(initializer.getProject())
.createVariableDeclarationStatement("x", expectedType, initializer).getDeclaredElements()[0]).getInitializer();
if(tryToDetectDiamondNewExpr instanceof PsiNewExpression && PsiDiamondTypeUtil.canCollapseToDiamond((PsiNewExpression)
tryToDetectDiamondNewExpr, (PsiNewExpression) tryToDetectDiamondNewExpr, expectedType))
{
final PsiElement paramList = PsiDiamondTypeUtil.replaceExplicitWithDiamond(newExpression.getClassOrAnonymousClassReference()
.getParameterList());
return PsiTreeUtil.getParentOfType(paramList, PsiNewExpression.class);
}
}
return initializer;
}
项目:intellij-ce-playground
文件:ExplicitTypeCanBeDiamondInspection.java
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
final PsiElement element = descriptor.getPsiElement();
if (!FileModificationService.getInstance().preparePsiElementForWrite(element)) return;
final PsiNewExpression newExpression =
PsiTreeUtil.getParentOfType(PsiDiamondTypeUtil.replaceExplicitWithDiamond(element), PsiNewExpression.class);
if (newExpression != null) {
CodeStyleManager.getInstance(project).reformat(newExpression);
}
}
项目:intellij-ce-playground
文件:PseudoLambdaReplaceTemplate.java
private static String createPipelineHeadText(PsiExpression collectionExpression, boolean force) {
if (collectionExpression instanceof PsiNewExpression) {
final PsiDiamondType.DiamondInferenceResult diamondResolveResult =
PsiDiamondTypeImpl.resolveInferredTypesNoCheck((PsiNewExpression)collectionExpression, collectionExpression);
if (!diamondResolveResult.getInferredTypes().isEmpty()) {
collectionExpression = PsiDiamondTypeUtil.expandTopLevelDiamondsInside(collectionExpression);
}
}
else if (collectionExpression instanceof PsiMethodCallExpression) {
final PsiType currentType = collectionExpression.getType();
if (currentType == null) {
return null;
}
final PsiExpression copiedExpression = (PsiExpression) collectionExpression.copy();
final PsiType newType = copiedExpression.getType();
if (!currentType.equals(newType)) {
collectionExpression = AddTypeArgumentsFix.addTypeArguments(copiedExpression, currentType);
if (collectionExpression == null) {
return null;
}
}
}
final PsiType type = collectionExpression.getType();
if (type instanceof PsiClassType) {
final PsiClass resolved = ((PsiClassType)type).resolve();
LOG.assertTrue(resolved != null && resolved.getQualifiedName() != null, type);
if (InheritanceUtil.isInheritor(resolved, CommonClassNames.JAVA_UTIL_COLLECTION)) {
return collectionExpression.getText() + ".stream()";
} else {
return "java.util.stream.StreamSupport.stream(" + collectionExpression.getText() + ".spliterator(), false)";
}
}
else if (type instanceof PsiArrayType) {
return CommonClassNames.JAVA_UTIL_ARRAYS + ".stream(" + collectionExpression.getText() + ")";
} else if (force) {
return collectionExpression.getText() + ".stream()";
}
throw new AssertionError("type: " + type + " is unexpected for expression: " + collectionExpression.getText());
}
项目:intellij-ce-playground
文件:TypeMigrationReplacementUtil.java
static void replaceNewExpressionType(final Project project, final PsiNewExpression expression, final Map.Entry<TypeMigrationUsageInfo, PsiType> info) {
final PsiType changeType = info.getValue();
if (changeType != null) {
try {
final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference();
final PsiType componentType = changeType.getDeepComponentType();
if (classReference != null) {
final PsiElement psiElement = replaceTypeWithClassReferenceOrKeyword(project, componentType, classReference);
final PsiNewExpression newExpression = PsiTreeUtil.getParentOfType(psiElement, PsiNewExpression.class);
if (newExpression != null && PsiDiamondTypeUtil.canCollapseToDiamond(newExpression, newExpression, changeType)) {
final PsiJavaCodeReferenceElement anonymousClassReference = newExpression.getClassOrAnonymousClassReference();
if (anonymousClassReference != null) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(anonymousClassReference.getParameterList());
}
}
}
else {
final PsiElement typeKeyword = getTypeKeyword(expression);
if (typeKeyword != null) {
replaceTypeWithClassReferenceOrKeyword(project, componentType, typeKeyword);
}
}
}
catch (IncorrectOperationException e) {
LOG.error(e);
}
}
}
项目:intellij-ce-playground
文件:ReplaceIfWithConditionalIntention.java
private static PsiExpression expandDiamondsWhenNeeded(PsiExpression thenValue, PsiType requiredType) {
if (thenValue instanceof PsiNewExpression) {
if (!PsiDiamondTypeUtil.canChangeContextForDiamond((PsiNewExpression)thenValue, requiredType)) {
return PsiDiamondTypeUtil.expandTopLevelDiamondsInside(thenValue);
}
}
return thenValue;
}
项目:tools-idea
文件:TypeMigrationReplacementUtil.java
static void replaceNewExpressionType(final Project project, final PsiNewExpression expression, final Map.Entry<TypeMigrationUsageInfo, PsiType> info) {
final PsiType changeType = info.getValue();
if (changeType != null) {
try {
final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference();
final PsiType componentType = changeType.getDeepComponentType();
if (classReference != null) {
final PsiElement psiElement = replaceTypeWithClassReferenceOrKeyword(project, componentType, classReference);
final PsiNewExpression newExpression = PsiTreeUtil.getParentOfType(psiElement, PsiNewExpression.class);
if (newExpression != null && PsiDiamondTypeUtil.canCollapseToDiamond(newExpression, newExpression, changeType)) {
final PsiJavaCodeReferenceElement anonymousClassReference = newExpression.getClassOrAnonymousClassReference();
if (anonymousClassReference != null) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(anonymousClassReference.getParameterList());
}
}
}
else {
final PsiElement typeKeyword = getTypeKeyword(expression);
if (typeKeyword != null) {
replaceTypeWithClassReferenceOrKeyword(project, componentType, typeKeyword);
}
}
}
catch (IncorrectOperationException e) {
LOG.error(e);
}
}
}
项目:tools-idea
文件:ReplaceIfWithConditionalIntention.java
private static PsiExpression expandDiamondsWhenNeeded(PsiExpression thenValue, PsiType requiredType) {
if (thenValue instanceof PsiNewExpression) {
if (!PsiDiamondTypeUtil.canChangeContextForDiamond((PsiNewExpression)thenValue, requiredType)) {
return PsiDiamondTypeUtil.expandTopLevelDiamondsInside(thenValue);
}
}
return thenValue;
}
项目:consulo-java
文件:TypeMigrationReplacementUtil.java
static boolean tryToReplaceWithDiamond(PsiNewExpression newExpression, @Nullable PsiType changeType)
{
if(newExpression != null && PsiDiamondTypeUtil.canCollapseToDiamond(newExpression, newExpression, changeType))
{
final PsiJavaCodeReferenceElement anonymousClassReference = newExpression.getClassOrAnonymousClassReference();
if(anonymousClassReference != null)
{
PsiDiamondTypeUtil.replaceExplicitWithDiamond(anonymousClassReference.getParameterList());
}
return true;
}
return false;
}
项目:consulo-java
文件:ReplaceIfWithConditionalIntention.java
private static PsiExpression expandDiamondsWhenNeeded(PsiExpression thenValue, PsiType requiredType) {
if (thenValue instanceof PsiNewExpression) {
if (!PsiDiamondTypeUtil.canChangeContextForDiamond((PsiNewExpression)thenValue, requiredType)) {
return PsiDiamondTypeUtil.expandTopLevelDiamondsInside(thenValue);
}
}
return thenValue;
}
项目:intellij-ce-playground
文件:AnonymousToInnerHandler.java
private void doRefactoring() throws IncorrectOperationException {
calculateTypeParametersToCreate();
PsiClass aClass = createClass(myNewClassName);
myTargetClass.add(aClass);
PsiNewExpression newExpr = (PsiNewExpression) myAnonClass.getParent();
@NonNls StringBuffer buf = new StringBuffer();
buf.append("new ");
buf.append(aClass.getName());
if (!myTypeParametersToCreate.isEmpty()) {
buf.append("<");
int idx = 0;
//noinspection ForLoopThatDoesntUseLoopVariable
for (Iterator<PsiTypeParameter> it = myTypeParametersToCreate.iterator(); it.hasNext(); idx++) {
if (idx > 0) buf.append(", ");
String typeParamName = it.next().getName();
buf.append(typeParamName);
}
buf.append(">");
}
buf.append("(");
boolean isFirstParameter = true;
for (VariableInfo info : myVariableInfos) {
if (info.passAsParameter) {
if (isFirstParameter) {
isFirstParameter = false;
}
else {
buf.append(",");
}
buf.append(info.variable.getName());
}
}
buf.append(")");
PsiNewExpression newClassExpression =
(PsiNewExpression)JavaPsiFacade.getInstance(myManager.getProject()).getElementFactory().createExpressionFromText(buf.toString(), null);
newClassExpression = (PsiNewExpression)newExpr.replace(newClassExpression);
if (PsiDiamondTypeUtil.canCollapseToDiamond(newClassExpression, newClassExpression, newClassExpression.getType())) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(newClassExpression.getClassOrAnonymousClassReference().getParameterList());
}
}
项目:intellij-ce-playground
文件:ReplaceDiamondWithExplicitTypeArgumentsIntention.java
@Override
protected void processIntention(@NotNull PsiElement element)
throws IncorrectOperationException {
PsiDiamondTypeUtil.replaceDiamondWithExplicitTypes(element);
}
项目:tools-idea
文件:ExplicitTypeCanBeDiamondInspection.java
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(descriptor.getPsiElement());
}
项目:tools-idea
文件:ChangeNewOperatorTypeFix.java
private static void changeNewOperatorType(PsiNewExpression originalExpression, PsiType toType, final Editor editor) throws IncorrectOperationException {
PsiNewExpression newExpression;
PsiElementFactory factory = JavaPsiFacade.getInstance(originalExpression.getProject()).getElementFactory();
int caretOffset;
TextRange selection;
if (toType instanceof PsiArrayType) {
final PsiExpression[] originalExpressionArrayDimensions = originalExpression.getArrayDimensions();
caretOffset = 0;
@NonNls String text = "new " + toType.getDeepComponentType().getCanonicalText() + "[";
if (originalExpressionArrayDimensions.length > 0) {
text += originalExpressionArrayDimensions[0].getText();
}
else {
text += "0";
caretOffset = -2;
}
text += "]";
for (int i = 1; i < toType.getArrayDimensions(); i++) {
text += "[";
String arrayDimension = "";
if (originalExpressionArrayDimensions.length > i) {
arrayDimension = originalExpressionArrayDimensions[i].getText();
text += arrayDimension;
}
text += "]";
if (caretOffset < 0) {
caretOffset -= arrayDimension.length() + 2;
}
}
newExpression = (PsiNewExpression)factory.createExpressionFromText(text, originalExpression);
if (caretOffset < 0) {
selection = new TextRange(caretOffset, caretOffset+1);
} else {
selection = null;
}
}
else {
final PsiAnonymousClass anonymousClass = originalExpression.getAnonymousClass();
newExpression = (PsiNewExpression)factory.createExpressionFromText("new " + toType.getCanonicalText() + "()" + (anonymousClass != null ? "{}" : ""), originalExpression);
PsiExpressionList argumentList = originalExpression.getArgumentList();
if (argumentList == null) return;
newExpression.getArgumentList().replace(argumentList);
if (anonymousClass == null) { //just to prevent useless inference
if (PsiDiamondTypeUtil.canCollapseToDiamond(newExpression, originalExpression, toType)) {
final PsiElement paramList = PsiDiamondTypeUtil.replaceExplicitWithDiamond(newExpression.getClassOrAnonymousClassReference().getParameterList());
newExpression = PsiTreeUtil.getParentOfType(paramList, PsiNewExpression.class);
}
}
if (anonymousClass != null) {
PsiAnonymousClass newAnonymousClass = newExpression.getAnonymousClass();
final PsiElement childInside = anonymousClass.getLBrace().getNextSibling();
if (childInside != null) {
newAnonymousClass.addRange(childInside, anonymousClass.getRBrace().getPrevSibling());
}
}
selection = null;
caretOffset = -1;
}
PsiElement element = originalExpression.replace(newExpression);
editor.getCaretModel().moveToOffset(element.getTextRange().getEndOffset() + caretOffset);
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
if (selection != null) {
selection = selection.shiftRight(element.getTextRange().getEndOffset());
editor.getSelectionModel().setSelection(selection.getStartOffset(), selection.getEndOffset());
}
}
项目:tools-idea
文件:AnonymousToInnerHandler.java
private void doRefactoring() throws IncorrectOperationException {
calculateTypeParametersToCreate();
PsiClass aClass = createClass(myNewClassName);
myTargetClass.add(aClass);
PsiNewExpression newExpr = (PsiNewExpression) myAnonClass.getParent();
@NonNls StringBuffer buf = new StringBuffer();
buf.append("new ");
buf.append(aClass.getName());
if (!myTypeParametersToCreate.isEmpty()) {
buf.append("<");
int idx = 0;
//noinspection ForLoopThatDoesntUseLoopVariable
for (Iterator<PsiTypeParameter> it = myTypeParametersToCreate.iterator(); it.hasNext(); idx++) {
if (idx > 0) buf.append(", ");
String typeParamName = it.next().getName();
buf.append(typeParamName);
}
buf.append(">");
}
buf.append("(");
boolean isFirstParameter = true;
for (VariableInfo info : myVariableInfos) {
if (info.passAsParameter) {
if (isFirstParameter) {
isFirstParameter = false;
}
else {
buf.append(",");
}
buf.append(info.variable.getName());
}
}
buf.append(")");
PsiNewExpression newClassExpression =
(PsiNewExpression)JavaPsiFacade.getInstance(myManager.getProject()).getElementFactory().createExpressionFromText(buf.toString(), null);
newClassExpression = (PsiNewExpression)newExpr.replace(newClassExpression);
if (PsiDiamondTypeUtil.canCollapseToDiamond(newClassExpression, newClassExpression, newClassExpression.getType())) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(newClassExpression.getClassOrAnonymousClassReference().getParameterList());
}
}
项目:tools-idea
文件:ReplaceDiamondWithExplicitTypeArgumentsIntention.java
@Override
protected void processIntention(@NotNull PsiElement element)
throws IncorrectOperationException {
PsiDiamondTypeUtil.replaceDiamondWithExplicitTypes(element);
}
项目:consulo-java
文件:ExplicitTypeCanBeDiamondInspection.java
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(descriptor.getPsiElement());
}
项目:consulo-java
文件:AnonymousToInnerHandler.java
private void doRefactoring() throws IncorrectOperationException {
calculateTypeParametersToCreate();
PsiClass aClass = createClass(myNewClassName);
myTargetClass.add(aClass);
PsiNewExpression newExpr = (PsiNewExpression) myAnonClass.getParent();
@NonNls StringBuffer buf = new StringBuffer();
buf.append("new ");
buf.append(aClass.getName());
if (!myTypeParametersToCreate.isEmpty()) {
buf.append("<");
int idx = 0;
//noinspection ForLoopThatDoesntUseLoopVariable
for (Iterator<PsiTypeParameter> it = myTypeParametersToCreate.iterator(); it.hasNext(); idx++) {
if (idx > 0) buf.append(", ");
String typeParamName = it.next().getName();
buf.append(typeParamName);
}
buf.append(">");
}
buf.append("(");
boolean isFirstParameter = true;
for (VariableInfo info : myVariableInfos) {
if (info.passAsParameter) {
if (isFirstParameter) {
isFirstParameter = false;
}
else {
buf.append(",");
}
buf.append(info.variable.getName());
}
}
buf.append(")");
PsiNewExpression newClassExpression =
(PsiNewExpression)JavaPsiFacade.getInstance(myManager.getProject()).getElementFactory().createExpressionFromText(buf.toString(), null);
newClassExpression = (PsiNewExpression)newExpr.replace(newClassExpression);
if (PsiDiamondTypeUtil.canCollapseToDiamond(newClassExpression, newClassExpression, newClassExpression.getType())) {
PsiDiamondTypeUtil.replaceExplicitWithDiamond(newClassExpression.getClassOrAnonymousClassReference().getParameterList());
}
}
项目:consulo-java
文件:ReplaceDiamondWithExplicitTypeArgumentsIntention.java
@Override
protected void processIntention(@NotNull PsiElement element)
throws IncorrectOperationException {
PsiDiamondTypeUtil.replaceDiamondWithExplicitTypes(element);
}