diff options
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/codeInsight')
5 files changed, 35 insertions, 11 deletions
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java b/java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java new file mode 100644 index 000000000000..7678390d0356 --- /dev/null +++ b/java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java @@ -0,0 +1,13 @@ +package com.intellij.codeInsight; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.psi.PsiClassType; +import com.intellij.psi.PsiElement; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class CustomExceptionHandler { + public static final ExtensionPointName<CustomExceptionHandler> KEY = ExtensionPointName.create("com.intellij.custom.exception.handler"); + + public abstract boolean isHandled(@Nullable PsiElement element, @NotNull PsiClassType exceptionType, PsiElement topElement); +} diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java index 552c7e2d9ff5..bb4e322a2eec 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInsight; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; import com.intellij.psi.controlFlow.*; @@ -675,6 +676,10 @@ public class ExceptionUtil { // exceptions thrown in field initializers should be thrown in all class constructors return areAllConstructorsThrow(aClass, exceptionType); } + } else { + for (CustomExceptionHandler exceptionHandler : Extensions.getExtensions(CustomExceptionHandler.KEY)) { + if (exceptionHandler.isHandled(element, exceptionType, topElement)) return true; + } } return isHandled(parent, exceptionType, topElement); } diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java index 5e008afb4797..e2de5a55e0b3 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java @@ -598,9 +598,15 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem Document document = method.getContainingFile().getViewProvider().getDocument(); PsiCodeBlock body = method.getBody(); - if (body == null || document == null) { + PsiIdentifier nameIdentifier = method.getNameIdentifier(); + if (body == null || document == null || nameIdentifier == null) { return false; } + if (document.getLineNumber(nameIdentifier.getTextRange().getStartOffset()) != + document.getLineNumber(method.getParameterList().getTextRange().getEndOffset())) { + return false; + } + PsiJavaToken lBrace = body.getLBrace(); PsiJavaToken rBrace = body.getRBrace(); PsiStatement[] statements = body.getStatements(); diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java index aca4357f7e49..a8b2b40111ba 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java @@ -39,7 +39,8 @@ public class ParameterNameFoldingManager { Couple.of("first", "last"), Couple.of("first", "second"), Couple.of("from", "to"), - Couple.of("key", "value") + Couple.of("key", "value"), + Couple.of("min", "max") ); private final PsiCallExpression myCallExpression; @@ -58,7 +59,8 @@ public class ParameterNameFoldingManager { if (callArgument instanceof PsiPrefixExpression) { PsiPrefixExpression expr = (PsiPrefixExpression)callArgument; IElementType tokenType = expr.getOperationTokenType(); - return JavaTokenType.MINUS.equals(tokenType) && expr.getOperand() instanceof PsiLiteralExpression; + return (JavaTokenType.MINUS.equals(tokenType) + || JavaTokenType.PLUS.equals(tokenType)) && expr.getOperand() instanceof PsiLiteralExpression; } return false; diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java index f7094421b980..ac2fe33d0e43 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,10 +17,10 @@ package com.intellij.codeInsight.javadoc; import com.intellij.psi.*; import com.intellij.util.ArrayUtil; +import com.intellij.util.ReflectionUtil; import org.jetbrains.annotations.NotNull; import java.awt.*; -import java.lang.reflect.Field; /** * @author spleaner @@ -98,14 +98,12 @@ public class ColorUtil { if (reference != null) { final PsiElement psiElement = reference.resolve(); if (psiElement instanceof PsiField) { - final PsiClass psiClass = ((PsiField) psiElement).getContainingClass(); + PsiField psiField = (PsiField)psiElement; + final PsiClass psiClass = psiField.getContainingClass(); if (psiClass != null && "java.awt.Color".equals(psiClass.getQualifiedName())) { - try { - Field field = Class.forName("java.awt.Color").getField(((PsiField)psiElement).getName()); - final Color c = (Color) field.get(null); + Color c = ReflectionUtil.getField(Color.class, null, Color.class, psiField.getName()); + if (c != null) { buffer.append(generatePreviewHtml(c)); - } catch (Exception e) { - // nothing } } } |