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;
+ }
+
}