| /* |
| * 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; |
| } |
| } |