blob: 1877bad16b6bcd746e51e21930d43230cfb9c53d [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.dev.javac;
import com.google.gwt.core.ext.TreeLogger.HelpInfo;
import com.google.gwt.dev.jjs.SourceInfo;
import org.eclipse.jdt.core.compiler.IProblem;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
import org.eclipse.jdt.internal.compiler.problem.DefaultProblem;
import org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
import org.eclipse.jdt.internal.compiler.util.Util;
/**
* A problem specific to compiling for GWT.
*/
public class GWTProblem extends DefaultProblem {
public static void recordError(ASTNode node, CompilationUnitDeclaration cud,
String message, HelpInfo helpInfo) {
recordProblem(node, cud.compilationResult(), message, helpInfo,
ProblemSeverities.Error);
}
public static void recordError(SourceInfo info, int startColumn,
CompilationResult compResult, String message, HelpInfo helpInfo) {
recordProblem(info, startColumn, compResult, message, helpInfo,
ProblemSeverities.Error);
}
public static void recordProblem(ASTNode node, CompilationResult compResult,
String message, HelpInfo helpInfo, int problemSeverity) {
int[] lineEnds = compResult.getLineSeparatorPositions();
int startLine = Util.getLineNumber(node.sourceStart(), lineEnds, 0,
lineEnds.length - 1);
int startColumn = Util.searchColumnNumber(lineEnds, startLine,
node.sourceStart());
recordProblem(node.sourceStart(), node.sourceEnd(), startLine, startColumn,
compResult, message, helpInfo, problemSeverity);
}
public static void recordProblem(SourceInfo info, int startColumn,
CompilationResult compResult, String message, HelpInfo helpInfo,
int problemSeverity) {
recordProblem(info.getStartPos(), info.getEndPos(), info.getStartLine(),
startColumn, compResult, message, helpInfo, problemSeverity);
}
private static void recordProblem(int startPos, int endPos, int startLine,
int startColumn, CompilationResult compResult, String message,
HelpInfo helpInfo, int problemSeverity) {
DefaultProblem problem = new GWTProblem(compResult.fileName, startPos,
endPos, startLine, startColumn, message, helpInfo, problemSeverity);
compResult.record(problem, null);
}
private HelpInfo helpInfo;
private GWTProblem(char[] originatingFileName, int startPosition,
int endPosition, int line, int column, String message, HelpInfo helpInfo,
int problemSeverity) {
super(originatingFileName, message, IProblem.ExternalProblemNotFixable,
null, problemSeverity, startPosition, endPosition, line, column);
this.helpInfo = helpInfo;
}
public HelpInfo getHelpInfo() {
return helpInfo;
}
}