Added "Task Tags" functionality (TODO,...)
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / problem / ProblemReporter.java
index 3b07fa2..23f61e3 100644 (file)
@@ -15,10 +15,10 @@ import net.sourceforge.phpdt.core.compiler.InvalidInputException;
 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;
@@ -78,9 +78,11 @@ import net.sourceforge.phpeclipse.internal.compiler.ast.UnaryExpression;
 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};
@@ -361,219 +363,186 @@ public class ProblemReporter extends ProblemHandler implements ProblemReasons {
         | 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.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(