#-Xlint:ignore,error,warning will set the level for all Xlint warnings. -Xlint, alone, is an abbreviation for
     -Xlint:warning.

     The -Xlintfile:lint.properties allows fine-grained control. In tools.jar, see
     org/aspectj/weaver/XlintDefault.properties for the default behavior and a template to copy. 
### AspectJ-specific messages 
compiler.name = AspectJ Compiler 1.8.12
compiler.version = Eclipse Compiler Neon.2 #75dbfad0, 3.12
compiler.copyright = 

## this next one superceded by above...
## configure.version = AspectJ Compiler 1.1 

configure.directoryNotExist = invalid option: {0}
## 3456789012345678901234567890123456789012345678901234567890123456789012345
### miscellaneous
misc.usage = {0}\n\
\n\
\tUsage: <options> <source file | @argfile>..\n\
\n\
AspectJ-specific options:\n\
\t-inpath <list>      use classes in dirs and jars/zips in <list> as source\n\
\t                    (<list> uses platform-specific path delimiter)\n\
\t-injars <jarList>   use classes in <jarList> zip files as source\n\
\t                    (<jarList> uses classpath delimiter)\n\
\t                    deprecated - use inpath instead.\n\
\t-aspectpath <list>  weave aspects in .class files from <list> dirs and jars/zip into sources\n\
\t                    (<list> uses classpath delimiter)\n\
\t-outjar <file>      put output classes in zip file <file>\n\
\t-outxml             generate META-INF/aop.xml\n\
\t-outxmlfile <file>  specify alternate destination output of -outxml\n\
\t-argfile <file>     specify line-delimited list of source files\n\
\t-showWeaveInfo      display information about weaving\n\
\t-incremental        continuously-running compiler, needs -sourceroots\n\
\t                    (reads stdin: enter to recompile and ''q'' to quit)\n\
\t-sourceroots <dirs> compile all .aj and .java files in <dirs>\n\
\t                    (<dirs> uses classpath delimiter)\n\
\t-crossrefs          generate .ajsym file into the output directory\n\
\t-emacssym           generate .ajesym symbol files for emacs support\n\
\t-Xlint              same as ''-Xlint:warning''\n\
\t-Xlint:<level>      set default level for crosscutting messages\n\
\t                    (<level> may be ignore, warning, or error)\n\
\t-Xlintfile <file>   specify properties file to set per-message levels\n\
\t                    (cf org/aspectj/weaver/XlintDefault.properties)\n\
\t-X                  print help on non-standard options\n\
\n\
Standard Eclipse compiler options:\n\
\ Options enabled by default are prefixed with ''+''\n\
\ \n\
\ Classpath options:\n\
\    -cp -classpath <directories and zip/jar files separated by ;>\n\
\                       specify location for application classes and sources\n\
\    -bootclasspath <directories and zip/jar files separated by ;>\n\
\                       specify location for system classes\n\
\    -d <dir>           destination directory (if omitted, no directory is created)\n\
\    -d none            generate no .class files\n\
\    -encoding <enc>    specify custom encoding for all sources. Each file/directory can override it\n\
\                       when suffixed with ''[''<enc>'']'' (e.g. X.java[utf8])\n\
\ \n\
\ Compliance options:\n\
\    -1.3               use 1.3 compliance level (implicit -source 1.3 -target 1.1)\n\
\    -1.4             + use 1.4 compliance level\n\
\    -1.5 -5 -5.0       use 1.5 compliance (-source 1.5 -target 1.5)\n\
\    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
\    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
\    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)\n\
\    -source <version>  set source level: 1.3 to 1.8 (or 5, 5.0, etc)\n\
\    -target <version>  set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)\n\
\ \n\
\ Warning options:\n\
\    -deprecation         + deprecation outside deprecated code\n\
\    -nowarn -warn:none disable all warnings\n\
\    -warn:<warnings separated by ,>    enable exactly the listed warnings\n\
\    -warn:+<warnings separated by ,>   enable additional warnings\n\
\    -warn:-<warnings separated by ,>   disable specific warnings\n\
\      allDeadCode          dead code including trivial if(DEBUG) check\n\
\      allDeprecation       deprecation including inside deprecated code\n\
\      allJavadoc           invalid or missing javadoc\n\
\      allOver-ann          all missing @Override annotations\n\
\      all-static-method    all method can be declared as static warnings\n\
\      assertIdentifier   + ''assert'' used as identifier\n\
\      boxing               autoboxing conversion\n\
\      charConcat         + char[] in String concat\n\
\      compareIdentical   + comparing identical expressions\n\
\      conditionAssign      possible accidental boolean assignment\n\
\      constructorName    + method with constructor name\n\
\      deadCode           + dead code excluding trivial if (DEBUG) check\n\
\      dep-ann              missing @Deprecated annotation\n\
\      deprecation        + deprecation outside deprecated code\n\
\      discouraged        + use of types matching a discouraged access rule\n\
\      emptyBlock           undocumented empty block\n\
\      enumIdentifier       ''enum'' used as identifier\n\
\      enumSwitch           incomplete enum switch\n\
\      fallthrough          possible fall-through case\n\
\      fieldHiding          field hiding another variable\n\
\      finalBound           type parameter with final bound\n\
\      finally            + finally block not completing normally\n\
\      forbidden          + use of types matching a forbidden access rule\n\
\      hashCode              missing hashCode() method when overriding equals()\n\
\      hiding               macro for fieldHiding, localHiding, typeHiding and\n\
\                           maskedCatchBlock\n\
\      includeAssertNull    raise null warnings for variables\n\
\                           that got tainted in an assert expression\n\
\      indirectStatic       indirect reference to static member\n\
\      intfAnnotation     + annotation type used as super interface\n\
\      intfNonInherited   + interface non-inherited method compatibility\n\
\      intfRedundant        find redundant superinterfaces\n\
\      javadoc              invalid javadoc\n\
\      localHiding          local variable hiding another variable\n\
\      maskedCatchBlock   + hidden catch block\n\
\      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
\      noEffectAssign     + assignment without effect\n\
\      null                 potential missing or redundant null check\n\
\      nullDereference    + missing null check\n\
\      over-ann             missing @Override annotation (superclass)\n\
\      paramAssign          assignment to a parameter\n\
\      pkgDefaultMethod   + attempt to override package-default method\n\
\      raw                + usage of raw type\n\
\      semicolon            unnecessary semicolon, empty statement\n\
\      serial             + missing serialVersionUID\n\
\      specialParamHiding   constructor or setter parameter hiding a field\n\
\      static-method        method can be declared as static\n\
\      static-access        macro for indirectStatic and staticReceiver\n\
\      staticReceiver     + non-static reference to static member\n\
\      super                overriding a method without making a super invocation\n\
\      suppress           + enable @SuppressWarnings\n\
\                           When used with -err:, it can also silent optional\n\
\                           errors and warnings\n\
\      syncOverride         missing synchronized in synchr. method override\n\
\      syntheticAccess      synthetic access for innerclass\n\
\      tasks(<tags separated by |>) tasks identified by tags inside comments\n\
\      typeHiding         + type parameter hiding another type\n\
\      unavoidableGenericProblems + ignore unavoidable type safety problems\n\
\                                   due to raw APIs\n\
\      unchecked          + unchecked type operation\n\
\      unnecessaryElse      unnecessary else clause\n\
\      unqualifiedField     unqualified reference to field\n\
\      unused               macro for unusedAllocation, unusedArgument,\n\
\                               unusedImport, unusedLabel, unusedLocal,\n\
\                               unusedPrivate, unusedThrown, and unusedTypeArgs\n\
\      unusedAllocation     allocating an object that is not used\n\
\      unusedArgument       unread method parameter\n\
\      unusedImport       + unused import declaration\n\
\      unusedLabel        + unused label\n\
\      unusedLocal        + unread local variable\n\
\      unusedPrivate      + unused private member declaration\n\
\      unusedThrown         unused declared thrown exception\n\
\      unusedTypeArgs     + unused type arguments for method and constructor\n\
\      uselessTypeCheck     unnecessary cast/instanceof operation\n\
\      varargsCast        + varargs argument need explicit cast\n\
\      warningToken       + unsupported or unnecessary @SuppressWarnings\n
\ \n\
\ Debug options:\n\
\    -g[:lines,vars,source] custom debug info\n\
\    -g:lines,source  + both lines table and source debug info\n\
\    -g                 all debug info\n\
\    -g:none            no debug info\n\
\    -preserveAllLocals preserve unused local vars for debug purpose\n\
\ \n\
\ Advanced options:\n\
\    -log <file>        log to a file\n\
\    -proceedOnError    do not stop at first error, dumping class files with problem methods\n\
\    -verbose           enable verbose output\n\
\    -referenceInfo     compute reference info\n\
\    -progress          show progress (only in -log mode)\n\
\    -time              display speed information \n\
\    -noExit            do not call System.exit(n) at end of compilation (n==0 if no error)\n\
\    -repeat <n>        repeat compilation process <n> times for perf analysis\n\
\    @<file>            read command line arguments from file\n\
\ \n\
\    -? -help           print this help message\n\
\    -v -version        print compiler version\n\
\    -showversion       print compiler version and continue\n

xoption.usage = {0} non-standard options:\n\
\n\
\t-XnoInline          don't inline advice\n\
\t-XlazyTjp           create thisJoinPoint objects lazily\n\
\t-Xreweavable        create class files that can be subsequently rewoven\n\
\t                    by AspectJ. Deprecated, this is now on by default.\n\
\t-Xreweavable:compress deprecated, reweavable is now default.\n\
\t-XnotReweavable     create class files that can't be subsequently rewoven\n\
\t                    by AspectJ.\n\
\t-XserializableAspects allows aspects to implement serializable\n\
\t-XterminateAfterCompilation compile classes then terminate before weaving\n\
\t-XaddSerialVersionUID calculates and adds the serialVersionUID to any\n\
\t                    serializable type woven by an aspect\n\
\t-Xajruntimetarget:<level> allows code to be generated that targets\n\
\t                    a 1.2 or a 1.5 level AspectJ runtime (default 1.5)\n\
\t-XhasMember         allow hasmethod() and hasfield type patterns in\n\
\t                    declare parents and declare @type\n\
\t-Xjoinpoints:       supply a comma separated list of new joinpoints\n\
\t                    that can be identified by pointcuts.  Values are:\n\
\t                    arrayconstruction, synchronization\n
## options not documented above (per ..ajdt.ajc.BuildArgParser.java):
# -XincrementalFile, -XjavadocsInModel

###############################################################################
# Copyright (c) 2000, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials 
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
### JavaBatchCompiler messages.

### compiler 
#compiler.name = Eclipse Java Compiler
#compiler.version = 0.396
#compiler.copyright = Copyright IBM Corp 2000, 2003. All rights reserved.

### scanning
scanning.start = Collecting source files inside {0}

### progress
progress.compiling = Compiling

### compile
compile.repetition = [repetition {0}/{1}]
compile.instantTime = [compiled {0} lines in {1} ms: {2} lines/s]
compile.averageTime = [average, excluding min-max {0} lines in {1} ms: {2} lines/s]
compile.totalTime = [total compilation time: {0}]
compile.oneProblem = 1 problem ({0})
compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
compile.oneError = 1 error
compile.severalErrors = {0} errors
compile.oneWarning = 1 warning
compile.severalWarnings = {0} warnings
compile.oneClassFileGenerated = [1 .class file generated]
compile.severalClassFilesGenerated = [{0} .class files generated]

#compile.repetition = Repetition {0}/{1}
#compile.instantTime = Compiled {0} lines in {1} ms ({2} lines/s)
#compile.totalTime = Total compilation time: {0}
#compile.oneProblem = 1 problem
#compile.severalProblems = {0} problems
#compile.oneError = 1 error
#compile.severalErrors = {0} errors
#compile.oneWarning = 1 warning
#compile.severalWarnings = {0} warnings
#compile.oneClassFileGenerated = 1 .class file generated
#compile.severalClassFilesGenerated = {0} .class files generated

### configure
configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
configure.duplicateLog = duplicate log specification: {0}
configure.duplicateRepeat = duplicate repeat specification: {0}
configure.duplicateCompliance = duplicate compliance setting specification: {0}
configure.source = invalid source option, source is either ''1.3'' or ''1.4'': {0}
configure.duplicateOutputPath = duplicate output path specification: {0}
configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
configure.invalidDebugOption = invalid debug option: {0}
configure.invalidWarningConfiguration = invalid warning configuration: {0}
configure.invalidWarning = invalid warning: {0}
configure.invalidWarningOption = invalid warning option: {0}
configure.targetJDK = target JDK should be comprised in between ''1.1'' and ''1.4'': {0}
configure.incompatibleTargetForSource14 = ''1.4'' source mode requires ''-target 1.4'' : {0}
configure.incompatibleComplianceForSource14 = ''1.4'' source mode requires ''-1.4'' compliance mode: {0}
configure.incompatibleComplianceForTarget14 = ''1.4'' target mode requires ''-1.4'' compliance mode: {0}
configure.incompatibleComplianceForTarget11 = ''1.1'' target mode requires ''-1.3'' compliance mode: {0}
configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required
configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
configure.repetition = repetition must be a positive integer: {0}
configure.directoryNotExist = directory does not exist: {0}
configure.IOError = i/o error : unable to retrieve .JAVA files in directory: {0}
configure.noClasspath = no classpath defined, using default directory instead
configure.incorrectClasspath = incorrect classpath: {0}
configure.invalidexpansionargumentname = expansion argument file {0} doesn't exist or cannot be read
configure.cannotOpenLog = cannot open .log file
configure.unexpectedCustomEncoding = unexpected custom encoding specification: {0}[{1}]
configure.unsupportedEncoding = unsupported encoding format: {0}
configure.duplicateDefaultEncoding = duplicate default encoding format specification: {0}
configure.invalidTaskTag ={0} is an invalid task tag

### requestor
requestor.error = ERROR
requestor.warning = WARNING
requestor.in = in {0}
requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}

### unit
unit.more = File {0} is specified more than once
unit.missing = File {0} is missing

### output
output.noClassFileCreated = No .class file created for file named {0} because of an IOException.

### miscellaneous
misc.version = {0} ({1}) - {2} {3}
