do not highlight errors in return statements in debugger code fragments

This commit is contained in:
Egor.Ushakov
2016-04-12 18:55:47 +03:00
parent ce793e41f0
commit 978ba17c85
2 changed files with 7 additions and 0 deletions
@@ -18,6 +18,7 @@ package com.intellij.debugger.engine.evaluation;
import com.intellij.codeInsight.completion.CompletionParameters;
import com.intellij.codeInsight.completion.CompletionService;
import com.intellij.codeInsight.completion.JavaCompletionUtil;
import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil;
import com.intellij.debugger.DebuggerManagerEx;
import com.intellij.debugger.codeinsight.RuntimeTypeEvaluator;
import com.intellij.debugger.engine.evaluation.expression.EvaluatorBuilder;
@@ -75,6 +76,7 @@ public class DefaultCodeFragmentFactory extends CodeFragmentFactory {
fragment.setVisibilityChecker(JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE);
//noinspection HardCodedStringLiteral
fragment.putUserData(KEY, "DebuggerComboBoxEditor.IS_DEBUGGER_EDITOR");
fragment.putUserData(HighlightUtil.DISABLE_RETURN_CHECK_IN_CODE_FRAGMENT, true);
fragment.putCopyableUserData(JavaCompletionUtil.DYNAMIC_TYPE_EVALUATOR, new PairFunction<PsiExpression, CompletionParameters, PsiType>() {
public PsiType fun(PsiExpression expression, CompletionParameters parameters) {
if (!RuntimeTypeEvaluator.isSubtypeable(expression)) {
@@ -87,6 +87,8 @@ public class HighlightUtil extends HighlightUtilBase {
@NonNls private static final String SERIAL_PERSISTENT_FIELDS_FIELD_NAME = "serialPersistentFields";
private static final QuickFixFactory QUICK_FIX_FACTORY = QuickFixFactory.getInstance();
public static final Key<Boolean> DISABLE_RETURN_CHECK_IN_CODE_FRAGMENT = Key.create("DISABLE_RETURN_CHECK_IN_CODE_FRAGMENT");
private HighlightUtil() { }
static {
@@ -594,6 +596,9 @@ public class HighlightUtil extends HighlightUtilBase {
}
parent = parent.getParent();
}
if (parent instanceof PsiCodeFragment && parent.getUserData(DISABLE_RETURN_CHECK_IN_CODE_FRAGMENT) != null) {
return null;
}
String description;
HighlightInfo errorResult = null;
if (method == null && lambda != null) {