import net.sourceforge.phpdt.internal.compiler.CompilationResult;
import net.sourceforge.phpdt.internal.compiler.IErrorHandlingPolicy;
import net.sourceforge.phpdt.internal.compiler.IProblemFactory;
+import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions;
import net.sourceforge.phpdt.internal.compiler.impl.Constant;
import net.sourceforge.phpdt.internal.compiler.impl.ReferenceContext;
import net.sourceforge.phpdt.internal.compiler.lookup.Binding;
-import net.sourceforge.phpdt.internal.compiler.lookup.CompilerModifiers;
import net.sourceforge.phpdt.internal.compiler.lookup.FieldBinding;
import net.sourceforge.phpdt.internal.compiler.lookup.LocalVariableBinding;
import net.sourceforge.phpdt.internal.compiler.lookup.MethodBinding;
public class ProblemReporter extends ProblemHandler implements ProblemReasons {
public ReferenceContext referenceContext;
public ProblemReporter(IErrorHandlingPolicy policy,
+ CompilerOptions options,
IProblemFactory problemFactory) {
- //CompilerOptions options, IProblemFactory problemFactory) {
- super(policy, problemFactory);//options, problemFactory);
+
+ // IProblemFactory problemFactory) {
+ super(policy, options, problemFactory); //), problemFactory);
}
public void abortDueToInternalError(String errorMessage) {
String[] arguments = new String[]{errorMessage};
| Abort, start, end);
}
/*
- * Given the current configuration, answers which category the problem falls
- * into: Error | Warning | Ignore
+ * Given the current configuration, answers which category the problem
+ * falls into:
+ * Error | Warning | Ignore
*/
- //public int computeSeverity(int problemId){
- //
- // // severity can have been preset on the problem
- //// if ((problem.severity & Fatal) != 0){
- //// return Error;
- //// }
- //
- // // if not then check whether it is a configurable problem
- // int errorThreshold = options.errorThreshold;
- // int warningThreshold = options.warningThreshold;
- //
- // switch(problemId){
- //
- // case IProblem.UnreachableCatch :
- // case IProblem.CodeCannotBeReached :
- // if ((errorThreshold & CompilerOptions.UnreachableCode) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.UnreachableCode) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.MaskedCatch :
- // if ((errorThreshold & CompilerOptions.MaskedCatchBlock) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.MaskedCatchBlock) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- ///*
- // case Never Used :
- // if ((errorThreshold & ParsingOptionalError) != 0){
- // return Error;
- // }
- // if ((warningThreshold & ParsingOptionalError) != 0){
- // return Warning;
- // }
- // return Ignore;
- //*/
- // case IProblem.ImportNotFound :
- // case IProblem.ImportNotVisible :
- // case IProblem.ImportAmbiguous :
- // case IProblem.ImportInternalNameProvided :
- // case IProblem.ImportInheritedNameHidesEnclosingName :
- // case IProblem.DuplicateImport :
- // case IProblem.ConflictingImport :
- // case IProblem.CannotImportPackage :
- // if ((errorThreshold & CompilerOptions.ImportProblem) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.ImportProblem) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.UnusedImport :
- // // if import problem are disabled, then ignore
- // if ((errorThreshold & CompilerOptions.ImportProblem) == 0
- // && (warningThreshold & CompilerOptions.ImportProblem) == 0){
- // return Ignore;
- // }
- // if ((errorThreshold & CompilerOptions.UnusedImport) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.UnusedImport) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.MethodButWithConstructorName :
- // if ((errorThreshold & CompilerOptions.MethodWithConstructorName) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.MethodWithConstructorName) !=
- // 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.OverridingNonVisibleMethod :
- // if ((errorThreshold & CompilerOptions.OverriddenPackageDefaultMethod) !=
- // 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.OverriddenPackageDefaultMethod)
- // != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.IncompatibleReturnTypeForNonInheritedInterfaceMethod :
- // case
- // IProblem.IncompatibleExceptionInThrowsClauseForNonInheritedInterfaceMethod
- // :
- // if ((errorThreshold &
- // CompilerOptions.IncompatibleNonInheritedInterfaceMethod) != 0){
- // return Error;
- // }
- // if ((warningThreshold &
- // CompilerOptions.IncompatibleNonInheritedInterfaceMethod) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.OverridingDeprecatedMethod :
- // case IProblem.UsingDeprecatedType :
- // case IProblem.UsingDeprecatedMethod :
- // case IProblem.UsingDeprecatedConstructor :
- // case IProblem.UsingDeprecatedField :
- // if ((errorThreshold & CompilerOptions.UsingDeprecatedAPI) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.UsingDeprecatedAPI) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.LocalVariableIsNeverUsed :
- // if ((errorThreshold & CompilerOptions.UnusedLocalVariable) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.UnusedLocalVariable) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.ArgumentIsNeverUsed :
- // if ((errorThreshold & CompilerOptions.UnusedArgument) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.UnusedArgument) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.NoImplicitStringConversionForCharArrayExpression :
- // if ((errorThreshold & CompilerOptions.NoImplicitStringConversion) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.NoImplicitStringConversion) !=
- // 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.NeedToEmulateFieldReadAccess :
- // case IProblem.NeedToEmulateFieldWriteAccess :
- // case IProblem.NeedToEmulateMethodAccess :
- // case IProblem.NeedToEmulateConstructorAccess :
- // if ((errorThreshold & CompilerOptions.AccessEmulation) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.AccessEmulation) != 0){
- // return Warning;
- // }
- // return Ignore;
- // case IProblem.NonExternalizedStringLiteral :
- // if ((errorThreshold & CompilerOptions.NonExternalizedString) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.NonExternalizedString) != 0){
- // return Warning;
- // }
- // return Ignore;
- // case IProblem.UseAssertAsAnIdentifier :
- // if ((errorThreshold & CompilerOptions.AssertUsedAsAnIdentifier) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.AssertUsedAsAnIdentifier) != 0){
- // return Warning;
- // }
- // return Ignore;
- // case IProblem.NonStaticAccessToStaticMethod :
- // case IProblem.NonStaticAccessToStaticField :
- // if ((errorThreshold & CompilerOptions.StaticAccessReceiver) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.StaticAccessReceiver) != 0){
- // return Warning;
- // }
- // return Ignore;
- // case IProblem.AssignmentHasNoEffect:
- // if ((errorThreshold & CompilerOptions.NoEffectAssignment) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.NoEffectAssignment) != 0){
- // return Warning;
- // }
- // return Ignore;
- // case IProblem.UnusedPrivateConstructor:
- // case IProblem.UnusedPrivateMethod:
- // case IProblem.UnusedPrivateField:
- // case IProblem.UnusedPrivateType:
- // if ((errorThreshold & CompilerOptions.UnusedPrivateMember) != 0){
- // return Error;
- // }
- // if ((warningThreshold & CompilerOptions.UnusedPrivateMember) != 0){
- // return Warning;
- // }
- // return Ignore;
- //
- // case IProblem.Task :
- // return Warning;
- // default:
- // return Error;
- // }
- //}
+ public int computeSeverity(int problemId){
+
+ // severity can have been preset on the problem
+// if ((problem.severity & Fatal) != 0){
+// return Error;
+// }
+
+ // if not then check whether it is a configurable problem
+ switch(problemId){
+ case IProblem.PHPVarDeprecatedWarning :
+ return this.options.getSeverity(CompilerOptions.PHPVarDeprecatedWarning);
+
+ case IProblem.MaskedCatch :
+ return this.options.getSeverity(CompilerOptions.MaskedCatchBlock);
+
+ case IProblem.UnusedImport :
+ return this.options.getSeverity(CompilerOptions.UnusedImport);
+
+ case IProblem.MethodButWithConstructorName :
+ return this.options.getSeverity(CompilerOptions.MethodWithConstructorName);
+
+ case IProblem.OverridingNonVisibleMethod :
+ return this.options.getSeverity(CompilerOptions.OverriddenPackageDefaultMethod);
+
+ case IProblem.IncompatibleReturnTypeForNonInheritedInterfaceMethod :
+ case IProblem.IncompatibleExceptionInThrowsClauseForNonInheritedInterfaceMethod :
+ return this.options.getSeverity(CompilerOptions.IncompatibleNonInheritedInterfaceMethod);
+
+ case IProblem.OverridingDeprecatedMethod :
+ case IProblem.UsingDeprecatedType :
+ case IProblem.UsingDeprecatedMethod :
+ case IProblem.UsingDeprecatedConstructor :
+ case IProblem.UsingDeprecatedField :
+ return this.options.getSeverity(CompilerOptions.UsingDeprecatedAPI);
+
+ case IProblem.LocalVariableIsNeverUsed :
+ return this.options.getSeverity(CompilerOptions.UnusedLocalVariable);
+
+ case IProblem.ArgumentIsNeverUsed :
+ return this.options.getSeverity(CompilerOptions.UnusedArgument);
+
+ case IProblem.NoImplicitStringConversionForCharArrayExpression :
+ return this.options.getSeverity(CompilerOptions.NoImplicitStringConversion);
+
+ case IProblem.NeedToEmulateFieldReadAccess :
+ case IProblem.NeedToEmulateFieldWriteAccess :
+ case IProblem.NeedToEmulateMethodAccess :
+ case IProblem.NeedToEmulateConstructorAccess :
+ return this.options.getSeverity(CompilerOptions.AccessEmulation);
+
+ case IProblem.NonExternalizedStringLiteral :
+ return this.options.getSeverity(CompilerOptions.NonExternalizedString);
+
+ case IProblem.UseAssertAsAnIdentifier :
+ return this.options.getSeverity(CompilerOptions.AssertUsedAsAnIdentifier);
+
+ case IProblem.NonStaticAccessToStaticMethod :
+ case IProblem.NonStaticAccessToStaticField :
+ return this.options.getSeverity(CompilerOptions.NonStaticAccessToStatic);
+
+// case IProblem.IndirectAccessToStaticMethod :
+// case IProblem.IndirectAccessToStaticField :
+// case IProblem.IndirectAccessToStaticType :
+// return this.options.getSeverity(CompilerOptions.IndirectStaticAccess);
+
+ case IProblem.AssignmentHasNoEffect:
+ return this.options.getSeverity(CompilerOptions.NoEffectAssignment);
+
+ case IProblem.UnusedPrivateConstructor:
+ case IProblem.UnusedPrivateMethod:
+ case IProblem.UnusedPrivateField:
+ case IProblem.UnusedPrivateType:
+ return this.options.getSeverity(CompilerOptions.UnusedPrivateMember);
+
+ case IProblem.Task :
+ return Warning;
+
+// case IProblem.LocalVariableHidingLocalVariable:
+// case IProblem.LocalVariableHidingField:
+// case IProblem.ArgumentHidingLocalVariable:
+// case IProblem.ArgumentHidingField:
+// return this.options.getSeverity(CompilerOptions.LocalVariableHiding);
+
+// case IProblem.FieldHidingLocalVariable:
+// case IProblem.FieldHidingField:
+// return this.options.getSeverity(CompilerOptions.FieldHiding);
+
+// case IProblem.PossibleAccidentalBooleanAssignment:
+// return this.options.getSeverity(CompilerOptions.AccidentalBooleanAssign);
+
+// case IProblem.SuperfluousSemicolon:
+// return this.options.getSeverity(CompilerOptions.SuperfluousSemicolon);
+//
+// case IProblem.UndocumentedEmptyBlock:
+// return this.options.getSeverity(CompilerOptions.UndocumentedEmptyBlock);
+//
+// case IProblem.UnnecessaryCast:
+// case IProblem.UnnecessaryArgumentCast:
+// case IProblem.UnnecessaryInstanceof:
+// return this.options.getSeverity(CompilerOptions.UnnecessaryTypeCheck);
+//
+// case IProblem.FinallyMustCompleteNormally:
+// return this.options.getSeverity(CompilerOptions.FinallyBlockNotCompleting);
+//
+// case IProblem.UnusedMethodDeclaredThrownException:
+// case IProblem.UnusedConstructorDeclaredThrownException:
+// return this.options.getSeverity(CompilerOptions.UnusedDeclaredThrownException);
+//
+// case IProblem.UnqualifiedFieldAccess:
+// return this.options.getSeverity(CompilerOptions.UnqualifiedFieldAccess);
+
+ /*
+ * Javadoc syntax errors
+ */
+ // Javadoc explicit IDs
+// case IProblem.JavadocUnexpectedTag:
+// case IProblem.JavadocDuplicateReturnTag:
+// case IProblem.JavadocInvalidThrowsClass:
+// case IProblem.JavadocInvalidSeeReference:
+// case IProblem.JavadocInvalidSeeHref:
+// case IProblem.JavadocInvalidSeeArgs:
+// case IProblem.JavadocInvalidTag:
+// return this.options.getSeverity(CompilerOptions.InvalidJavadoc);
+
+ /*
+ * Javadoc tags resolved references errors
+ */
+// case IProblem.JavadocInvalidParamName:
+// case IProblem.JavadocDuplicateParamName:
+// case IProblem.JavadocMissingParamName:
+// case IProblem.JavadocInvalidThrowsClassName:
+// case IProblem.JavadocDuplicateThrowsClassName:
+// case IProblem.JavadocMissingThrowsClassName:
+// case IProblem.JavadocMissingSeeReference:
+// case IProblem.JavadocUsingDeprecatedField:
+// case IProblem.JavadocUsingDeprecatedConstructor:
+// case IProblem.JavadocUsingDeprecatedMethod:
+// case IProblem.JavadocUsingDeprecatedType:
+// case IProblem.JavadocUndefinedField:
+// case IProblem.JavadocNotVisibleField:
+// case IProblem.JavadocAmbiguousField:
+// case IProblem.JavadocUndefinedConstructor:
+// case IProblem.JavadocNotVisibleConstructor:
+// case IProblem.JavadocAmbiguousConstructor:
+// case IProblem.JavadocUndefinedMethod:
+// case IProblem.JavadocNotVisibleMethod:
+// case IProblem.JavadocAmbiguousMethod:
+// case IProblem.JavadocParameterMismatch:
+// case IProblem.JavadocUndefinedType:
+// case IProblem.JavadocNotVisibleType:
+// case IProblem.JavadocAmbiguousType:
+// case IProblem.JavadocInternalTypeNameProvided:
+// case IProblem.JavadocNoMessageSendOnArrayType:
+// case IProblem.JavadocNoMessageSendOnBaseType:
+// if (!this.options.reportInvalidJavadocTags)
+// return ProblemSeverities.Ignore;
+// else
+// return this.options.getSeverity(CompilerOptions.InvalidJavadoc);
+
+ /*
+ * Javadoc missing tags errors
+ */
+// case IProblem.JavadocMissingParamTag:
+// case IProblem.JavadocMissingReturnTag:
+// case IProblem.JavadocMissingThrowsTag:
+// return this.options.getSeverity(CompilerOptions.MissingJavadocTags);
+
+ /*
+ * Missing Javadoc errors
+ */
+// case IProblem.JavadocMissing:
+// return this.options.getSeverity(CompilerOptions.MissingJavadocComments);
+
+ // by default problems are errors.
+ default:
+ return Error;
+ }
+ }
//public void conditionalArgumentsIncompatibleTypes(ConditionalExpression
// expression, TypeBinding trueType, TypeBinding falseType) {
// this.handle(
// case Scanner.TokenNamestrictfp:
// case Scanner.TokenNamesynchronized:
case Scanner.TokenNametry :
- case Scanner.TokenNamethis :
+// case Scanner.TokenNamethis :
// case Scanner.TokenNametrue :
case Scanner.TokenNamethrow :
// case Scanner.TokenNamethrows:
public void phpVarDeprecatedWarning(
int problemStartPosition, int problemEndPosition,
ReferenceContext context, CompilationResult compilationResult) {
+ if (computeSeverity(IProblem.PHPVarDeprecatedWarning) == Ignore)
+ return;
this.handle(IProblem.PHPVarDeprecatedWarning, NoArgument, new String[]{},
problemStartPosition, problemEndPosition, context, compilationResult);
}