X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblem.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblem.java deleted file mode 100644 index 9e433d3..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/problem/DefaultProblem.java +++ /dev/null @@ -1,249 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM Corporation - initial API and implementation - ******************************************************************************/ -package net.sourceforge.phpdt.internal.compiler.problem; - -import net.sourceforge.phpdt.core.compiler.IProblem; -import net.sourceforge.phpdt.internal.compiler.env.ICompilationUnit; -import net.sourceforge.phpdt.internal.compiler.util.Util; - -public class DefaultProblem implements ProblemSeverities, IProblem { - - private char[] fileName; - private int id; - private int startPosition, endPosition, line; - private int severity; - private String[] arguments; - private String message; - - public DefaultProblem( - char[] originatingFileName, - String message, - int id, - String[] stringArguments, - int severity, - int startPosition, - int endPosition, - int line) { - - this.fileName = originatingFileName; - this.message = message; - this.id = id; - this.arguments = stringArguments; - this.severity = severity; - this.startPosition = startPosition; - this.endPosition = endPosition; - this.line = line; - } - - public String errorReportSource(ICompilationUnit compilationUnit) { - //extra from the source the innacurate token - //and "highlight" it using some underneath ^^^^^ - //put some context around too. - - //this code assumes that the font used in the console is fixed size - - //sanity ..... - if ((startPosition > endPosition) - || ((startPosition <= 0) && (endPosition <= 0))) - return Util.bind("problem.noSourceInformation"); //$NON-NLS-1$ - - final char SPACE = '\u0020'; - final char MARK = '^'; - final char TAB = '\t'; - char[] source = compilationUnit.getContents(); - //the next code tries to underline the token..... - //it assumes (for a good display) that token source does not - //contain any \r \n. This is false on statements ! - //(the code still works but the display is not optimal !) - - //compute the how-much-char we are displaying around the inaccurate token - int begin = startPosition >= source.length ? source.length - 1 : startPosition; - int relativeStart = 0; - int end = endPosition >= source.length ? source.length - 1 : endPosition; - int relativeEnd = 0; - label : for (relativeStart = 0;; relativeStart++) { - if (begin == 0) - break label; - if ((source[begin - 1] == '\n') || (source[begin - 1] == '\r')) - break label; - begin--; - } - label : for (relativeEnd = 0;; relativeEnd++) { - if ((end + 1) >= source.length) - break label; - if ((source[end + 1] == '\r') || (source[end + 1] == '\n')) { - break label; - } - end++; - } - //extract the message form the source - char[] extract = new char[end - begin + 1]; - System.arraycopy(source, begin, extract, 0, extract.length); - char c; - //remove all SPACE and TAB that begin the error message... - int trimLeftIndex = 0; - while (((c = extract[trimLeftIndex++]) == TAB) || (c == SPACE)) { - }; - System.arraycopy( - extract, - trimLeftIndex - 1, - extract = new char[extract.length - trimLeftIndex + 1], - 0, - extract.length); - relativeStart -= trimLeftIndex; - //buffer spaces and tabs in order to reach the error position - int pos = 0; - char[] underneath = new char[extract.length]; // can't be bigger - for (int i = 0; i <= relativeStart; i++) { - if (extract[i] == TAB) { - underneath[pos++] = TAB; - } else { - underneath[pos++] = SPACE; - } - } - //mark the error position - for (int i = startPosition; - i <= (endPosition >= source.length ? source.length - 1 : endPosition); - i++) - underneath[pos++] = MARK; - //resize underneathto remove 'null' chars - System.arraycopy(underneath, 0, underneath = new char[pos], 0, pos); - - return " " + Util.bind("problem.atLine", String.valueOf(line)) //$NON-NLS-2$ //$NON-NLS-1$ - + "\n\t" + new String(extract) + "\n\t" + new String(underneath); //$NON-NLS-2$ //$NON-NLS-1$ - } - - /** - * Answer back the original arguments recorded into the problem. - * @return java.lang.String[] - */ - public String[] getArguments() { - - return arguments; - } - - /** - * Answer the type of problem. - * @see org.eclipse.jdt.core.compiler.IProblem#getID() - * @return int - */ - public int getID() { - - return id; - } - - /** - * Answer a localized, human-readable message string which describes the problem. - * @return java.lang.String - */ - public String getMessage() { - - return message; - } - - /** - * Answer the file name in which the problem was found. - * @return char[] - */ - public char[] getOriginatingFileName() { - - return fileName; - } - - /** - * Answer the end position of the problem (inclusive), or -1 if unknown. - * @return int - */ - public int getSourceEnd() { - - return endPosition; - } - - /** - * Answer the line number in source where the problem begins. - * @return int - */ - public int getSourceLineNumber() { - - return line; - } - - /** - * Answer the start position of the problem (inclusive), or -1 if unknown. - * @return int - */ - public int getSourceStart() { - - return startPosition; - } - - /* - * Helper method: checks the severity to see if the Error bit is set. - * @return boolean - */ - public boolean isError() { - - return (severity & ProblemSeverities.Error) != 0; - } - - /* - * Helper method: checks the severity to see if the Error bit is not set. - * @return boolean - */ - public boolean isWarning() { - - return (severity & ProblemSeverities.Error) == 0; - } - - /** - * Set the end position of the problem (inclusive), or -1 if unknown. - * - * Used for shifting problem positions. - * @param sourceEnd the new value of the sourceEnd of the receiver - */ - public void setSourceEnd(int sourceEnd) { - - endPosition = sourceEnd; - } - - /** - * Set the line number in source where the problem begins. - * @param lineNumber the new value of the line number of the receiver - */ - public void setSourceLineNumber(int lineNumber) { - - line = lineNumber; - } - - /** - * Set the start position of the problem (inclusive), or -1 if unknown. - * - * Used for shifting problem positions. - * @param sourceStart the new value of the source start position of the receiver - */ - public void setSourceStart(int sourceStart) { - - startPosition = sourceStart; - } - - public String toString() { - - String s = "Pb(" + (id & IgnoreCategoriesMask) + ") "; //$NON-NLS-1$ //$NON-NLS-2$ - if (message != null) { - s += message; - } else { - if (arguments != null) - for (int i = 0; i < arguments.length; i++) - s += " " + arguments[i]; //$NON-NLS-1$ - } - return s; - } -} \ No newline at end of file