diff options
author | Darin Wright | 2009-02-06 21:22:35 +0000 |
---|---|---|
committer | Darin Wright | 2009-02-06 21:22:35 +0000 |
commit | c055e11b40b78f9e7299605c89b96f333466eb4e (patch) | |
tree | dfb4e6dfac7fdb57e5b094cc19609737604a22a5 | |
parent | 372f5668f1d195fb4013d16d023816b62fa9521d (diff) | |
download | eclipse.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
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()); |