diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java index cca9553529..dc110cf1c1 100644 --- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java +++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java @@ -33,6 +33,7 @@ import org.eclipse.debug.ui.IValueDetailListener; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.compiler.IProblem; import org.eclipse.jdt.debug.core.IEvaluationRunnable; import org.eclipse.jdt.debug.core.IJavaArray; import org.eclipse.jdt.debug.core.IJavaArrayType; @@ -466,6 +467,17 @@ private Expression getCompiledExpression(IJavaObject javaObject, IJavaDebugTarge .getCompiledExpression(snippet, javaObject); if (res != null) { Expression exp = new Expression(res, evaluationEngine); + if (exp.getExpression().hasErrors()) { + boolean hasModuleError = false; + for (int prblemID : exp.getExpression().getProblemIDs()) { + if (prblemID == IProblem.ConflictingPackageFromModules || prblemID == IProblem.ConflictingPackageFromOtherModules) { + hasModuleError = true; + } + } + if (hasModuleError) { + return null; + } + } fCacheMap.put(key, exp); return exp; } diff --git a/org.eclipse.jdt.debug/META-INF/MANIFEST.MF b/org.eclipse.jdt.debug/META-INF/MANIFEST.MF index 2c2f6a1f1e..1a6f573b13 100644 --- a/org.eclipse.jdt.debug/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.debug/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.debug; singleton:=true -Bundle-Version: 3.23.100.qualifier +Bundle-Version: 3.24.0.qualifier Bundle-ClassPath: jdimodel.jar Bundle-Activator: org.eclipse.jdt.internal.debug.core.JDIDebugPlugin Bundle-Vendor: %providerName diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/debug/eval/ICompiledExpression.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/debug/eval/ICompiledExpression.java index ce05640074..2b66ac5597 100644 --- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/debug/eval/ICompiledExpression.java +++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/debug/eval/ICompiledExpression.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2011 IBM Corporation and others. + * Copyright (c) 2000, 2025 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -13,6 +13,8 @@ *******************************************************************************/ package org.eclipse.jdt.debug.eval; +import java.util.List; + import org.eclipse.jdt.core.dom.Message; /** @@ -62,4 +64,12 @@ public interface ICompiledExpression { */ public String[] getErrorMessages(); + /** + * Returns the list of IProblem id's of the compiled expression + * + * @return the list of IProblem id's of the compiled expression + * @since 3.24 + */ + public List getProblemIDs(); + } diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTEvaluationEngine.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTEvaluationEngine.java index 21c2a7caab..672e0c9740 100644 --- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTEvaluationEngine.java +++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTEvaluationEngine.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2024 IBM Corporation and others. + * Copyright (c) 2000, 2025 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -630,6 +630,7 @@ private ICompiledExpression createExpressionFromAST(String snippet, EvaluationSo DebugPlugin.log(new Status(IStatus.WARNING, DebugPlugin.getUniqueIdentifier(), "Compile error during code evaluation: " //$NON-NLS-1$ + problem.getMessage())); } + errorSequence.addProblemID(problemId); } } if (snippetError || runMethodError) { diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/InstructionSequence.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/InstructionSequence.java index 750c7dc8b6..eb54e7bb69 100644 --- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/InstructionSequence.java +++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/InstructionSequence.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2015 IBM Corporation and others. + * Copyright (c) 2000, 2025 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -30,11 +30,13 @@ public class InstructionSequence implements ICompiledExpression { private final List fErrors; private final String fSnippet; private CoreException fException; + private final List fProblemIDs; public InstructionSequence(String snippet) { fInstructions = new ArrayList<>(10); fErrors = new ArrayList<>(); fSnippet = snippet; + fProblemIDs = new ArrayList<>(); } /** @@ -147,4 +149,20 @@ public Instruction get(int address) { public int getEnd() { return fInstructions.size() - 1; } + + /** + * Adds the IProblem id of the error. + */ + public void addProblemID(int probID) { + fProblemIDs.add(probID); + } + + /** + * @see org.eclipse.jdt.debug.eval.ICompiledExpression#getProblemIDs() + */ + @Override + public List getProblemIDs() { + return fProblemIDs; + } + }