Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarin Wright2009-02-06 21:22:35 +0000
committerDarin Wright2009-02-06 21:22:35 +0000
commitc055e11b40b78f9e7299605c89b96f333466eb4e (patch)
treedfb4e6dfac7fdb57e5b094cc19609737604a22a5
parent372f5668f1d195fb4013d16d023816b62fa9521d (diff)
downloadeclipse.jdt.debug-c055e11b40b78f9e7299605c89b96f333466eb4e.tar.gz
eclipse.jdt.debug-c055e11b40b78f9e7299605c89b96f333466eb4e.tar.xz
eclipse.jdt.debug-c055e11b40b78f9e7299605c89b96f333466eb4e.zip
Bug 234425 - Only use relevant compiler options for debug evaluations
-rw-r--r--org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTEvaluationEngine.java8
-rw-r--r--org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java30
2 files changed, 28 insertions, 10 deletions
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 5c9f4b128..0955f1c97 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, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -26,7 +26,6 @@ import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.IDebugEventFilter;
import org.eclipse.debug.core.model.ITerminate;
import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.Signature;
import org.eclipse.jdt.core.compiler.IProblem;
import org.eclipse.jdt.core.dom.AST;
@@ -231,14 +230,11 @@ public class ASTEvaluationEngine implements IAstEvaluationEngine {
private CompilationUnit parseCompilationUnit(char[] source, String unitName, IJavaProject project) {
ASTParser parser = ASTParser.newParser(AST.JLS3);
- String compilerCompliance= project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
parser.setSource(source);
parser.setUnitName(unitName);
parser.setProject(project);
parser.setResolveBindings(true);
- Map options=JavaCore.getDefaultOptions();
- options.put(JavaCore.COMPILER_COMPLIANCE, compilerCompliance);
- options.put(JavaCore.COMPILER_SOURCE, project.getOption(JavaCore.COMPILER_SOURCE, true));
+ Map options=EvaluationSourceGenerator.getCompilerOptions(project);
parser.setCompilerOptions(options);
return (CompilationUnit) parser.createAST(null);
}
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
index 7956a4629..2972bc5e6 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.jdt.internal.debug.eval.ast.engine;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -143,10 +144,8 @@ public class EvaluationSourceGenerator {
private void createEvaluationSourceFromSource(String source, String typeName, int position, boolean createInAStaticMethod, IJavaProject project) throws DebugException {
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(source.toCharArray());
- Map options=JavaCore.getDefaultOptions();
- options.put(JavaCore.COMPILER_COMPLIANCE, project.getOption(JavaCore.COMPILER_COMPLIANCE, true));
+ Map options=getCompilerOptions(project);
String sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
- options.put(JavaCore.COMPILER_SOURCE, sourceLevel);
parser.setCompilerOptions(options);
CompilationUnit unit= (CompilationUnit)parser.createAST(null);
SourceBasedSourceGenerator visitor= new SourceBasedSourceGenerator(unit, typeName, position, createInAStaticMethod, fLocalVariableTypeNames, fLocalVariableNames, fCodeSnippet, sourceLevel);
@@ -167,6 +166,29 @@ public class EvaluationSourceGenerator {
setRunMethodLength(visitor.getRunMethodLength());
}
+ /**
+ * Returns the compiler options used for compiling the expression.
+ * <p>
+ * Turns all errors and warnings into ignore and disables task tags. The customizable set of
+ * compiler options only contains additional Eclipse options. The standard JDK compiler options
+ * can't be changed anyway.
+ *
+ * @param element an element (not the Java model)
+ * @return compiler options
+ */
+ public static Map getCompilerOptions(IJavaProject project) {
+ Map options= project.getOptions(true);
+ for (Iterator iter= options.keySet().iterator(); iter.hasNext();) {
+ String key= (String)iter.next();
+ String value= (String)options.get(key);
+ if (JavaCore.ERROR.equals(value) || JavaCore.WARNING.equals(value)) {
+ options.put(key, JavaCore.IGNORE);
+ }
+ }
+ options.put(JavaCore.COMPILER_TASK_TAGS, ""); //$NON-NLS-1$
+ return options;
+ }
+
private void createEvaluationSourceFromJDIObject(BinaryBasedSourceGenerator objectToEvaluationSourceMapper) {
setCompilationUnitName(objectToEvaluationSourceMapper.getCompilationUnitName());

Back to the top