View | Details | Raw Unified | Return to bug 202490 | Differences between
and this patch

Collapse All | Expand All

(-)model/org/eclipse/jdt/core/JavaCore.java (-1623 / +1672 lines)
Lines 194-1240 Link Here
194
	 */
194
	 */
195
	public static final String USER_LIBRARY_CONTAINER_ID= "org.eclipse.jdt.USER_LIBRARY"; //$NON-NLS-1$
195
	public static final String USER_LIBRARY_CONTAINER_ID= "org.eclipse.jdt.USER_LIBRARY"; //$NON-NLS-1$
196
196
197
	// *************** Possible IDs for configurable options. ********************
197
	// Begin configurable option IDs {
198
198
199
	/**
199
	/**
200
	 * Possible  configurable option ID.
200
	 * Configurable option ID.
201
	 * @see #getDefaultOptions()
201
	 * <pre>
202
	 * COMPILER / Generating Local Variable Debug Attribute
203
 	 *    When generated, this attribute will enable local variable names
204
	 *    to be displayed in debugger, only in place where variables are
205
	 *    definitely assigned (.class file is then bigger)
206
	 *     - option id:         "org.eclipse.jdt.core.compiler.debug.localVariable"
207
	 *     - possible values:   { "generate", "do not generate" }
208
	 *     - default:           "generate"
209
	 * </pre>
210
	 * @category CompilerOptionID
202
	 */
211
	 */
203
	public static final String COMPILER_LOCAL_VARIABLE_ATTR = PLUGIN_ID + ".compiler.debug.localVariable"; //$NON-NLS-1$
212
	public static final String COMPILER_LOCAL_VARIABLE_ATTR = PLUGIN_ID + ".compiler.debug.localVariable"; //$NON-NLS-1$
204
	/**
213
	/**
205
	 * Possible  configurable option ID.
214
	 * Configurable option ID.
206
	 * @see #getDefaultOptions()
215
	 * <pre>
216
	 * COMPILER / Generating Line Number Debug Attribute
217
	 *    When generated, this attribute will enable source code highlighting in debugger
218
	 *    (.class file is then bigger).
219
	 *     - option id:         "org.eclipse.jdt.core.compiler.debug.lineNumber"
220
	 *     - possible values:   { "generate", "do not generate" }
221
	 *     - default:           "generate"
222
	 * </pre>
223
	 * @category CompilerOptionID
207
	 */
224
	 */
208
	public static final String COMPILER_LINE_NUMBER_ATTR = PLUGIN_ID + ".compiler.debug.lineNumber"; //$NON-NLS-1$
225
	public static final String COMPILER_LINE_NUMBER_ATTR = PLUGIN_ID + ".compiler.debug.lineNumber"; //$NON-NLS-1$
209
	/**
226
	/**
210
	 * Possible  configurable option ID.
227
	 * Configurable option ID.
211
	 * @see #getDefaultOptions()
228
	 * <pre>
229
	 * COMPILER / Generating Source Debug Attribute
230
	 *    When generated, this attribute will enable the debugger to present the
231
	 *    corresponding source code.
232
	 *     - option id:         "org.eclipse.jdt.core.compiler.debug.sourceFile"
233
	 *     - possible values:   { "generate", "do not generate" }
234
	 *     - default:           "generate"
235
	 * </pre>
236
	 * @category CompilerOptionID
212
	 */
237
	 */
213
	public static final String COMPILER_SOURCE_FILE_ATTR = PLUGIN_ID + ".compiler.debug.sourceFile"; //$NON-NLS-1$
238
	public static final String COMPILER_SOURCE_FILE_ATTR = PLUGIN_ID + ".compiler.debug.sourceFile"; //$NON-NLS-1$
214
	/**
239
	/**
215
	 * Possible  configurable option ID.
240
	 * Configurable option ID.
216
	 * @see #getDefaultOptions()
241
	 * <pre>
242
	 * COMPILER / Preserving Unused Local Variables
243
	 *    Unless requested to preserve unused local variables (that is, never read), the
244
	 *    compiler will optimize them out, potentially altering debugging
245
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.unusedLocal"
246
	 *     - possible values:   { "preserve", "optimize out" }
247
	 *     - default:           "preserve"
248
	 * </pre>
249
	 * @category CompilerOptionID
217
	 */
250
	 */
218
	public static final String COMPILER_CODEGEN_UNUSED_LOCAL = PLUGIN_ID + ".compiler.codegen.unusedLocal"; //$NON-NLS-1$
251
	public static final String COMPILER_CODEGEN_UNUSED_LOCAL = PLUGIN_ID + ".compiler.codegen.unusedLocal"; //$NON-NLS-1$
219
	/**
252
	/**
220
	 * Possible  configurable option ID.
253
	 * Configurable option ID.
221
	 * @see #getDefaultOptions()
254
	 * <pre>
255
	 * COMPILER / Defining Target Java Platform
256
	 *    For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
257
	 *    Note that "1.4" target requires to toggle compliance mode to "1.4", "1.5" target requires
258
	 *    to toggle compliance mode to "1.5", "1.6" target requires to toggle compliance mode to "1.6" and
259
	 *    "1.7" target requires to toggle compliance mode to "1.7".
260
	 *    "cldc1.1" requires the source version to be "1.3" and the compliance version to be "1.4" or lower.
261
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
262
	 *     - possible values:   { "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "cldc1.1" }
263
	 *     - default:           "1.2"
264
	 * </pre>
265
	 * @category CompilerOptionID
222
	 */
266
	 */
223
	public static final String COMPILER_CODEGEN_TARGET_PLATFORM = PLUGIN_ID + ".compiler.codegen.targetPlatform"; //$NON-NLS-1$
267
	public static final String COMPILER_CODEGEN_TARGET_PLATFORM = PLUGIN_ID + ".compiler.codegen.targetPlatform"; //$NON-NLS-1$
224
	/**
268
	/**
225
	 * Possible  configurable option ID.
269
	 * Configurable option ID.
226
	 * @see #getDefaultOptions()
270
	 * <pre>
271
	 * COMPILER / Inline JSR Bytecode Instruction
272
	 *    When enabled, the compiler will no longer generate JSR instructions, but rather inline corresponding
273
	 *    subroutine code sequences (mostly corresponding to try finally blocks). The generated code will thus
274
	 *    get bigger, but will load faster on virtual machines since the verification process is then much simpler.
275
	 *    This mode is anticipating support for the Java Specification Request 202.
276
	 *    Note that JSR inlining is optional only for target platform lesser than 1.5. From 1.5 on, the JSR
277
	 *    inlining is mandatory (also see related setting "org.eclipse.jdt.core.compiler.codegen.targetPlatform").
278
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"
279
	 *     - possible values:   { "enabled", "disabled" }
280
	 *     - default:           "disabled"
281
	 * </pre>
227
	 * @since 3.0
282
	 * @since 3.0
283
	 * @category CompilerOptionID
228
	 */
284
	 */
229
	public static final String COMPILER_CODEGEN_INLINE_JSR_BYTECODE = PLUGIN_ID + ".compiler.codegen.inlineJsrBytecode"; //$NON-NLS-1$
285
	public static final String COMPILER_CODEGEN_INLINE_JSR_BYTECODE = PLUGIN_ID + ".compiler.codegen.inlineJsrBytecode"; //$NON-NLS-1$
230
	/**
286
	/**
231
	 * Possible  configurable option ID.
287
	 * Configurable option ID.
232
	 * @see #getDefaultOptions()
288
	 * <pre>
289
	 * COMPILER / Javadoc Comment Support
290
	 *    When this support is disabled, the compiler will ignore all javadoc problems options settings
291
	 *    and will not report any javadoc problem. It will also not find any reference in javadoc comment and
292
	 *    DOM AST Javadoc node will be only a flat text instead of having structured tag elements.
293
	 *     - option id:         "org.eclipse.jdt.core.compiler.doc.comment.support"
294
	 *     - possible values:   { "enabled", "disabled" }
295
	 *     - default:           "enabled"
296
	 * </pre>
233
	 * @since 3.0
297
	 * @since 3.0
298
	 * @category CompilerOptionID
234
	 */
299
	 */
235
	public static final String COMPILER_DOC_COMMENT_SUPPORT = PLUGIN_ID + ".compiler.doc.comment.support"; //$NON-NLS-1$
300
	public static final String COMPILER_DOC_COMMENT_SUPPORT = PLUGIN_ID + ".compiler.doc.comment.support"; //$NON-NLS-1$
236
	/**
301
	/**
237
	 * Possible  configurable option ID.
302
	 * @deprecated Discontinued since turning off would violate language specs.
238
	 * @see #getDefaultOptions()
303
	 * @category DeprecatedOptionID
239
	 * @deprecated - discontinued since turning off would violate language specs
240
	 */
304
	 */
241
	public static final String COMPILER_PB_UNREACHABLE_CODE = PLUGIN_ID + ".compiler.problem.unreachableCode"; //$NON-NLS-1$
305
	public static final String COMPILER_PB_UNREACHABLE_CODE = PLUGIN_ID + ".compiler.problem.unreachableCode"; //$NON-NLS-1$
242
	/**
306
	/**
243
	 * Possible  configurable option ID.
307
	 * @deprecated Discontinued since turning off would violate language specs.
244
	 * @see #getDefaultOptions()
308
	 * @category DeprecatedOptionID
245
	 * @deprecated - discontinued since turning off would violate language specs
246
	 */
309
	 */
247
	public static final String COMPILER_PB_INVALID_IMPORT = PLUGIN_ID + ".compiler.problem.invalidImport"; //$NON-NLS-1$
310
	public static final String COMPILER_PB_INVALID_IMPORT = PLUGIN_ID + ".compiler.problem.invalidImport"; //$NON-NLS-1$
248
	/**
311
	/**
249
	 * Possible  configurable option ID.
312
	 * Configurable option ID.
250
	 * @see #getDefaultOptions()
313
	 * <pre>
314
	 * COMPILER / Reporting Attempt to Override Package Visible Method
315
	 *    A package visible method, which is any method that is not explicitly 
316
	 *    declared as public, protected or private, is not visible from other 
317
	 *    packages, and thus cannot be overridden from another package. 
318
	 *    Attempting to override a package visible method from another package 
319
	 *    introduces a new method that is unrelated to the original one. When 
320
	 *    enabling this option, the compiler will signal such situations as an 
321
	 *    error or a warning.
322
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"
323
	 *     - possible values:   { "error", "warning", "ignore" }
324
	 *     - default:           "warning"
325
	 * </pre>
326
	 * @category CompilerOptionID
251
	 */
327
	 */
252
	public static final String COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD = PLUGIN_ID + ".compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
328
	public static final String COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD = PLUGIN_ID + ".compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
253
	/**
329
	/**
254
	 * Possible  configurable option ID.
330
	 * Configurable option ID.
255
	 * @see #getDefaultOptions()
331
	 * <pre>
332
	 * COMPILER / Reporting Method With Constructor Name
333
	 *    Naming a method with a constructor name is generally considered poor
334
	 *    style programming. When enabling this option, the compiler will signal such
335
	 *    scenarii either as an error or a warning.
336
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"
337
	 *     - possible values:   { "error", "warning", "ignore" }
338
	 *     - default:           "warning"
339
	 * </pre>
340
	 * @category CompilerOptionID
256
	 */
341
	 */
257
	public static final String COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME = PLUGIN_ID + ".compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
342
	public static final String COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME = PLUGIN_ID + ".compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
258
	/**
343
	/**
259
	 * Possible  configurable option ID.
344
	 * Configurable option ID.
260
	 * @see #getDefaultOptions()
345
	 * <pre>
346
	 * COMPILER / Reporting Deprecation
347
	 *    When enabled, the compiler will signal use of deprecated API either as an
348
	 *    error or a warning.
349
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.deprecation"
350
	 *     - possible values:   { "error", "warning", "ignore" }
351
	 *     - default:           "warning"
352
	 * </pre>
353
	 * @category CompilerOptionID
261
	 */
354
	 */
262
	public static final String COMPILER_PB_DEPRECATION = PLUGIN_ID + ".compiler.problem.deprecation"; //$NON-NLS-1$
355
	public static final String COMPILER_PB_DEPRECATION = PLUGIN_ID + ".compiler.problem.deprecation"; //$NON-NLS-1$
263
	/**
356
	/**
264
	 * Possible  configurable option ID.
357
	 * Configurable option ID.
265
	 * @see #getDefaultOptions()
358
	 * <pre>
359
	 * COMPILER / Reporting Deprecation Inside Deprecated Code
360
	 *    When enabled, the compiler will signal use of deprecated API inside deprecated code.
361
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
362
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
363
	 *     - possible values:   { "enabled", "disabled" }
364
	 *     - default:           "disabled"
365
	 * </pre>
266
	 * @since 2.1
366
	 * @since 2.1
367
	 * @category CompilerOptionID
267
	 */
368
	 */
268
	public static final String COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
369
	public static final String COMPILER_PB_DEPRECATION_IN_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
269
	/**
370
	/**
270
	 * Possible  configurable option ID.
371
	 * Configurable option ID.
271
	 * @see #getDefaultOptions()
372
	 * <pre>
373
	 * COMPILER / Reporting Deprecation In Non Deprecated Code
374
	 *    When enabled, the compiler will signal use of deprecated API in non 
375
	 *    deprecated code.
376
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
377
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.deprecationInNonDeprecatedCode"
378
	 *     - possible values:   { "enabled", "disabled" }
379
	 *     - default:           "enabled"
380
	 * </pre>
272
	 * @since 3.4
381
	 * @since 3.4
382
	 * @category CompilerOptionID
273
	 */
383
	 */
274
	public static final String COMPILER_PB_DEPRECATION_IN_NON_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInNonDeprecatedCode"; //$NON-NLS-1$
384
	public static final String COMPILER_PB_DEPRECATION_IN_NON_DEPRECATED_CODE = PLUGIN_ID + ".compiler.problem.deprecationInNonDeprecatedCode"; //$NON-NLS-1$
275
	/**
385
	/**
276
	 * Possible  configurable option ID.
386
	 * Configurable option ID.
277
	 * @see #getDefaultOptions()
387
	 * <pre>
388
	 * COMPILER / Reporting Deprecation When Overriding Deprecated Method
389
	 *    When enabled, the compiler will signal the declaration of a method overriding a deprecated one.
390
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
391
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"
392
	 *     - possible values:   { "enabled", "disabled" }
393
	 *     - default:           "disabled"
394
	 * </pre>
278
	 * @since 3.0
395
	 * @since 3.0
396
	 * @category CompilerOptionID
279
	 */
397
	 */
280
	public static final String COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD = "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"; //$NON-NLS-1$
398
	public static final String COMPILER_PB_DEPRECATION_WHEN_OVERRIDING_DEPRECATED_METHOD = "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"; //$NON-NLS-1$
281
	/**
399
	/**
282
	 * Possible  configurable option ID.
400
	 * Configurable option ID.
283
	 * @see #getDefaultOptions()
401
	 * <pre>
402
	 * COMPILER / Reporting Hidden Catch Block
403
	 *    Locally to a try statement, some catch blocks may hide others. For example,
404
	 *      try {  throw new java.io.CharConversionException();
405
	 *      } catch (java.io.CharConversionException e) {
406
	 *      } catch (java.io.IOException e) {}.
407
	 *    When enabling this option, the compiler will issue an error or a warning for hidden
408
	 *    catch blocks corresponding to checked exceptions
409
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"
410
	 *     - possible values:   { "error", "warning", "ignore" }
411
	 *     - default:           "warning"
412
	 * </pre>
413
	 * @category CompilerOptionID
284
	 */
414
	 */
285
	public static final String COMPILER_PB_HIDDEN_CATCH_BLOCK = PLUGIN_ID + ".compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
415
	public static final String COMPILER_PB_HIDDEN_CATCH_BLOCK = PLUGIN_ID + ".compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
286
	/**
416
	/**
287
	 * Possible  configurable option ID.
417
	 * Configurable option ID.
288
	 * @see #getDefaultOptions()
418
	 * <pre>
419
	 * COMPILER / Reporting Unused Local
420
	 *    When enabled, the compiler will issue an error or a warning for unused local
421
	 *    variables (that is, variables never read from)
422
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedLocal"
423
	 *     - possible values:   { "error", "warning", "ignore" }
424
	 *     - default:           "ignore"
425
	 * </pre>
426
	 * @category CompilerOptionID
289
	 */
427
	 */
290
	public static final String COMPILER_PB_UNUSED_LOCAL = PLUGIN_ID + ".compiler.problem.unusedLocal"; //$NON-NLS-1$
428
	public static final String COMPILER_PB_UNUSED_LOCAL = PLUGIN_ID + ".compiler.problem.unusedLocal"; //$NON-NLS-1$
291
	/**
429
	/**
292
	 * Possible  configurable option ID.
430
	 * Configurable option ID.
293
	 * @see #getDefaultOptions()
431
	 * <pre>
432
	 * COMPILER / Reporting Unused Parameter
433
	 *    When enabled, the compiler will issue an error or a warning for unused method
434
	 *    parameters (that is, parameters never read from)
435
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameter"
436
	 *     - possible values:   { "error", "warning", "ignore" }
437
	 *     - default:           "ignore"
438
	 * </pre>
439
	 * @category CompilerOptionID
294
	 */
440
	 */
295
	public static final String COMPILER_PB_UNUSED_PARAMETER = PLUGIN_ID + ".compiler.problem.unusedParameter"; //$NON-NLS-1$
441
	public static final String COMPILER_PB_UNUSED_PARAMETER = PLUGIN_ID + ".compiler.problem.unusedParameter"; //$NON-NLS-1$
296
	/**
442
	/**
297
	 * Possible  configurable option ID.
443
	 * Configurable option ID.
298
	 * @see #getDefaultOptions()
444
	 * <pre>
445
	 * COMPILER / Reporting Unused Parameter if Implementing Abstract Method
446
	 *    When enabled, the compiler will signal unused parameters in abstract method implementations.
447
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
448
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
449
	 *     - possible values:   { "enabled", "disabled" }
450
	 *     - default:           "disabled"
451
	 * </pre>
299
	 * @since 2.1
452
	 * @since 2.1
453
	 * @category CompilerOptionID
300
	 */
454
	 */
301
	public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT = PLUGIN_ID + ".compiler.problem.unusedParameterWhenImplementingAbstract"; //$NON-NLS-1$
455
	public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_IMPLEMENTING_ABSTRACT = PLUGIN_ID + ".compiler.problem.unusedParameterWhenImplementingAbstract"; //$NON-NLS-1$
302
	/**
456
	/**
303
	 * Possible  configurable option ID.
457
	 * Configurable option ID.
304
	 * @see #getDefaultOptions()
458
	 * <pre>
459
	 * COMPILER / Reporting Unused Parameter if Overriding Concrete Method
460
	 *    When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
461
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
462
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
463
	 *     - possible values:   { "enabled", "disabled" }
464
	 *     - default:           "disabled"
465
	 * </pre>
305
	 * @since 2.1
466
	 * @since 2.1
467
	 * @category CompilerOptionID
306
	 */
468
	 */
307
	public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE = PLUGIN_ID + ".compiler.problem.unusedParameterWhenOverridingConcrete"; //$NON-NLS-1$
469
	public static final String COMPILER_PB_UNUSED_PARAMETER_WHEN_OVERRIDING_CONCRETE = PLUGIN_ID + ".compiler.problem.unusedParameterWhenOverridingConcrete"; //$NON-NLS-1$
308
	/**
470
	/**
309
	 * Possible  configurable option ID.
471
	 * Configurable option ID.
310
	 * @see #getDefaultOptions()
472
	 * <pre>
473
	 * COMPILER / Consider Reference in Doc Comment for Unused Parameter Check
474
	 *    When enabled, the compiler will consider doc comment references to parameters (i.e. @param clauses) for the unused
475
	 *    parameter check. Thus, documented parameters will be considered as mandated as per doc contract.
476
	 *    The severity of the unused parameter problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
477
	 *    Note: this option has no effect until the doc comment support is enabled according to the 
478
	 *    option "org.eclipse.jdt.core.compiler.doc.comment.support".
479
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference"
480
	 *     - possible values:   { "enabled", "disabled" }
481
	 *     - default:           "enabled"
482
	 * </pre>
311
	 * @since 3.3
483
	 * @since 3.3
484
	 * @category CompilerOptionID
312
	 */
485
	 */
313
	public static final String COMPILER_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE = PLUGIN_ID + ".compiler.problem.unusedParameterIncludeDocCommentReference"; //$NON-NLS-1$
486
	public static final String COMPILER_PB_UNUSED_PARAMETER_INCLUDE_DOC_COMMENT_REFERENCE = PLUGIN_ID + ".compiler.problem.unusedParameterIncludeDocCommentReference"; //$NON-NLS-1$
314
	/**
487
	/**
315
	 * Possible  configurable option ID.
488
	 * Configurable option ID.
316
	 * @see #getDefaultOptions()
489
	 * <pre>
490
	 * COMPILER / Reporting Unused Import
491
	 *    When enabled, the compiler will issue an error or a warning for unused import
492
	 *    reference
493
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedImport"
494
	 *     - possible values:   { "error", "warning", "ignore" }
495
	 *     - default:           "warning"
496
	 * </pre>
317
	 * @since 2.0
497
	 * @since 2.0
498
	 * @category CompilerOptionID
318
	 */
499
	 */
319
	public static final String COMPILER_PB_UNUSED_IMPORT = PLUGIN_ID + ".compiler.problem.unusedImport"; //$NON-NLS-1$
500
	public static final String COMPILER_PB_UNUSED_IMPORT = PLUGIN_ID + ".compiler.problem.unusedImport"; //$NON-NLS-1$
320
	/**
501
	/**
321
	 * Possible  configurable option ID.
502
	 * Configurable option ID.
322
	 * @see #getDefaultOptions()
503
	 * <pre>
504
	 * COMPILER / Reporting Presence of Type Arguments for a Non-Generic Method Invocation
505
	 *    When enabled, the compiler will issue an error or a warning whenever type arguments are encountered for a
506
	 *    non-generic method invocation. Note that prior to compliance level is "1.7", this situation would automatically result
507
	 *    in an error. From Java7 on, unused type arguments are being tolerated, and optionally warned against.
508
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedTypeArgumentsForMethodInvocation"
509
	 *     - possible values:   { "error", "warning", "ignore" }
510
	 *     - default:           "warning"
511
	 * </pre>
323
	 * @since 3.4
512
	 * @since 3.4
513
	 * @category CompilerOptionID
324
	 */
514
	 */
325
	public static final String COMPILER_PB_UNUSED_TYPE_ARGUMENTS_FOR_METHOD_INVOCATION = PLUGIN_ID + ".compiler.problem.unusedTypeArgumentsForMethodInvocation"; //$NON-NLS-1$
515
	public static final String COMPILER_PB_UNUSED_TYPE_ARGUMENTS_FOR_METHOD_INVOCATION = PLUGIN_ID + ".compiler.problem.unusedTypeArgumentsForMethodInvocation"; //$NON-NLS-1$
326
	/**
516
	/**
327
	 * Possible  configurable option ID.
517
	 * Configurable option ID.
328
	 * @see #getDefaultOptions()
518
	 * <pre>
519
	 * COMPILER / Reporting Synthetic Access Emulation
520
	 *    When enabled, the compiler will issue an error or a warning whenever it emulates
521
	 *    access to a non-accessible member of an enclosing type. Such access can have
522
	 *    performance implications.
523
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation"
524
	 *     - possible values:   { "error", "warning", "ignore" }
525
	 *     - default:           "ignore"
526
	 * </pre>
527
	 * @category CompilerOptionID
329
	 */
528
	 */
330
	public static final String COMPILER_PB_SYNTHETIC_ACCESS_EMULATION = PLUGIN_ID + ".compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
529
	public static final String COMPILER_PB_SYNTHETIC_ACCESS_EMULATION = PLUGIN_ID + ".compiler.problem.syntheticAccessEmulation"; //$NON-NLS-1$
331
	/**
530
	/**
332
	 * Possible  configurable option ID.
531
	 * Configurable option ID.
333
	 * @see #getDefaultOptions()
532
	 * <pre>
533
	 * COMPILER / Reporting Non-Externalized String Literal
534
	 *    When enabled, the compiler will issue an error or a warning for non externalized
535
	 *    String literal (that is, not tagged with //$NON-NLS-&lt;n&gt;$).
536
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"
537
	 *     - possible values:   { "error", "warning", "ignore" }
538
	 *     - default:           "ignore"
539
	 * </pre>
334
	 * @since 2.0
540
	 * @since 2.0
541
	 * @category CompilerOptionID
335
	 */
542
	 */
336
	public static final String COMPILER_PB_NON_NLS_STRING_LITERAL = PLUGIN_ID + ".compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
543
	public static final String COMPILER_PB_NON_NLS_STRING_LITERAL = PLUGIN_ID + ".compiler.problem.nonExternalizedStringLiteral"; //$NON-NLS-1$
337
	/**
544
	/**
338
	 * Possible  configurable option ID.
545
	 * Configurable option ID.
339
	 * @see #getDefaultOptions()
546
	 * <pre>
547
	 * COMPILER / Reporting Usage of 'assert' Identifier
548
	 *    When enabled, the compiler will issue an error or a warning whenever 'assert' is
549
	 *    used as an identifier (reserved keyword in 1.4)
550
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.assertIdentifier"
551
	 *     - possible values:   { "error", "warning", "ignore" }
552
	 *     - default:           "warning"
553
	 * </pre>
340
	 * @since 2.0
554
	 * @since 2.0
555
	 * @category CompilerOptionID
341
	 */
556
	 */
342
	public static final String COMPILER_PB_ASSERT_IDENTIFIER = PLUGIN_ID + ".compiler.problem.assertIdentifier"; //$NON-NLS-1$
557
	public static final String COMPILER_PB_ASSERT_IDENTIFIER = PLUGIN_ID + ".compiler.problem.assertIdentifier"; //$NON-NLS-1$
343
	/**
558
	/**
344
	 * Possible  configurable option ID.
559
	 * Configurable option ID.
345
	 * @see #getDefaultOptions()
560
	 * <pre>
561
	 * COMPILER / Reporting Usage of 'enum' Identifier
562
	 *    When enabled, the compiler will issue an error or a warning whenever 'enum' is
563
	 *    used as an identifier (reserved keyword in 1.5)
564
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.enumIdentifier"
565
	 *     - possible values:   { "error", "warning", "ignore" }
566
	 *     - default:           "warning"
567
	 * </pre>
346
	 * @since 3.1
568
	 * @since 3.1
569
	 * @category CompilerOptionID
347
	 */
570
	 */
348
	public static final String COMPILER_PB_ENUM_IDENTIFIER = PLUGIN_ID + ".compiler.problem.enumIdentifier"; //$NON-NLS-1$
571
	public static final String COMPILER_PB_ENUM_IDENTIFIER = PLUGIN_ID + ".compiler.problem.enumIdentifier"; //$NON-NLS-1$
349
	/**
572
	/**
350
	 * Possible  configurable option ID.
573
	 * Configurable option ID.
351
	 * @see #getDefaultOptions()
574
	 * <pre>
575
	 * COMPILER / Reporting Non-Static Reference to a Static Member
576
	 *    When enabled, the compiler will issue an error or a warning whenever a static field
577
	 *    or method is accessed with an expression receiver. A reference to a static member should
578
	 *    be qualified with a type name.
579
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.staticAccessReceiver"
580
	 *     - possible values:   { "error", "warning", "ignore" }
581
	 *     - default:           "warning"
582
	 * </pre>
352
	 * @since 2.1
583
	 * @since 2.1
584
	 * @category CompilerOptionID
353
	 */
585
	 */
354
	public static final String COMPILER_PB_STATIC_ACCESS_RECEIVER = PLUGIN_ID + ".compiler.problem.staticAccessReceiver"; //$NON-NLS-1$
586
	public static final String COMPILER_PB_STATIC_ACCESS_RECEIVER = PLUGIN_ID + ".compiler.problem.staticAccessReceiver"; //$NON-NLS-1$
355
	/**
587
	/**
356
	 * Possible  configurable option ID.
588
	 * Configurable option ID.
357
	 * @see #getDefaultOptions()
589
	 * <pre>
590
	 * COMPILER / Reporting Indirect Reference to a Static Member
591
	 *    When enabled, the compiler will issue an error or a warning whenever a static field
592
	 *    or method is accessed in an indirect way. A reference to a static member should
593
	 *    preferably be qualified with its declaring type name.
594
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.indirectStaticAccess"
595
	 *     - possible values:   { "error", "warning", "ignore" }
596
	 *     - default:           "ignore"
597
	 * </pre>
358
	 * @since 3.0
598
	 * @since 3.0
599
	 * @category CompilerOptionID
359
	 */
600
	 */
360
	public static final String COMPILER_PB_INDIRECT_STATIC_ACCESS = PLUGIN_ID + ".compiler.problem.indirectStaticAccess"; //$NON-NLS-1$
601
	public static final String COMPILER_PB_INDIRECT_STATIC_ACCESS = PLUGIN_ID + ".compiler.problem.indirectStaticAccess"; //$NON-NLS-1$
361
	/**
602
	/**
362
	 * Possible  configurable option ID.
603
	 * Configurable option ID.
363
	 * @see #getDefaultOptions()
604
	 * <pre>
605
	 * COMPILER / Reporting Assignment with no Effect
606
	 *    When enabled, the compiler will issue an error or a warning whenever an assignment
607
	 *    has no effect (e.g 'x = x').
608
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
609
	 *     - possible values:   { "error", "warning", "ignore" }
610
	 *     - default:           "warning"
611
	 * </pre>
364
	 * @since 2.1
612
	 * @since 2.1
613
	 * @category CompilerOptionID
365
	 */
614
	 */
366
	public static final String COMPILER_PB_NO_EFFECT_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.noEffectAssignment"; //$NON-NLS-1$
615
	public static final String COMPILER_PB_NO_EFFECT_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.noEffectAssignment"; //$NON-NLS-1$
367
	/**
616
	/**
368
	 * Possible  configurable option ID.
617
	 * Configurable option ID.
369
	 * @see #getDefaultOptions()
618
	 * <pre>
619
	 * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
620
	 *    When enabled, the compiler will issue an error or a warning whenever an interface
621
	 *    defines a method incompatible with a non-inherited Object method. Until this conflict
622
	 *    is resolved, such an interface cannot be implemented, For example,
623
	 *      interface I {
624
	 *         int clone();
625
	 *      }
626
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
627
	 *     - possible values:   { "error", "warning", "ignore" }
628
	 *     - default:           "warning"
629
	 * </pre>
370
	 * @since 2.1
630
	 * @since 2.1
631
	 * @category CompilerOptionID
371
	 */
632
	 */
372
	public static final String COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD = PLUGIN_ID + ".compiler.problem.incompatibleNonInheritedInterfaceMethod"; //$NON-NLS-1$
633
	public static final String COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD = PLUGIN_ID + ".compiler.problem.incompatibleNonInheritedInterfaceMethod"; //$NON-NLS-1$
373
	/**
634
	/**
374
	 * Possible  configurable option ID.
635
	 * Configurable option ID.
375
	 * @see #getDefaultOptions()
636
	 * <pre>
637
	 * COMPILER / Reporting Unused Private Members
638
	 *    When enabled, the compiler will issue an error or a warning whenever a private
639
	 *    method or field is declared but never used within the same unit.
640
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
641
	 *     - possible values:   { "error", "warning", "ignore" }
642
	 *     - default:           "ignore"
643
	 * </pre>
376
	 * @since 2.1
644
	 * @since 2.1
645
	 * @category CompilerOptionID
377
	 */
646
	 */
378
	public static final String COMPILER_PB_UNUSED_PRIVATE_MEMBER = PLUGIN_ID + ".compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
647
	public static final String COMPILER_PB_UNUSED_PRIVATE_MEMBER = PLUGIN_ID + ".compiler.problem.unusedPrivateMember"; //$NON-NLS-1$
379
	/**
648
	/**
380
	 * Possible  configurable option ID.
649
	 * Configurable option ID.
381
	 * @see #getDefaultOptions()
650
	 * <pre>
651
	 * COMPILER / Reporting Local Variable Declaration Hiding another Variable
652
	 *    When enabled, the compiler will issue an error or a warning whenever a local variable
653
	 *    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
654
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.localVariableHiding"
655
	 *     - possible values:   { "error", "warning", "ignore" }
656
	 *     - default:           "ignore"
657
	 * </pre>
382
	 * @since 3.0
658
	 * @since 3.0
659
	 * @category CompilerOptionID
383
	 */
660
	 */
384
	public static final String COMPILER_PB_LOCAL_VARIABLE_HIDING = PLUGIN_ID + ".compiler.problem.localVariableHiding"; //$NON-NLS-1$
661
	public static final String COMPILER_PB_LOCAL_VARIABLE_HIDING = PLUGIN_ID + ".compiler.problem.localVariableHiding"; //$NON-NLS-1$
385
	/**
662
	/**
386
	 * Possible  configurable option ID.
663
     * Configurable option ID.
387
	 * @see #getDefaultOptions()
664
     * <pre>
665
	 * COMPILER / Reporting Special Parameter Hiding another Field
666
	 *    When enabled, the compiler will signal cases where a constructor or setter method parameter declaration
667
	 *    is hiding some field (either locally, inherited or defined in enclosing type).
668
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.localVariableHiding".
669
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.specialParameterHidingField"
670
	 *     - possible values:   { "enabled", "disabled" }
671
	 *     - default:           "disabled"
672
     * </pre>
388
	 * @since 3.0
673
	 * @since 3.0
674
	 * @category CompilerOptionID
389
	 */
675
	 */
390
	public static final String COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD = PLUGIN_ID + ".compiler.problem.specialParameterHidingField"; //$NON-NLS-1$
676
	public static final String COMPILER_PB_SPECIAL_PARAMETER_HIDING_FIELD = PLUGIN_ID + ".compiler.problem.specialParameterHidingField"; //$NON-NLS-1$
391
	/**
677
	/**
392
	 * Possible  configurable option ID.
678
     * Configurable option ID.
393
	 * @see #getDefaultOptions()
679
     * <pre>
680
	 * COMPILER / Reporting Field Declaration Hiding another Variable
681
	 *    When enabled, the compiler will issue an error or a warning whenever a field
682
	 *    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
683
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.fieldHiding"
684
	 *     - possible values:   { "error", "warning", "ignore" }
685
	 *     - default:           "ignore"
686
     * </pre>
394
	 * @since 3.0
687
	 * @since 3.0
688
	 * @category CompilerOptionID
395
	 */
689
	 */
396
	public static final String COMPILER_PB_FIELD_HIDING = PLUGIN_ID + ".compiler.problem.fieldHiding"; //$NON-NLS-1$
690
	public static final String COMPILER_PB_FIELD_HIDING = PLUGIN_ID + ".compiler.problem.fieldHiding"; //$NON-NLS-1$
397
	/**
691
	/**
398
	 * Possible  configurable option ID.
692
     * Configurable option ID.
399
	 * @see #getDefaultOptions()
693
     * <pre>
694
	 * COMPILER / Reporting Type Declaration Hiding another Type
695
	 *    When enabled, the compiler will issue an error or a warning in situations where a type parameter
696
	 *    declaration is hiding some type, when a nested type is hiding some type parameter, or when
697
	 *    a nested type is hiding another nested type defined in same unit.
698
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.typeParameterHiding"
699
	 *     - possible values:   { "error", "warning", "ignore" }
700
	 *     - default:           "warning"
701
     * </pre>
400
	 * @since 3.1
702
	 * @since 3.1
703
	 * @category CompilerOptionID
401
	 */
704
	 */
402
	public static final String COMPILER_PB_TYPE_PARAMETER_HIDING = PLUGIN_ID + ".compiler.problem.typeParameterHiding"; //$NON-NLS-1$
705
	public static final String COMPILER_PB_TYPE_PARAMETER_HIDING = PLUGIN_ID + ".compiler.problem.typeParameterHiding"; //$NON-NLS-1$
403
	/**
706
	/**
404
	 * Possible  configurable option ID.
707
     * Configurable option ID.
405
	 * @see #getDefaultOptions()
708
     * <pre>
709
	 * COMPILER / Reporting Possible Accidental Boolean Assignment
710
	 *    When enabled, the compiler will issue an error or a warning if a boolean assignment is acting as the condition
711
	 *    of a control statement  (where it probably was meant to be a boolean comparison).
712
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment"
713
	 *     - possible values:   { "error", "warning", "ignore" }
714
	 *     - default:           "ignore"
715
     * </pre>
406
	 * @since 3.0
716
	 * @since 3.0
717
	 * @category CompilerOptionID
407
	 */
718
	 */
408
	public static final String COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.possibleAccidentalBooleanAssignment"; //$NON-NLS-1$
719
	public static final String COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.possibleAccidentalBooleanAssignment"; //$NON-NLS-1$
409
	/**
720
	/**
410
	 * Possible  configurable option ID.
721
     * Configurable option ID.
411
	 * @see #getDefaultOptions()
722
     * <pre>
723
	 * COMPILER / Reporting Switch Fall-Through Case
724
	 *    When enabled, the compiler will issue an error or a warning if a case may be
725
	 *    entered by falling through previous case. Empty cases are allowed.
726
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.fallthroughCase"
727
	 *     - possible values:   { "error", "warning", "ignore" }
728
	 *     - default:           "ignore"
729
     * </pre>
412
	 * @since 3.2
730
	 * @since 3.2
731
	 * @category CompilerOptionID
413
	 */
732
	 */
414
	public static final String COMPILER_PB_FALLTHROUGH_CASE = PLUGIN_ID + ".compiler.problem.fallthroughCase"; //$NON-NLS-1$
733
	public static final String COMPILER_PB_FALLTHROUGH_CASE = PLUGIN_ID + ".compiler.problem.fallthroughCase"; //$NON-NLS-1$
415
	/**
734
	/**
416
	 * Possible  configurable option ID.
735
     * Configurable option ID.
417
	 * @see #getDefaultOptions()
736
     * <pre>
737
	 * COMPILER / Reporting Empty Statements and Unnecessary Semicolons
738
	 *    When enabled, the compiler will issue an error or a warning if an empty statement or a
739
	 *    unnecessary semicolon is encountered.
740
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.emptyStatement"
741
	 *     - possible values:   { "error", "warning", "ignore" }
742
	 *     - default:           "ignore"
743
     * </pre>
418
	 * @since 3.0
744
	 * @since 3.0
745
	 * @category CompilerOptionID
419
	 */
746
	 */
420
	public static final String COMPILER_PB_EMPTY_STATEMENT = PLUGIN_ID + ".compiler.problem.emptyStatement"; //$NON-NLS-1$
747
	public static final String COMPILER_PB_EMPTY_STATEMENT = PLUGIN_ID + ".compiler.problem.emptyStatement"; //$NON-NLS-1$
421
	/**
748
	/**
422
	 * Possible  configurable option ID.
749
     * Configurable option ID.
423
	 * @see #getDefaultOptions()
424
	 * @since 3.0
750
	 * @since 3.0
751
	 * @category CompilerOptionID
425
	 */
752
	 */
426
	public static final String COMPILER_PB_BOOLEAN_METHOD_THROWING_EXCEPTION = PLUGIN_ID + ".compiler.problem.booleanMethodThrowingException"; //$NON-NLS-1$
753
	public static final String COMPILER_PB_BOOLEAN_METHOD_THROWING_EXCEPTION = PLUGIN_ID + ".compiler.problem.booleanMethodThrowingException"; //$NON-NLS-1$
427
	/**
754
	/**
428
	 * Possible  configurable option ID.
755
     * Configurable option ID.
429
	 * @see #getDefaultOptions()
756
     * <pre>
757
	 * COMPILER / Reporting Unnecessary Type Check
758
	 *    When enabled, the compiler will issue an error or a warning when a cast or an instanceof operation
759
	 *    is unnecessary.
760
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck"
761
	 *     - possible values:   { "error", "warning", "ignore" }
762
	 *     - default:           "ignore"
763
     * </pre>
430
	 * @since 3.0
764
	 * @since 3.0
765
	 * @category CompilerOptionID
431
	 */
766
	 */
432
	public static final String COMPILER_PB_UNNECESSARY_TYPE_CHECK = PLUGIN_ID + ".compiler.problem.unnecessaryTypeCheck"; //$NON-NLS-1$
767
	public static final String COMPILER_PB_UNNECESSARY_TYPE_CHECK = PLUGIN_ID + ".compiler.problem.unnecessaryTypeCheck"; //$NON-NLS-1$
433
	/**
768
	/**
434
	 * Possible  configurable option ID.
769
     * Configurable option ID.
435
	 * @see #getDefaultOptions()
770
     * <pre>
771
	 * COMPILER / Reporting Unnecessary Else
772
	 *    When enabled, the compiler will issue an error or a warning when a statement is unnecessarily
773
	 *    nested within an else clause (in situation where then clause is not completing normally).
774
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryElse"
775
	 *     - possible values:   { "error", "warning", "ignore" }
776
	 *     - default:           "ignore"
777
     * </pre>
436
	 * @since 3.0
778
	 * @since 3.0
779
	 * @category CompilerOptionID
437
	 */
780
	 */
438
	public static final String COMPILER_PB_UNNECESSARY_ELSE = PLUGIN_ID + ".compiler.problem.unnecessaryElse"; //$NON-NLS-1$
781
	public static final String COMPILER_PB_UNNECESSARY_ELSE = PLUGIN_ID + ".compiler.problem.unnecessaryElse"; //$NON-NLS-1$
439
	/**
782
	/**
440
	 * Possible  configurable option ID.
783
     * Configurable option ID.
441
	 * @see #getDefaultOptions()
784
     * <pre>
785
	 * COMPILER / Reporting Undocumented Empty Block
786
	 *    When enabled, the compiler will issue an error or a warning when an empty block is detected and it is not
787
	 *    documented with any comment.
788
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock"
789
	 *     - possible values:   { "error", "warning", "ignore" }
790
	 *     - default:           "ignore"
791
     * </pre>
442
	 * @since 3.0
792
	 * @since 3.0
793
	 * @category CompilerOptionID
443
	 */
794
	 */
444
	public static final String COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK = PLUGIN_ID + ".compiler.problem.undocumentedEmptyBlock"; //$NON-NLS-1$
795
	public static final String COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK = PLUGIN_ID + ".compiler.problem.undocumentedEmptyBlock"; //$NON-NLS-1$
445
	/**
796
	/**
446
	 * Possible  configurable option ID.
797
     * Configurable option ID.
447
	 * @see #getDefaultOptions()
798
     * <pre>
799
	 * COMPILER / Reporting Finally Blocks Not Completing Normally
800
	 *    When enabled, the compiler will issue an error or a warning when a finally block does not complete normally.
801
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally"
802
	 *     - possible values:   { "error", "warning", "ignore" }
803
	 *     - default:           "warning"
804
     * </pre>
448
	 * @since 3.0
805
	 * @since 3.0
806
	 * @category CompilerOptionID
449
	 */
807
	 */
450
	public static final String COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING = PLUGIN_ID + ".compiler.problem.finallyBlockNotCompletingNormally"; //$NON-NLS-1$
808
	public static final String COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING = PLUGIN_ID + ".compiler.problem.finallyBlockNotCompletingNormally"; //$NON-NLS-1$
451
	/**
809
	/**
452
	 * Possible  configurable option ID.
810
     * Configurable option ID.
453
	 * @see #getDefaultOptions()
811
     * <pre>
812
	 * COMPILER / Reporting Unused Declared Thrown Exception
813
	 *    When enabled, the compiler will issue an error or a warning when a 
814
	 *    method or a constructor is declaring a thrown exception, but never 
815
	 *    actually raises it in its body. Depending on
816
	 *    "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions",
817
	 *    only checked exceptions will be considered (default), or all 
818
	 *    exceptions, including unchecked ones, will be considered. 
819
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException"
820
	 *     - possible values:   { "error", "warning", "ignore" }
821
	 *     - default:           "ignore"
822
     * </pre>
454
	 * @since 3.0
823
	 * @since 3.0
824
	 * @category CompilerOptionID
455
	 */
825
	 */
456
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownException"; //$NON-NLS-1$
826
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownException"; //$NON-NLS-1$
457
	/**
827
	/**
458
	 * Possible  configurable option ID.
828
     * Configurable option ID.
459
	 * @see #getDefaultOptions()
829
     * <pre>
830
	 * COMPILER / Reporting Unused Declared Thrown Exception in Overriding Method
831
	 *    When disabled, the compiler will report unused declared thrown
832
	 *    exceptions neither on overriding methods nor on implementing methods.
833
	 *    <br>
834
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
835
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"
836
	 *     - possible values:   { "enabled", "disabled" }
837
	 *     - default:           "disabled"
838
     * </pre>
460
	 * @since 3.0
839
	 * @since 3.0
840
	 * @category CompilerOptionID
461
	 */
841
	 */
462
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"; //$NON-NLS-1$
842
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_WHEN_OVERRIDING = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"; //$NON-NLS-1$
463
	/**
843
	/**
464
	 * Possible  configurable option ID.
844
     * Configurable option ID.
465
	 * @see #getDefaultOptions()
845
     * <pre>
846
	 * COMPILER / Consider Reference in Doc Comment for Unused Declared Thrown Exception Check
847
	 *    When enabled, the compiler will consider doc comment references to exceptions (i.e. @throws clauses) for the unused
848
	 *    declared thrown exception check. Thus, documented exceptions will be considered as mandated as per doc contract.
849
	 *    The severity of the unused declared thrown exception problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
850
	 *    Note: this option has no effect until the doc comment support is enabled according to the 
851
	 *    option "org.eclipse.jdt.core.compiler.doc.comment.support".
852
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference"
853
	 *     - possible values:   { "enabled", "disabled" }
854
	 *     - default:           "enabled"
855
     * </pre>
466
	 * @since 3.4
856
	 * @since 3.4
857
	 * @category CompilerOptionID
467
	 */
858
	 */
468
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_INCLUDE_DOC_COMMENT_REFERENCE = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference"; //$NON-NLS-1$
859
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_INCLUDE_DOC_COMMENT_REFERENCE = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference"; //$NON-NLS-1$
469
	/**
860
	/**
470
	 * Possible  configurable option ID.
861
     * Configurable option ID.
471
	 * @see #getDefaultOptions()
862
     * <pre>
863
     * COMPILER / Reporting Unused Declared Thrown Unchecked Exceptions
864
	 *    When enabled, the compiler will report unused declared thrown 
865
	 *    exceptions for all exceptions, including unchecked ones. When 
866
	 *    disabled, only checked exceptions will be considered.
867
	 *    <br>
868
	 *    The severity of the problem is controlled with option 
869
	 *    "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
870
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions"
871
	 *     - possible values:   { "enabled", "disabled" }
872
	 *     - default:           "disabled"
873
     * </pre>
472
	 * @since 3.4
874
	 * @since 3.4
875
	 * @category CompilerOptionID
473
	 */
876
	 */
474
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_INCLUDE_UNCHECKED_EXCEPTIONS = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions"; //$NON-NLS-1$
877
	public static final String COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION_INCLUDE_UNCHECKED_EXCEPTIONS = PLUGIN_ID + ".compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions"; //$NON-NLS-1$
475
	/**
878
	/**
476
	 * Possible  configurable option ID.
879
     * Configurable option ID.
477
	 * @see #getDefaultOptions()
880
     * <pre>
881
	 * COMPILER / Reporting Unqualified Access to Field
882
	 *    When enabled, the compiler will issue an error or a warning when a field is access without any qualification.
883
	 *    In order to improve code readability, it should be qualified, e.g. 'x' should rather be written 'this.x'.
884
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess"
885
	 *     - possible values:   { "error", "warning", "ignore" }
886
	 *     - default:           "ignore"
887
     * </pre>
478
	 * @since 3.0
888
	 * @since 3.0
889
	 * @category CompilerOptionID
479
	 */
890
	 */
480
	public static final String COMPILER_PB_UNQUALIFIED_FIELD_ACCESS = PLUGIN_ID + ".compiler.problem.unqualifiedFieldAccess"; //$NON-NLS-1$
891
	public static final String COMPILER_PB_UNQUALIFIED_FIELD_ACCESS = PLUGIN_ID + ".compiler.problem.unqualifiedFieldAccess"; //$NON-NLS-1$
481
	/**
892
	/**
482
	 * Possible  configurable option ID.
893
     * @deprecated Use {@link #COMPILER_PB_UNCHECKED_TYPE_OPERATION} instead.
483
	 * @see #getDefaultOptions()
484
	 * @deprecated - got renamed into {@link #COMPILER_PB_UNCHECKED_TYPE_OPERATION}
485
	 * @since 3.1
894
	 * @since 3.1
895
	 * @category DeprecatedOptionID
486
	 */
896
	 */
487
	public static final String COMPILER_PB_UNSAFE_TYPE_OPERATION = PLUGIN_ID + ".compiler.problem.uncheckedTypeOperation"; //$NON-NLS-1$
897
	public static final String COMPILER_PB_UNSAFE_TYPE_OPERATION = PLUGIN_ID + ".compiler.problem.uncheckedTypeOperation"; //$NON-NLS-1$
488
	/**
898
	/**
489
	 * Possible  configurable option ID.
899
     * Configurable option ID.
490
	 * @see #getDefaultOptions()
900
     * <pre>
901
	 * COMPILER / Reporting Unchecked Type Operation
902
	 *    When enabled, the compiler will issue an error or a warning whenever an operation involves generic types, and potentially
903
	 *    invalidates type safety since involving raw types (e.g. invoking #foo(X&lt;String&gt;) with arguments  (X)).
904
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation"
905
	 *     - possible values:   { "error", "warning", "ignore" }
906
	 *     - default:           "warning"
907
     * </pre>
491
	 * @since 3.1
908
	 * @since 3.1
909
	 * @category CompilerOptionID
492
	 */
910
	 */
493
	public static final String COMPILER_PB_UNCHECKED_TYPE_OPERATION = PLUGIN_ID + ".compiler.problem.uncheckedTypeOperation"; //$NON-NLS-1$
911
	public static final String COMPILER_PB_UNCHECKED_TYPE_OPERATION = PLUGIN_ID + ".compiler.problem.uncheckedTypeOperation"; //$NON-NLS-1$
494
	/**
912
	/**
495
	 * Possible  configurable option ID.
913
     * Configurable option ID.
496
	 * @see #getDefaultOptions()
914
     * <pre>
915
	 * COMPILER / Reporting Raw Type Reference
916
	 *    When enabled, the compiler will issue an error or a warning when detecting references to raw types. Raw types are
917
	 *    discouraged, and are intended to help interfacing with legacy code. In the future, the language specification may
918
	 *    reject raw references to generic types.
919
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.rawTypeReference"
920
	 *     - possible values:   { "error", "warning", "ignore" }
921
	 *     - default:           "warning"
922
     * </pre>
497
	 * @since 3.2
923
	 * @since 3.2
924
	 * @category CompilerOptionID
498
	 */
925
	 */
499
	public static final String COMPILER_PB_RAW_TYPE_REFERENCE = PLUGIN_ID + ".compiler.problem.rawTypeReference"; //$NON-NLS-1$
926
	public static final String COMPILER_PB_RAW_TYPE_REFERENCE = PLUGIN_ID + ".compiler.problem.rawTypeReference"; //$NON-NLS-1$
500
	/**
927
	/**
501
	 * Possible  configurable option ID.
928
     * Configurable option ID.
502
	 * @see #getDefaultOptions()
929
     * <pre>
930
	 * COMPILER / Reporting final Bound for Type Parameter
931
	 *    When enabled, the compiler will issue an error or a warning whenever a generic type parameter is associated with a
932
	 *    bound corresponding to a final type; since final types cannot be further extended, the parameter is pretty useless.
933
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.finalParameterBound"
934
	 *     - possible values:   { "error", "warning", "ignore" }
935
	 *     - default:           "warning"
936
     * </pre>
503
	 * @since 3.1
937
	 * @since 3.1
938
	 * @category CompilerOptionID
504
	 */
939
	 */
505
	public static final String COMPILER_PB_FINAL_PARAMETER_BOUND = PLUGIN_ID + ".compiler.problem.finalParameterBound"; //$NON-NLS-1$
940
	public static final String COMPILER_PB_FINAL_PARAMETER_BOUND = PLUGIN_ID + ".compiler.problem.finalParameterBound"; //$NON-NLS-1$
506
	/**
941
	/**
507
	 * Possible  configurable option ID.
942
     * Configurable option ID.
508
	 * @see #getDefaultOptions()
943
     * <pre>
944
	 * COMPILER / Reporting Missing Declaration of serialVersionUID Field on Serializable Class
945
	 *    When enabled, the compiler will issue an error or a warning whenever a serializable class is missing a local declaration
946
	 *    of a serialVersionUID field. This field must be declared as static final and be of type long.
947
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingSerialVersion"
948
	 *     - possible values:   { "error", "warning", "ignore" }
949
	 *     - default:           "warning"
950
     * </pre>
509
	 * @since 3.1
951
	 * @since 3.1
952
	 * @category CompilerOptionID
510
	 */
953
	 */
511
	public static final String COMPILER_PB_MISSING_SERIAL_VERSION = PLUGIN_ID + ".compiler.problem.missingSerialVersion"; //$NON-NLS-1$
954
	public static final String COMPILER_PB_MISSING_SERIAL_VERSION = PLUGIN_ID + ".compiler.problem.missingSerialVersion"; //$NON-NLS-1$
512
	/**
955
	/**
513
	 * Possible  configurable option ID.
956
     * Configurable option ID.
514
	 * @see #getDefaultOptions()
957
     * <pre>
958
	 * COMPILER / Reporting Varargs Argument Needing a Cast in Method/Constructor Invocation
959
	 *    When enabled, the compiler will issue an error or a warning whenever a varargs arguments should be cast
960
	 *    when passed to a method/constructor invocation. (e.g. Class.getMethod(String name, Class ... args )
961
	 *    invoked with arguments ("foo", null)).
962
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast"
963
	 *     - possible values:   { "error", "warning", "ignore" }
964
	 *     - default:           "warning"
965
     * </pre>
515
	 * @since 3.1
966
	 * @since 3.1
967
	 * @category CompilerOptionID
516
	 */
968
	 */
517
	public static final String COMPILER_PB_VARARGS_ARGUMENT_NEED_CAST = PLUGIN_ID + ".compiler.problem.varargsArgumentNeedCast"; //$NON-NLS-1$
969
	public static final String COMPILER_PB_VARARGS_ARGUMENT_NEED_CAST = PLUGIN_ID + ".compiler.problem.varargsArgumentNeedCast"; //$NON-NLS-1$
518
	/**
970
	/**
519
	 * Possible  configurable option ID.
971
     * Configurable option ID.
520
	 * @see #getDefaultOptions()
972
     * <pre>
973
	 * COMPILER / Reporting Boxing/Unboxing Conversion
974
	 *    When enabled, the compiler will issue an error or a warning whenever a boxing or an unboxing
975
	 *    conversion is performed.
976
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.autoboxing"
977
	 *     - possible values:   { "error", "warning", "ignore" }
978
	 *     - default:           "ignore"
979
     * </pre>
521
	 * @since 3.1
980
	 * @since 3.1
981
	 * @category CompilerOptionID
522
	 */
982
	 */
523
	public static final String COMPILER_PB_AUTOBOXING = PLUGIN_ID + ".compiler.problem.autoboxing"; //$NON-NLS-1$
983
	public static final String COMPILER_PB_AUTOBOXING = PLUGIN_ID + ".compiler.problem.autoboxing"; //$NON-NLS-1$
524
	/**
984
	/**
525
	 * Possible  configurable option ID.
985
     * Configurable option ID.
526
	 * @see #getDefaultOptions()
986
     * <pre>
987
	 * COMPILER / Reporting Use of Annotation Type as Super Interface
988
	 *    When enabled, the compiler will issue an error or a warning whenever an annotation type is used
989
	 *    as a super-interface. Though legal, this is discouraged.
990
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.annotationSuperInterface"
991
	 *     - possible values:   { "error", "warning", "ignore" }
992
	 *     - default:           "warning"
993
     * </pre>
527
	 * @since 3.1
994
	 * @since 3.1
995
	 * @category CompilerOptionID
528
	 */
996
	 */
529
	public static final String COMPILER_PB_ANNOTATION_SUPER_INTERFACE = PLUGIN_ID + ".compiler.problem.annotationSuperInterface"; //$NON-NLS-1$
997
	public static final String COMPILER_PB_ANNOTATION_SUPER_INTERFACE = PLUGIN_ID + ".compiler.problem.annotationSuperInterface"; //$NON-NLS-1$
530
	/**
998
	/**
531
	 * Possible  configurable option ID.
999
     * Configurable option ID.
532
	 * @see #getDefaultOptions()
1000
     * <pre>
1001
	 * COMPILER / Reporting Missing @Override Annotation
1002
	 *    When enabled, the compiler will issue an error or a warning whenever encountering a method
1003
	 *    declaration which overrides a superclass method but has no @Override annotation.
1004
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation"
1005
	 *     - possible values:   { "error", "warning", "ignore" }
1006
	 *     - default:           "ignore"
1007
     * </pre>
533
	 * @since 3.1
1008
	 * @since 3.1
1009
	 * @category CompilerOptionID
534
	 */
1010
	 */
535
	public static final String COMPILER_PB_MISSING_OVERRIDE_ANNOTATION = PLUGIN_ID + ".compiler.problem.missingOverrideAnnotation"; //$NON-NLS-1$
1011
	public static final String COMPILER_PB_MISSING_OVERRIDE_ANNOTATION = PLUGIN_ID + ".compiler.problem.missingOverrideAnnotation"; //$NON-NLS-1$
536
	/**
1012
	/**
537
	 * Possible  configurable option ID.
1013
     * Configurable option ID.
538
	 * @see #getDefaultOptions()
1014
     * <pre>
1015
	 * COMPILER / Reporting Missing @Deprecated Annotation
1016
	 *    When enabled, the compiler will issue an error or a warning whenever encountering a declaration
1017
	 *    carrying a @deprecated doc tag but having no corresponding @Deprecated annotation.
1018
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation"
1019
	 *     - possible values:   { "error", "warning", "ignore" }
1020
	 *     - default:           "ignore"
1021
     * </pre>
539
	 * @since 3.1
1022
	 * @since 3.1
1023
	 * @category CompilerOptionID
540
	 */
1024
	 */
541
	public static final String COMPILER_PB_MISSING_DEPRECATED_ANNOTATION = PLUGIN_ID + ".compiler.problem.missingDeprecatedAnnotation"; //$NON-NLS-1$
1025
	public static final String COMPILER_PB_MISSING_DEPRECATED_ANNOTATION = PLUGIN_ID + ".compiler.problem.missingDeprecatedAnnotation"; //$NON-NLS-1$
542
	/**
1026
	/**
543
	 * Possible  configurable option ID.
1027
     * Configurable option ID.
544
	 * @see #getDefaultOptions()
1028
     * <pre>
1029
	 * COMPILER / Reporting Incomplete Enum Switch
1030
	 *    When enabled, the compiler will issue an error or a warning whenever
1031
	 *    an enum constant has no corresponding case label in an enum switch
1032
	 *    statement.
1033
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch"
1034
	 *     - possible values:   { "error", "warning", "ignore" }
1035
	 *     - default:           "ignore"
1036
     * </pre>
545
	 * @since 3.1
1037
	 * @since 3.1
1038
	 * @category CompilerOptionID
546
	 */
1039
	 */
547
	public static final String COMPILER_PB_INCOMPLETE_ENUM_SWITCH = PLUGIN_ID + ".compiler.problem.incompleteEnumSwitch"; //$NON-NLS-1$
1040
	public static final String COMPILER_PB_INCOMPLETE_ENUM_SWITCH = PLUGIN_ID + ".compiler.problem.incompleteEnumSwitch"; //$NON-NLS-1$
548
	/**
1041
	/**
549
	 * Possible  configurable option ID.
1042
     * @since 3.1
550
	 * @since 3.1
1043
	 * @deprecated Use {@link #COMPILER_PB_NULL_REFERENCE} instead.
551
	 * @deprecated use {@link #COMPILER_PB_NULL_REFERENCE} instead
1044
	 * @category DeprecatedOptionID
552
	 */
1045
	 */
553
	public static final String COMPILER_PB_INCONSISTENT_NULL_CHECK = PLUGIN_ID + ".compiler.problem.inconsistentNullCheck"; //$NON-NLS-1$
1046
	public static final String COMPILER_PB_INCONSISTENT_NULL_CHECK = PLUGIN_ID + ".compiler.problem.inconsistentNullCheck"; //$NON-NLS-1$
554
	/**
1047
	/**
555
	 * Possible  configurable option ID.
1048
     * Configurable option ID.
556
	 * @see #getDefaultOptions()
1049
     * <pre>
1050
	 * COMPILER / Reporting Unreferenced Label
1051
	 *    When enabled, the compiler will issue an error or a warning when encountering a labeled statement which label
1052
	 *    is never explicitly referenced. A label is considered to be referenced if its name explicitly appears behind a break
1053
	 *    or continue statement; for instance the following label would be considered unreferenced;   LABEL: { break; }
1054
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedLabel"
1055
	 *     - possible values:   { "error", "warning", "ignore" }
1056
	 *     - default:           "warning"
1057
     * </pre>
557
	 * @since 3.2
1058
	 * @since 3.2
1059
	 * @category CompilerOptionID
558
	 */
1060
	 */
559
	public static final String COMPILER_PB_UNUSED_LABEL = PLUGIN_ID + ".compiler.problem.unusedLabel"; //$NON-NLS-1$
1061
	public static final String COMPILER_PB_UNUSED_LABEL = PLUGIN_ID + ".compiler.problem.unusedLabel"; //$NON-NLS-1$
560
	/**
1062
	/**
561
	 * Possible  configurable option ID.
1063
     * Configurable option ID.
562
	 * @see #getDefaultOptions()
1064
     * <pre>
563
	 * @since 3.0
1065
	 * COMPILER / Reporting Invalid Javadoc Comment
564
	 */
1066
	 *    This is the generic control for the severity of Javadoc problems.
565
	public static final String COMPILER_PB_INVALID_JAVADOC = PLUGIN_ID + ".compiler.problem.invalidJavadoc"; //$NON-NLS-1$
1067
	 *    When enabled, the compiler will issue an error or a warning for a problem in Javadoc.
1068
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadoc"
1069
	 *     - possible values:   { "error", "warning", "ignore" }
1070
	 *     - default:           "ignore"
1071
     * </pre>
1072
	 * @since 3.0
1073
	 * @category CompilerOptionID
1074
	 */
1075
	public static final String COMPILER_PB_INVALID_JAVADOC = PLUGIN_ID + ".compiler.problem.invalidJavadoc"; //$NON-NLS-1$
566
	/**
1076
	/**
567
	 * Possible  configurable option ID.
1077
     * Configurable option ID.
568
	 * @see #getDefaultOptions()
1078
     * <pre>
1079
	 * COMPILER / Reporting Invalid Javadoc Tags
1080
	 *    When enabled, the compiler will signal unbound or unexpected reference tags in Javadoc.
1081
	 *    A 'throws' tag referencing an undeclared exception would be considered as unexpected.
1082
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
1083
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
1084
	 *    <br>
1085
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
1086
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTags"
1087
	 *     - possible values:   { "disabled", "enabled" }
1088
	 *     - default:           "disabled"
1089
     * </pre>
569
	 * @since 3.0
1090
	 * @since 3.0
1091
	 * @category CompilerOptionID
570
	 */
1092
	 */
571
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS = PLUGIN_ID + ".compiler.problem.invalidJavadocTags"; //$NON-NLS-1$
1093
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS = PLUGIN_ID + ".compiler.problem.invalidJavadocTags"; //$NON-NLS-1$
572
	/**
1094
	/**
573
	 * Possible  configurable option ID.
1095
     * Configurable option ID.
574
	 * @see #getDefaultOptions()
1096
     * <pre>
1097
	 * COMPILER / Reporting Invalid Javadoc Tags with Deprecated References
1098
	 *    Specify whether the compiler will report deprecated references used in Javadoc tags.
1099
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
1100
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
1101
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef"
1102
	 *     - possible values:   { "enabled", "disabled" }
1103
	 *     - default:           "disabled"
1104
     * </pre>
575
	 * @since 3.1
1105
	 * @since 3.1
1106
	 * @category CompilerOptionID
576
	 */
1107
	 */
577
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS__DEPRECATED_REF = PLUGIN_ID + ".compiler.problem.invalidJavadocTagsDeprecatedRef"; //$NON-NLS-1$
1108
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS__DEPRECATED_REF = PLUGIN_ID + ".compiler.problem.invalidJavadocTagsDeprecatedRef"; //$NON-NLS-1$
578
	/**
1109
	/**
579
	 * Possible  configurable option ID.
1110
     * Configurable option ID.
580
	 * @see #getDefaultOptions()
1111
     * <pre>
1112
	 * COMPILER / Reporting Invalid Javadoc Tags with Not Visible References
1113
	 *    Specify whether the compiler will report non-visible references used in Javadoc tags.
1114
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
1115
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
1116
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef"
1117
	 *     - possible values:   { "enabled", "disabled" }
1118
	 *     - default:           "disabled"
1119
     * </pre>
581
	 * @since 3.1
1120
	 * @since 3.1
1121
	 * @category CompilerOptionID
582
	 */
1122
	 */
583
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS__NOT_VISIBLE_REF = PLUGIN_ID + ".compiler.problem.invalidJavadocTagsNotVisibleRef"; //$NON-NLS-1$
1123
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS__NOT_VISIBLE_REF = PLUGIN_ID + ".compiler.problem.invalidJavadocTagsNotVisibleRef"; //$NON-NLS-1$
584
	/**
1124
	/**
585
	 * Possible  configurable option ID.
1125
     * Configurable option ID.
586
	 * @see #getDefaultOptions()
1126
     * <pre>
1127
	 * COMPILER / Visibility Level For Invalid Javadoc Tags
1128
	 *    Set the minimum visibility level for Javadoc tag problems. Below this level problems will be ignored.
1129
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility"
1130
	 *     - possible values:   { "public", "protected", "default", "private" }
1131
	 *     - default:           "public"
1132
     * </pre>
587
	 * @since 3.0
1133
	 * @since 3.0
1134
	 * @category CompilerOptionID
588
	 */
1135
	 */
589
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY = PLUGIN_ID + ".compiler.problem.invalidJavadocTagsVisibility"; //$NON-NLS-1$
1136
	public static final String COMPILER_PB_INVALID_JAVADOC_TAGS_VISIBILITY = PLUGIN_ID + ".compiler.problem.invalidJavadocTagsVisibility"; //$NON-NLS-1$
590
	/**
1137
	/**
591
	 * Possible configurable option ID.
1138
     * Configurable option ID.
592
	 * @see #getDefaultOptions()
1139
     * <pre>
1140
	 * COMPILER / Reporting missing tag description
1141
	 *    When enabled, the compiler will report a warning or an error for any Javadoc missing a required description.
1142
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
1143
	 *    This option is NOT dependent from the Report errors in tags option.
1144
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription"
1145
	 *     - possible values:   { "return_tag", "all_tags", "no_tag" }
1146
	 *     - default:           "return_tag"
1147
     * </pre>
593
	 * @since 3.4
1148
	 * @since 3.4
1149
	 * @category CompilerOptionID
594
	 */
1150
	 */
595
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION = PLUGIN_ID + ".compiler.problem.missingJavadocTagDescription"; //$NON-NLS-1$
1151
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION = PLUGIN_ID + ".compiler.problem.missingJavadocTagDescription"; //$NON-NLS-1$
596
	/**
1152
	/**
597
	 * Possible configurable option value.
1153
     * Configurable option ID.
598
	 * @see #getDefaultOptions()
1154
     * <pre>
599
	 * @since 3.4
1155
	 * COMPILER / Reporting Missing Javadoc Tags
600
	 */
1156
	 *    This is the generic control for the severity of Javadoc missing tag problems.
601
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_NO_TAG = CompilerOptions.NO_TAG;
1157
	 *    When enabled, the compiler will issue an error or a warning when tags are missing in Javadoc comments.
602
	/**
1158
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
603
	 * Possible configurable option value.
1159
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility".
604
	 * @see #getDefaultOptions()
1160
	 *    <br>
605
	 * @since 3.4
1161
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTags"
606
	 */
1162
	 *     - possible values:   { "error", "warning", "ignore" }
607
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_RETURN_TAG = CompilerOptions.RETURN_TAG;
1163
	 *     - default:           "ignore"
608
	/**
1164
     * </pre>
609
	 * Possible configurable option value.
610
	 * @see #getDefaultOptions()
611
	 * @since 3.4
612
	 */
613
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_ALL_TAGS = CompilerOptions.ALL_TAGS;
614
	/**
615
	 * Possible  configurable option ID.
616
	 * @see #getDefaultOptions()
617
	 * @since 3.0
1165
	 * @since 3.0
1166
	 * @category CompilerOptionID
618
	 */
1167
	 */
619
	public static final String COMPILER_PB_MISSING_JAVADOC_TAGS = PLUGIN_ID + ".compiler.problem.missingJavadocTags"; //$NON-NLS-1$
1168
	public static final String COMPILER_PB_MISSING_JAVADOC_TAGS = PLUGIN_ID + ".compiler.problem.missingJavadocTags"; //$NON-NLS-1$
620
	/**
1169
	/**
621
	 * Possible  configurable option ID.
1170
     * Configurable option ID.
622
	 * @see #getDefaultOptions()
1171
     * <pre>
1172
	 * COMPILER / Visibility Level For Missing Javadoc Tags
1173
	 *    Set the minimum visibility level for Javadoc missing tag problems. Below this level problems will be ignored.
1174
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility"
1175
	 *     - possible values:   { "public", "protected", "default", "private" }
1176
	 *     - default:           "public"
1177
     * </pre>
623
	 * @since 3.0
1178
	 * @since 3.0
1179
	 * @category CompilerOptionID
624
	 */
1180
	 */
625
	public static final String COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY = PLUGIN_ID + ".compiler.problem.missingJavadocTagsVisibility"; //$NON-NLS-1$
1181
	public static final String COMPILER_PB_MISSING_JAVADOC_TAGS_VISIBILITY = PLUGIN_ID + ".compiler.problem.missingJavadocTagsVisibility"; //$NON-NLS-1$
626
	/**
1182
	/**
627
	 * Possible  configurable option ID.
1183
     * Configurable option ID.
628
	 * @see #getDefaultOptions()
1184
     * <pre>
1185
	 * COMPILER / Reporting Missing Javadoc Tags on Overriding Methods
1186
	 *    Specify whether the compiler will verify overriding methods in order to report Javadoc missing tag problems.
1187
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding"
1188
	 *     - possible values:   { "enabled", "disabled" }
1189
	 *     - default:           "disabled"
1190
     * </pre>
629
	 * @since 3.0
1191
	 * @since 3.0
1192
	 * @category CompilerOptionID
630
	 */
1193
	 */
631
	public static final String COMPILER_PB_MISSING_JAVADOC_TAGS_OVERRIDING = PLUGIN_ID + ".compiler.problem.missingJavadocTagsOverriding"; //$NON-NLS-1$
1194
	public static final String COMPILER_PB_MISSING_JAVADOC_TAGS_OVERRIDING = PLUGIN_ID + ".compiler.problem.missingJavadocTagsOverriding"; //$NON-NLS-1$
632
	/**
1195
	/**
633
	 * Possible  configurable option ID.
1196
     * Configurable option ID.
634
	 * @see #getDefaultOptions()
1197
     * <pre>
1198
	 * COMPILER / Reporting Missing Javadoc Comments
1199
	 *    This is the generic control for the severity of missing Javadoc comment problems.
1200
	 *    When enabled, the compiler will issue an error or a warning when Javadoc comments are missing.
1201
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the expected Javadoc;
1202
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility".
1203
	 *    <br>
1204
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocComments"
1205
	 *     - possible values:   { "error", "warning", "ignore" }
1206
	 *     - default:           "ignore"
1207
     * </pre>
635
	 * @since 3.0
1208
	 * @since 3.0
1209
	 * @category CompilerOptionID
636
	 */
1210
	 */
637
	public static final String COMPILER_PB_MISSING_JAVADOC_COMMENTS = PLUGIN_ID + ".compiler.problem.missingJavadocComments"; //$NON-NLS-1$
1211
	public static final String COMPILER_PB_MISSING_JAVADOC_COMMENTS = PLUGIN_ID + ".compiler.problem.missingJavadocComments"; //$NON-NLS-1$
638
	/**
1212
	/**
639
	 * Possible  configurable option ID.
1213
     * Configurable option ID.
640
	 * @see #getDefaultOptions()
1214
     * <pre>
1215
	 * COMPILER / Visibility Level For Missing Javadoc Comments
1216
	 *    Set the minimum visibility level for missing Javadoc problems. Below this level problems will be ignored.
1217
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility"
1218
	 *     - possible values:   { "public", "protected", "default", "private" }
1219
	 *     - default:           "public"
1220
     * </pre>
641
	 * @since 3.0
1221
	 * @since 3.0
1222
	 * @category CompilerOptionID
642
	 */
1223
	 */
643
	public static final String COMPILER_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY = PLUGIN_ID + ".compiler.problem.missingJavadocCommentsVisibility"; //$NON-NLS-1$
1224
	public static final String COMPILER_PB_MISSING_JAVADOC_COMMENTS_VISIBILITY = PLUGIN_ID + ".compiler.problem.missingJavadocCommentsVisibility"; //$NON-NLS-1$
644
	/**
1225
	/**
645
	 * Possible  configurable option ID.
1226
     * Configurable option ID.
646
	 * @see #getDefaultOptions()
1227
     * <pre>
1228
	 * COMPILER / Reporting Missing Javadoc Comments on Overriding Methods
1229
	 *    Specify whether the compiler will verify overriding methods in order to report missing Javadoc comment problems.
1230
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding"
1231
	 *     - possible values:   { "enabled", "disabled" }
1232
	 *     - default:           "disabled"
1233
     * </pre>
647
	 * @since 3.0
1234
	 * @since 3.0
1235
	 * @category CompilerOptionID
648
	 */
1236
	 */
649
	public static final String COMPILER_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING = PLUGIN_ID + ".compiler.problem.missingJavadocCommentsOverriding"; //$NON-NLS-1$
1237
	public static final String COMPILER_PB_MISSING_JAVADOC_COMMENTS_OVERRIDING = PLUGIN_ID + ".compiler.problem.missingJavadocCommentsOverriding"; //$NON-NLS-1$
650
	/**
1238
	/**
651
	 * Possible  configurable option ID.
1239
     * Configurable option ID.
652
	 * @see #getDefaultOptions()
1240
     * <pre>
1241
	 * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
1242
	 *    When enabled, the compiler will issue an error or a warning whenever a char[] expression
1243
	 *    is used in String concatenations (for example, "hello" + new char[]{'w','o','r','l','d'}).
1244
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
1245
	 *     - possible values:   { "error", "warning", "ignore" }
1246
	 *     - default:           "warning"
1247
     * </pre>
653
	 * @since 2.1
1248
	 * @since 2.1
1249
	 * @category CompilerOptionID
654
	 */
1250
	 */
655
	public static final String COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION = PLUGIN_ID + ".compiler.problem.noImplicitStringConversion"; //$NON-NLS-1$
1251
	public static final String COMPILER_PB_CHAR_ARRAY_IN_STRING_CONCATENATION = PLUGIN_ID + ".compiler.problem.noImplicitStringConversion"; //$NON-NLS-1$
656
	/**
1252
	/**
657
	 * Possible  configurable option ID.
1253
     * Configurable option ID.
658
	 * @see #getDefaultOptions()
1254
     * <pre>
1255
	 * COMPILER / Maximum Number of Problems Reported per Compilation Unit
1256
	 *    Specify the maximum number of problems reported on each compilation unit.
1257
	 *     - option id:         "org.eclipse.jdt.core.compiler.maxProblemPerUnit"
1258
	 *     - possible values:	"&lt;n&gt;" where &lt;n&gt; is zero or a positive integer (if zero then all problems are reported).
1259
	 *     - default:           "100"
1260
     * </pre>
659
	 * @since 2.0
1261
	 * @since 2.0
1262
	 * @category CompilerOptionID
660
	 */
1263
	 */
661
	public static final String COMPILER_PB_MAX_PER_UNIT = PLUGIN_ID + ".compiler.maxProblemPerUnit"; //$NON-NLS-1$
1264
	public static final String COMPILER_PB_MAX_PER_UNIT = PLUGIN_ID + ".compiler.maxProblemPerUnit"; //$NON-NLS-1$
662
	/**
1265
	/**
663
	 * Possible  configurable option ID.
1266
     * Configurable option ID.
664
	 * @see #getDefaultOptions()
1267
     * <pre>
1268
	 * COMPILER / Treating Optional Error as Fatal
1269
	 *    When enabled, optional errors (i.e. optional problems which severity is set to "error") will be treated as standard
1270
	 *    compiler errors, yielding problem methods/types preventing from running offending code until the issue got resolved.
1271
	 *    When disabled, optional errors are only considered as warnings, still carrying an error indication to make them more
1272
	 *    severe. Note that by default, errors are fatal, whether they are optional or not.
1273
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.fatalOptionalError"
1274
	 *     - possible values:   { "enabled", "disabled" }
1275
	 *     - default:           "enabled"
1276
     * </pre>
665
	 * @since 3.2
1277
	 * @since 3.2
1278
	 * @category CompilerOptionID
666
	 */
1279
	 */
667
	public static final String COMPILER_PB_FATAL_OPTIONAL_ERROR = PLUGIN_ID + ".compiler.problem.fatalOptionalError"; //$NON-NLS-1$
1280
	public static final String COMPILER_PB_FATAL_OPTIONAL_ERROR = PLUGIN_ID + ".compiler.problem.fatalOptionalError"; //$NON-NLS-1$
668
	/**
1281
	/**
669
	 * Possible configurable option ID.
1282
     * Configurable option ID.
670
	 * @see #getDefaultOptions()
1283
     * <pre>
1284
	 * COMPILER / Reporting Parameter Assignment
1285
	 *    When enabled, the compiler will issue an error or a warning if a parameter is
1286
	 *    assigned to.
1287
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.parameterAssignment"
1288
	 *     - possible values:   { "error", "warning", "ignore" }
1289
	 *     - default:           "ignore"
1290
     * </pre>
671
	 * @since 3.2
1291
	 * @since 3.2
1292
	 * @category CompilerOptionID
672
	 */
1293
	 */
673
	public static final String COMPILER_PB_PARAMETER_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.parameterAssignment"; //$NON-NLS-1$
1294
	public static final String COMPILER_PB_PARAMETER_ASSIGNMENT = PLUGIN_ID + ".compiler.problem.parameterAssignment"; //$NON-NLS-1$
674
	/**
1295
	/**
675
	 * Possible  configurable option ID.
1296
	 * Configurable option ID.
676
	 * @see #getDefaultOptions()
1297
	 * <pre>
1298
	 * COMPILER / Setting Source Compatibility Mode
1299
	 *    Specify whether which source level compatibility is used. From 1.4 on, 'assert' is a keyword
1300
	 *    reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
1301
	 *    level should be set to "1.4" and the compliance mode should be "1.4".
1302
	 *    Source level 1.5 is necessary to enable generics, autoboxing, covariance, annotations, enumerations
1303
	 *    enhanced for loop, static imports and varargs. Once toggled, the target VM level should be set to "1.5"
1304
	 *    and the compliance mode should be "1.5".
1305
	 *    Source level 1.6 is necessary to enable the computation of stack map tables. Once toggled, the target
1306
	 *    VM level should be set to "1.6" and the compliance mode should be "1.6".
1307
	 *    Once the source level 1.7 is toggled, the target VM level should be set to "1.7" and the compliance mode
1308
	 *    should be "1.7".
1309
	 *     - option id:         "org.eclipse.jdt.core.compiler.source"
1310
	 *     - possible values:   { "1.3", "1.4", "1.5", "1.6", "1.7" }
1311
	 *     - default:           "1.3"
1312
	 * </pre>
677
	 * @since 2.0
1313
	 * @since 2.0
1314
	 * @category CompilerOptionID
678
	 */
1315
	 */
679
	public static final String COMPILER_SOURCE = PLUGIN_ID + ".compiler.source"; //$NON-NLS-1$
1316
	public static final String COMPILER_SOURCE = PLUGIN_ID + ".compiler.source"; //$NON-NLS-1$
680
	/**
1317
	/**
681
	 * Possible  configurable option ID.
1318
	 * Configurable option ID.
682
	 * @see #getDefaultOptions()
1319
	 * <pre>
1320
	 * COMPILER / Setting Compliance Level
1321
	 *    Select the compliance level for the compiler. In "1.3" mode, source and target settings
1322
	 *    should not go beyond "1.3" level.
1323
	 *     - option id:         "org.eclipse.jdt.core.compiler.compliance"
1324
	 *     - possible values:   { "1.3", "1.4", "1.5", "1.6", "1.7" }
1325
	 *     - default:           "1.4"	 
1326
	 * </pre>
683
	 * @since 2.0
1327
	 * @since 2.0
1328
	 * @category CompilerOptionID
684
	 */
1329
	 */
685
	public static final String COMPILER_COMPLIANCE = PLUGIN_ID + ".compiler.compliance"; //$NON-NLS-1$
1330
	public static final String COMPILER_COMPLIANCE = PLUGIN_ID + ".compiler.compliance"; //$NON-NLS-1$
686
	/**
1331
	/**
687
	 * Possible  configurable option ID.
1332
     * Configurable option ID.
688
	 * @see #getDefaultOptions()
1333
     * <pre>
1334
	 * COMPILER / Defining the Automatic Task Priorities
1335
	 *    In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
1336
	 *    of the task markers issued by the compiler.
1337
	 *    If the default is specified, the priority of each task marker is "NORMAL".
1338
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskPriorities"
1339
	 *     - possible values:   { "&lt;priority&gt;[,&lt;priority&gt;]*" } where &lt;priority&gt; is one of "HIGH", "NORMAL" or "LOW"
1340
	 *     - default:           "NORMAL,HIGH,NORMAL"
1341
     * </pre>
689
	 * @since 2.1
1342
	 * @since 2.1
1343
	 * @category CompilerOptionID
690
	 */
1344
	 */
691
	public static final String COMPILER_TASK_PRIORITIES = PLUGIN_ID + ".compiler.taskPriorities"; //$NON-NLS-1$
1345
	public static final String COMPILER_TASK_PRIORITIES = PLUGIN_ID + ".compiler.taskPriorities"; //$NON-NLS-1$
692
	/**
1346
	/**
693
	 * Possible  configurable option value for COMPILER_TASK_PRIORITIES.
1347
     * Configurable option ID.
694
	 * @see #getDefaultOptions()
1348
     * <pre>
695
	 * @since 2.1
1349
	 * COMPILER / Defining the Automatic Task Tags
696
	 */
1350
	 *    When the tag list is not empty, the compiler will issue a task marker whenever it encounters
697
	public static final String COMPILER_TASK_PRIORITY_HIGH = "HIGH"; //$NON-NLS-1$
1351
	 *    one of the corresponding tags inside any comment in Java source code.
698
	/**
1352
	 *    Generated task messages will start with the tag, and range until the next line separator,
699
	 * Possible  configurable option value for COMPILER_TASK_PRIORITIES.
1353
	 *    comment ending, or tag.
700
	 * @see #getDefaultOptions()
1354
	 *    When a given line of code bears multiple tags, each tag will be reported separately.
701
	 * @since 2.1
1355
	 *    Moreover, a tag immediately followed by another tag will be reported using the contents of the
702
	 */
1356
	 *    next non-empty tag of the line, if any.
703
	public static final String COMPILER_TASK_PRIORITY_LOW = "LOW"; //$NON-NLS-1$
1357
	 *    Note that tasks messages are trimmed. If a tag is starting with a letter or digit, then it cannot be leaded by
704
	/**
1358
	 *    another letter or digit to be recognized ("fooToDo" will not be recognized as a task for tag "ToDo", but "foo#ToDo"
705
	 * Possible  configurable option value for COMPILER_TASK_PRIORITIES.
1359
	 *    will be detected for either tag "ToDo" or "#ToDo"). Respectively, a tag ending with a letter or digit cannot be followed
706
	 * @see #getDefaultOptions()
1360
	 *    by a letter or digit to be recognized ("ToDofoo" will not be recognized as a task for tag "ToDo", but "ToDo:foo" will
707
	 * @since 2.1
1361
	 *    be detected either for tag "ToDo" or "ToDo:").
708
	 */
1362
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskTags"
709
	public static final String COMPILER_TASK_PRIORITY_NORMAL = "NORMAL"; //$NON-NLS-1$
1363
	 *     - possible values:   { "&lt;tag&gt;[,&lt;tag&gt;]*" } where &lt;tag&gt; is a String without any wild-card or leading/trailing spaces
710
	/**
1364
	 *     - default:           "TODO,FIXME,XXX"
711
	 * Possible  configurable option ID.
1365
     * </pre>
712
	 * @see #getDefaultOptions()
713
	 * @since 2.1
1366
	 * @since 2.1
1367
	 * @category CompilerOptionID
714
	 */
1368
	 */
715
	public static final String COMPILER_TASK_TAGS = PLUGIN_ID + ".compiler.taskTags"; //$NON-NLS-1$
1369
	public static final String COMPILER_TASK_TAGS = PLUGIN_ID + ".compiler.taskTags"; //$NON-NLS-1$
716
	/**
1370
	/**
717
	 * Possible  configurable option ID.
1371
     * Configurable option ID.
718
	 * @see #getDefaultOptions()
1372
     * <pre>
1373
	 * COMPILER / Determining whether task tags are case-sensitive
1374
	 *    When enabled, task tags are considered in a case-sensitive way.
1375
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskCaseSensitive"
1376
	 *     - possible values:   { "enabled", "disabled" }
1377
	 *     - default:           "enabled"
1378
     * </pre>
719
	 * @since 3.0
1379
	 * @since 3.0
1380
	 * @category CompilerOptionID
720
	 */
1381
	 */
721
	public static final String COMPILER_TASK_CASE_SENSITIVE = PLUGIN_ID + ".compiler.taskCaseSensitive"; //$NON-NLS-1$
1382
	public static final String COMPILER_TASK_CASE_SENSITIVE = PLUGIN_ID + ".compiler.taskCaseSensitive"; //$NON-NLS-1$
722
	/**
1383
	/**
723
	 * Possible  configurable option ID.
1384
     * Configurable option ID.
724
	 * @see #getDefaultOptions()
1385
     * <pre>
1386
	 * COMPILER / Reporting Forbidden Reference to Type with Restricted Access
1387
	 *    When enabled, the compiler will issue an error or a warning when referring to a type that is non accessible, as defined according
1388
	 *    to the access rule specifications.
1389
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.forbiddenReference"
1390
	 *     - possible values:   { "error", "warning", "ignore" }
1391
	 *     - default:           "warning"
1392
     * </pre>
725
	 * @since 3.1
1393
	 * @since 3.1
1394
	 * @category CompilerOptionID
726
	 */
1395
	 */
727
	public static final String COMPILER_PB_FORBIDDEN_REFERENCE = PLUGIN_ID + ".compiler.problem.forbiddenReference"; //$NON-NLS-1$
1396
	public static final String COMPILER_PB_FORBIDDEN_REFERENCE = PLUGIN_ID + ".compiler.problem.forbiddenReference"; //$NON-NLS-1$
728
	/**
1397
	/**
729
	 * Possible  configurable option ID.
1398
     * Configurable option ID.
730
	 * @see #getDefaultOptions()
1399
     * <pre>
1400
	 * COMPILER / Reporting Discouraged Reference to Type with Restricted Access
1401
	 *    When enabled, the compiler will issue an error or a warning when referring to a type with discouraged access, as defined according
1402
	 *    to the access rule specifications.
1403
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.discouragedReference"
1404
	 *     - possible values:   { "error", "warning", "ignore" }
1405
	 *     - default:           "warning"
1406
     * </pre>
731
	 * @since 3.1
1407
	 * @since 3.1
1408
	 * @category CompilerOptionID
732
	 */
1409
	 */
733
	public static final String COMPILER_PB_DISCOURAGED_REFERENCE = PLUGIN_ID + ".compiler.problem.discouragedReference"; //$NON-NLS-1$
1410
	public static final String COMPILER_PB_DISCOURAGED_REFERENCE = PLUGIN_ID + ".compiler.problem.discouragedReference"; //$NON-NLS-1$
734
	/**
1411
	/**
735
	 * Possible  configurable option ID.
1412
     * Configurable option ID.
736
	 * @see #getDefaultOptions()
1413
     * <pre>
1414
	 * COMPILER / Determining Effect of @SuppressWarnings
1415
	 *    When enabled, the @SuppressWarnings annotation can be used to suppress some compiler warnings.
1416
	 *    When disabled, all @SupressWarnings annotations are ignored; i.e., warnings are reported.
1417
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.suppressWarnings"
1418
	 *     - possible values:   { "enabled", "disabled" }
1419
	 *     - default:           "enabled"
1420
     * </pre>
737
	 * @since 3.1
1421
	 * @since 3.1
1422
	 * @category CompilerOptionID
738
	 */
1423
	 */
739
	public static final String COMPILER_PB_SUPPRESS_WARNINGS = PLUGIN_ID + ".compiler.problem.suppressWarnings"; //$NON-NLS-1$
1424
	public static final String COMPILER_PB_SUPPRESS_WARNINGS = PLUGIN_ID + ".compiler.problem.suppressWarnings"; //$NON-NLS-1$
740
	/**
1425
	/**
741
	 * Possible  configurable option ID.
1426
     * Configurable option ID.
742
	 * @see #getDefaultOptions()
1427
     * <pre>
1428
	 * COMPILER / Reporting Unhandled Warning Token for @SuppressWarnings
1429
	 *    When enabled, the compiler will issue an error or a warning when encountering a token
1430
	 *    it cannot handle inside a @SuppressWarnings annotation.
1431
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unhandledWarningToken"
1432
	 *     - possible values:   { "error", "warning", "ignore" }
1433
	 *     - default:           "warning"
1434
     * </pre>
743
	 * @since 3.1
1435
	 * @since 3.1
1436
	 * @category CompilerOptionID
744
	 */
1437
	 */
745
	public static final String COMPILER_PB_UNHANDLED_WARNING_TOKEN = PLUGIN_ID + ".compiler.problem.unhandledWarningToken"; //$NON-NLS-1$
1438
	public static final String COMPILER_PB_UNHANDLED_WARNING_TOKEN = PLUGIN_ID + ".compiler.problem.unhandledWarningToken"; //$NON-NLS-1$
746
	/**
1439
	/**
747
	 * Possible  configurable option ID.
1440
     * Configurable option ID.
748
	 * @see #getDefaultOptions()
1441
     * <pre>
1442
	 * COMPILER / Reporting Unnecessary @SuppressWarnings
1443
	 *    When enabled, the compiler will issue an error or a warning when encountering @SuppressWarnings annotation 
1444
	 *    for which no corresponding warning got detected in the code. This diagnostic is provided to help developers to get
1445
	 *    rid of transient @SuppressWarnings no longer needed. Note that <code>@SuppressWarnings("all")</code> is still 
1446
	 *    silencing the warning for unnecessary <code>@SuppressWarnings</code>, as it is the master switch to silence ALL warnings.
1447
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedWarningToken"
1448
	 *     - possible values:   { "error", "warning", "ignore" }
1449
	 *     - default:           "warning"
1450
     * </pre>
749
	 * @since 3.4
1451
	 * @since 3.4
1452
	 * @category CompilerOptionID
750
	 */
1453
	 */
751
	public static final String COMPILER_PB_UNUSED_WARNING_TOKEN = PLUGIN_ID + ".compiler.problem.unusedWarningToken"; //$NON-NLS-1$
1454
	public static final String COMPILER_PB_UNUSED_WARNING_TOKEN = PLUGIN_ID + ".compiler.problem.unusedWarningToken"; //$NON-NLS-1$
752
	/**
1455
	/**
753
	 * Possible  configurable option ID.
1456
     * Configurable option ID.
754
	 * @see #getDefaultOptions()
1457
     * <pre>
1458
	 * COMPILER / Reporting Null Dereference
1459
	 *    When enabled, the compiler will issue an error or a warning whenever a
1460
	 *    variable that is statically known to hold a null value is used to
1461
	 *    access a field or method.
1462
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.nullReference"
1463
	 *     - possible values:   { "error", "warning", "ignore" }
1464
	 *     - default:           "ignore"
1465
     * </pre>
755
	 * @since 3.2
1466
	 * @since 3.2
1467
	 * @category CompilerOptionID
756
	 */
1468
	 */
757
	public static final String COMPILER_PB_NULL_REFERENCE = PLUGIN_ID + ".compiler.problem.nullReference"; //$NON-NLS-1$
1469
	public static final String COMPILER_PB_NULL_REFERENCE = PLUGIN_ID + ".compiler.problem.nullReference"; //$NON-NLS-1$
758
	/**
1470
	/**
759
	 * Possible  configurable option ID.
1471
     * Configurable option ID.
760
	 * @see #getDefaultOptions()
1472
     * <pre>
1473
	 * COMPILER / Reporting Potential Null Dereference
1474
	 *    When enabled, the compiler will issue an error or a warning whenever a
1475
	 *    variable that has formerly been tested against null but is not (no more)
1476
	 *    statically known to hold a non-null value is used to access a field or
1477
	 *    method.
1478
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.potentialNullReference"
1479
	 *     - possible values:   { "error", "warning", "ignore" }
1480
	 *     - default:           "warning"
1481
     * </pre>
761
	 * @since 3.3
1482
	 * @since 3.3
1483
	 * @category CompilerOptionID
762
	 */
1484
	 */
763
	public static final String COMPILER_PB_POTENTIAL_NULL_REFERENCE = PLUGIN_ID + ".compiler.problem.potentialNullReference"; //$NON-NLS-1$
1485
	public static final String COMPILER_PB_POTENTIAL_NULL_REFERENCE = PLUGIN_ID + ".compiler.problem.potentialNullReference"; //$NON-NLS-1$
764
	/**
1486
	/**
765
	 * Possible  configurable option ID.
1487
     * Configurable option ID.
766
	 * @see #getDefaultOptions()
1488
     * <pre>
1489
	 * COMPILER / Reporting Redundant Null Check
1490
	 *    When enabled, the compiler will issue an error or a warning whenever a
1491
	 *    variable that is statically known to hold a null or a non-null value
1492
	 *    is tested against null.
1493
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.redundantNullCheck"
1494
	 *     - possible values:   { "error", "warning", "ignore" }
1495
	 *     - default:           "ignore"
1496
     * </pre>
767
	 * @since 3.3
1497
	 * @since 3.3
1498
	 * @category CompilerOptionID
768
	 */
1499
	 */
769
	public static final String COMPILER_PB_REDUNDANT_NULL_CHECK = PLUGIN_ID + ".compiler.problem.redundantNullCheck"; //$NON-NLS-1$
1500
	public static final String COMPILER_PB_REDUNDANT_NULL_CHECK = PLUGIN_ID + ".compiler.problem.redundantNullCheck"; //$NON-NLS-1$
770
	/**
1501
	/**
771
	 * Possible  configurable option ID.
1502
     * Configurable option ID.
772
	 * @see #getDefaultOptions()
1503
     * <pre>
1504
	 * COMPILER / Reporting Overriding method that doesn't call the super method invocation
1505
	 *    When enabled, the compiler will issue an error or a warning if a method is overriding a method without calling
1506
	 *    the super invocation.
1507
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.overridingMethodWithoutSuperInvocation"
1508
	 *     - possible values:   { "error", "warning", "ignore" }
1509
	 *     - default:           "ignore"
1510
     * </pre>
773
	 * @since 3.3
1511
	 * @since 3.3
1512
	 * @category CompilerOptionID
774
	 */
1513
	 */
775
	public static final String COMPILER_PB_OVERRIDING_METHOD_WITHOUT_SUPER_INVOCATION = PLUGIN_ID + ".compiler.problem.overridingMethodWithoutSuperInvocation"; //$NON-NLS-1$
1514
	public static final String COMPILER_PB_OVERRIDING_METHOD_WITHOUT_SUPER_INVOCATION = PLUGIN_ID + ".compiler.problem.overridingMethodWithoutSuperInvocation"; //$NON-NLS-1$
776
	/**
1515
	/**
777
	 * Possible  configurable option ID.
1516
     * Configurable option ID.
778
	 * @see #getDefaultOptions()
1517
     * <pre>
1518
	 * COMPILER / Reporting Redundant Superinterface
1519
	 *    When enabled, the compiler will issue an error or a warning if a type
1520
	 *    explicitly implements an interface that is already implemented by any 
1521
	 *    of its supertypes.
1522
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.redundantSuperinterface"
1523
	 *     - possible values:   { "error", "warning", "ignore" }
1524
	 *     - default:           "ignore"
1525
     * </pre>
779
	 * @since 3.4
1526
	 * @since 3.4
1527
	 * @category CompilerOptionID
780
	 */
1528
	 */
781
	public static final String COMPILER_PB_REDUNDANT_SUPERINTERFACE = PLUGIN_ID + ".compiler.problem.redundantSuperinterface"; //$NON-NLS-1$
1529
	public static final String COMPILER_PB_REDUNDANT_SUPERINTERFACE = PLUGIN_ID + ".compiler.problem.redundantSuperinterface"; //$NON-NLS-1$
782
	/**
1530
	/**
783
	 * Possible  configurable option ID.
1531
     * Configurable option ID.
784
	 * @see #getDefaultOptions()
1532
     * <pre>
1533
	 * JAVACORE / Computing Project Build Order
1534
	 *    Indicate whether JavaCore should enforce the project build order to be based on
1535
	 *    the classpath prerequisite chain. When requesting to compute, this takes over
1536
	 *    the platform default order (based on project references).
1537
	 *     - option id:         "org.eclipse.jdt.core.computeJavaBuildOrder"
1538
	 *     - possible values:   { "compute", "ignore" }
1539
	 *     - default:           "ignore"
1540
     * </pre>
1541
	 * @category CoreOptionID
785
	 */
1542
	 */
786
	public static final String CORE_JAVA_BUILD_ORDER = PLUGIN_ID + ".computeJavaBuildOrder"; //$NON-NLS-1$
1543
	public static final String CORE_JAVA_BUILD_ORDER = PLUGIN_ID + ".computeJavaBuildOrder"; //$NON-NLS-1$
787
	/**
1544
	/**
788
	 * Possible  configurable option ID.
1545
     * Configurable option ID.
789
	 * @see #getDefaultOptions()
1546
     * <pre>
1547
	 * BUILDER / Specifying Filters for Resource Copying Control
1548
	 *    Allow to specify some filters to control the resource copy process.
1549
	 *     - option id:         "org.eclipse.jdt.core.builder.resourceCopyExclusionFilter"
1550
	 *     - possible values:   { "&lt;name&gt;[,&lt;name&gt;]* } where &lt;name&gt; is a file name pattern (* and ? wild-cards allowed)
1551
	 *       or the name of a folder which ends with '/'
1552
	 *     - default:           ""
1553
     * </pre>
790
	 * @since 2.0
1554
	 * @since 2.0
1555
	 * @category CoreOptionID
791
	 */
1556
	 */
792
	public static final String CORE_JAVA_BUILD_RESOURCE_COPY_FILTER = PLUGIN_ID + ".builder.resourceCopyExclusionFilter"; //$NON-NLS-1$
1557
	public static final String CORE_JAVA_BUILD_RESOURCE_COPY_FILTER = PLUGIN_ID + ".builder.resourceCopyExclusionFilter"; //$NON-NLS-1$
793
	/**
1558
	/**
794
	 * Possible  configurable option ID.
1559
     * Configurable option ID.
795
	 * @see #getDefaultOptions()
1560
     * <pre>
1561
	 * BUILDER / Reporting Duplicate Resources
1562
	 *    Indicate the severity of the problem reported when more than one occurrence
1563
	 *    of a resource is to be copied into the output location.
1564
	 *     - option id:         "org.eclipse.jdt.core.builder.duplicateResourceTask"
1565
	 *     - possible values:   { "error", "warning" }
1566
	 *     - default:           "warning"
1567
     * </pre>
796
	 * @since 2.1
1568
	 * @since 2.1
1569
	 * @category CoreOptionID
797
	 */
1570
	 */
798
	public static final String CORE_JAVA_BUILD_DUPLICATE_RESOURCE = PLUGIN_ID + ".builder.duplicateResourceTask"; //$NON-NLS-1$
1571
	public static final String CORE_JAVA_BUILD_DUPLICATE_RESOURCE = PLUGIN_ID + ".builder.duplicateResourceTask"; //$NON-NLS-1$
799
	/**
1572
	/**
800
	 * Possible  configurable option ID.
1573
     * Configurable option ID.
801
	 * @see #getDefaultOptions()
1574
     * <pre>
1575
	 * BUILDER / Cleaning Output Folder(s)
1576
	 *    Indicate whether the JavaBuilder is allowed to clean the output folders
1577
	 *    when performing full build operations.
1578
	 *     - option id:         "org.eclipse.jdt.core.builder.cleanOutputFolder"
1579
	 *     - possible values:   { "clean", "ignore" }
1580
	 *     - default:           "clean"
1581
     * </pre>
802
	 * @since 2.1
1582
	 * @since 2.1
1583
	 * @category CoreOptionID
803
	 */
1584
	 */
804
	public static final String CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.cleanOutputFolder"; //$NON-NLS-1$
1585
	public static final String CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.cleanOutputFolder"; //$NON-NLS-1$
805
	/**
1586
	/**
806
	 * Possible  configurable option ID.
1587
     * Configurable option ID.
807
	 * @see #getDefaultOptions()
1588
     * <pre>
1589
	 * BUILDER / Recreate Modified class files in Output Folder
1590
	 *    Indicate whether the JavaBuilder should check for any changes to .class files
1591
	 *    in the output folders while performing incremental build operations. If changes
1592
	 *    are detected to managed .class files, then a full build is performed, otherwise
1593
	 *    the changes are left as is. Tools further altering generated .class files, like optimizers,
1594
	 *    should ensure this option remains set in its default state of ignore.
1595
	 *     - option id:         "org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder"
1596
	 *     - possible values:   { "enabled", "ignore" }
1597
	 *     - default:           "ignore"
1598
     * </pre>
808
	 * @since 3.2
1599
	 * @since 3.2
1600
	 * @category CoreOptionID
809
	 */
1601
	 */
810
	public static final String CORE_JAVA_BUILD_RECREATE_MODIFIED_CLASS_FILES_IN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.recreateModifiedClassFileInOutputFolder"; //$NON-NLS-1$
1602
	public static final String CORE_JAVA_BUILD_RECREATE_MODIFIED_CLASS_FILES_IN_OUTPUT_FOLDER = PLUGIN_ID + ".builder.recreateModifiedClassFileInOutputFolder"; //$NON-NLS-1$
811
	/**
1603
	/**
812
	 * Possible  configurable option ID.
1604
     * Configurable option ID.
813
	 * @see #getDefaultOptions()
1605
     * <pre>
1606
	 * JAVACORE / Reporting Incomplete Classpath
1607
	 *    Indicate the severity of the problem reported when an entry on the classpath does not exist,
1608
	 *    is not legite or is not visible (for example, a referenced project is closed).
1609
	 *     - option id:         "org.eclipse.jdt.core.incompleteClasspath"
1610
	 *     - possible values:   { "error", "warning"}
1611
	 *     - default:           "error"
1612
     * </pre>
814
	 * @since 2.1
1613
	 * @since 2.1
1614
	 * @category CoreOptionID
815
	 */
1615
	 */
816
	public static final String CORE_INCOMPLETE_CLASSPATH = PLUGIN_ID + ".incompleteClasspath"; //$NON-NLS-1$
1616
	public static final String CORE_INCOMPLETE_CLASSPATH = PLUGIN_ID + ".incompleteClasspath"; //$NON-NLS-1$
817
	/**
1617
	/**
818
	 * Possible  configurable option ID.
1618
     * Configurable option ID.
819
	 * @see #getDefaultOptions()
1619
     * <pre>
1620
	 * JAVACORE / Reporting Classpath Cycle
1621
	 *    Indicate the severity of the problem reported when a project is involved in a cycle.
1622
	 *     - option id:         "org.eclipse.jdt.core.circularClasspath"
1623
	 *     - possible values:   { "error", "warning" }
1624
	 *     - default:           "error"
1625
     * </pre>
820
	 * @since 2.1
1626
	 * @since 2.1
1627
	 * @category CoreOptionID
821
	 */
1628
	 */
822
	public static final String CORE_CIRCULAR_CLASSPATH = PLUGIN_ID + ".circularClasspath"; //$NON-NLS-1$
1629
	public static final String CORE_CIRCULAR_CLASSPATH = PLUGIN_ID + ".circularClasspath"; //$NON-NLS-1$
823
	/**
1630
	/**
824
	 * Possible  configurable option ID.
1631
     * Configurable option ID.
825
	 * @see #getDefaultOptions()
1632
     * <pre>
1633
	 * JAVACORE / Reporting Incompatible JDK Level for Required Binaries
1634
	 *    Indicate the severity of the problem reported when a project prerequisites another project
1635
	 *    or library with an incompatible target JDK level (e.g. project targeting 1.1 vm, but compiled against 1.4 libraries).
1636
	 *     - option id:         "org.eclipse.jdt.core.incompatibleJDKLevel"
1637
	 *     - possible values:   { "error", "warning", "ignore" }
1638
	 *     - default:           "ignore"
1639
     * </pre>
826
	 * @since 3.0
1640
	 * @since 3.0
1641
	 * @category CoreOptionID
827
	 */
1642
	 */
828
	public static final String CORE_INCOMPATIBLE_JDK_LEVEL = PLUGIN_ID + ".incompatibleJDKLevel"; //$NON-NLS-1$
1643
	public static final String CORE_INCOMPATIBLE_JDK_LEVEL = PLUGIN_ID + ".incompatibleJDKLevel"; //$NON-NLS-1$
829
	/**
1644
	/**
830
	 * Possible  configurable option ID.
1645
     * Configurable option ID.
831
	 * @see #getDefaultOptions()
1646
     * <pre>
1647
	 * BUILDER / Abort if Invalid Classpath
1648
	 *    Allow to toggle the builder to abort if the classpath is invalid
1649
	 *     - option id:         "org.eclipse.jdt.core.builder.invalidClasspath"
1650
	 *     - possible values:   { "abort", "ignore" }
1651
	 *     - default:           "abort"
1652
     * </pre>
832
	 * @since 2.0
1653
	 * @since 2.0
1654
	 * @category CoreOptionID
833
	 */
1655
	 */
834
	public static final String CORE_JAVA_BUILD_INVALID_CLASSPATH = PLUGIN_ID + ".builder.invalidClasspath"; //$NON-NLS-1$
1656
	public static final String CORE_JAVA_BUILD_INVALID_CLASSPATH = PLUGIN_ID + ".builder.invalidClasspath"; //$NON-NLS-1$
835
	/**
1657
	/**
836
	 * Possible  configurable option ID.
1658
     * Configurable option ID.
837
	 * @see #getDefaultOptions()
1659
     * <pre>
1660
	 * JAVACORE / Default Source Encoding Format
1661
	 *    Get the default encoding format of source files. This value is
1662
	 *    immutable and preset to the result of ResourcesPlugin.getEncoding().
1663
	 *    It is offered as a convenience shortcut only.
1664
	 *     - option id:         "org.eclipse.jdt.core.encoding"
1665
	 *     - value:           &lt;immutable, platform default value&gt;
1666
     * </pre>
838
	 * @since 2.0
1667
	 * @since 2.0
1668
	 * @category CoreOptionID
839
	 */
1669
	 */
840
	public static final String CORE_ENCODING = PLUGIN_ID + ".encoding"; //$NON-NLS-1$
1670
	public static final String CORE_ENCODING = PLUGIN_ID + ".encoding"; //$NON-NLS-1$
841
	/**
1671
	/**
842
	 * Possible  configurable option ID.
1672
     * Configurable option ID.
843
	 * @see #getDefaultOptions()
1673
     * <pre>
1674
	 * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
1675
	 *    When disabled, no entry on a project classpath can be associated with
1676
	 *    an exclusion pattern.
1677
	 *     - option id:         "org.eclipse.jdt.core.classpath.exclusionPatterns"
1678
	 *     - possible values:   { "enabled", "disabled" }
1679
	 *     - default:           "enabled"
1680
     * </pre>
844
	 * @since 2.1
1681
	 * @since 2.1
1682
	 * @category CoreOptionID
845
	 */
1683
	 */
846
	public static final String CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS = PLUGIN_ID + ".classpath.exclusionPatterns"; //$NON-NLS-1$
1684
	public static final String CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS = PLUGIN_ID + ".classpath.exclusionPatterns"; //$NON-NLS-1$
847
	/**
1685
	/**
848
	 * Possible  configurable option ID.
1686
     * Configurable option ID.
849
	 * @see #getDefaultOptions()
1687
     * <pre>
1688
 	 * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
1689
	 *    When disabled, no entry on a project classpath can be associated with
1690
	 *    a specific output location, preventing thus usage of multiple output locations.
1691
	 *     - option id:         "org.eclipse.jdt.core.classpath.multipleOutputLocations"
1692
	 *     - possible values:   { "enabled", "disabled" }
1693
	 *     - default:           "enabled"
1694
     * </pre>
850
	 * @since 2.1
1695
	 * @since 2.1
1696
	 * @category CoreOptionID
851
	 */
1697
	 */
852
	public static final String CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS = PLUGIN_ID + ".classpath.multipleOutputLocations"; //$NON-NLS-1$
1698
	public static final String CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS = PLUGIN_ID + ".classpath.multipleOutputLocations"; //$NON-NLS-1$
853
	/**
1699
	/**
854
	 * Default task tag
1700
     * @since 2.0
855
	 * @deprecated Use {@link #DEFAULT_TASK_TAGS} instead
856
	 * @since 2.1
857
	 */
858
	public static final String DEFAULT_TASK_TAG = "TODO"; //$NON-NLS-1$
859
	/**
860
	 * Default task priority
861
	 * @deprecated Use {@link #DEFAULT_TASK_PRIORITIES} instead
862
	 * @since 2.1
863
	 */
864
	public static final String DEFAULT_TASK_PRIORITY = "NORMAL"; //$NON-NLS-1$
865
	/**
866
	 * Default task tag
867
	 * @since 3.0
868
	 */
869
	public static final String DEFAULT_TASK_TAGS = "TODO,FIXME,XXX"; //$NON-NLS-1$
870
	/**
871
	 * Default task priority
872
	 * @since 3.0
873
	 */
874
	public static final String DEFAULT_TASK_PRIORITIES = "NORMAL,HIGH,NORMAL"; //$NON-NLS-1$
875
	/**
876
	 * Possible  configurable option ID.
877
	 * @see #getDefaultOptions()
878
	 * @since 2.0
879
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_ANONYMOUS_TYPE_DECLARATION},
1701
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_ANONYMOUS_TYPE_DECLARATION},
880
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_BLOCK} ,
1702
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_BLOCK} ,
881
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_CONSTRUCTOR_DECLARATION},
1703
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_CONSTRUCTOR_DECLARATION},
882
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_METHOD_DECLARATION},
1704
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_METHOD_DECLARATION},
883
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_SWITCH},
1705
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_SWITCH},
884
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_TYPE_DECLARATION} instead
1706
	 * {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_BRACE_POSITION_FOR_TYPE_DECLARATION} instead.
1707
	 * @category DeprecatedOptionID
885
	 */
1708
	 */
886
	public static final String FORMATTER_NEWLINE_OPENING_BRACE = PLUGIN_ID + ".formatter.newline.openingBrace"; //$NON-NLS-1$
1709
	public static final String FORMATTER_NEWLINE_OPENING_BRACE = PLUGIN_ID + ".formatter.newline.openingBrace"; //$NON-NLS-1$
887
	/**
1710
	/**
888
	 * Possible  configurable option ID.
1711
     * @since 2.0
889
	 * @see #getDefaultOptions()
890
	 * @since 2.0
891
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_CATCH_IN_TRY_STATEMENT},
1712
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_CATCH_IN_TRY_STATEMENT},
892
	 *  {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_ELSE_IN_IF_STATEMENT},
1713
	 *  {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_ELSE_IN_IF_STATEMENT},
893
	 *  {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_FINALLY_IN_TRY_STATEMENT},
1714
	 *  {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_FINALLY_IN_TRY_STATEMENT},
894
	 *  {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_WHILE_IN_DO_STATEMENT} instead.
1715
	 *  {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_BEFORE_WHILE_IN_DO_STATEMENT} instead.
1716
	 * @category DeprecatedOptionID
895
	 */
1717
	 */
896
	public static final String FORMATTER_NEWLINE_CONTROL = PLUGIN_ID + ".formatter.newline.controlStatement"; //$NON-NLS-1$
1718
	public static final String FORMATTER_NEWLINE_CONTROL = PLUGIN_ID + ".formatter.newline.controlStatement"; //$NON-NLS-1$
897
	/**
1719
	/**
898
	 * Possible  configurable option ID.
899
	 * @see #getDefaultOptions()
900
	 * @since 2.0
1720
	 * @since 2.0
901
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMPACT_ELSE_IF} instead
1721
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_COMPACT_ELSE_IF} instead.
1722
	 * @category DeprecatedOptionID
902
	 */
1723
	 */
903
	public static final String FORMATTER_NEWLINE_ELSE_IF = PLUGIN_ID + ".formatter.newline.elseIf"; //$NON-NLS-1$
1724
	public static final String FORMATTER_NEWLINE_ELSE_IF = PLUGIN_ID + ".formatter.newline.elseIf"; //$NON-NLS-1$
904
	/**
1725
	/**
905
	 * Possible  configurable option ID.
906
	 * @see #getDefaultOptions()
907
	 * @since 2.0
1726
	 * @since 2.0
908
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_IN_EMPTY_BLOCK} instead
1727
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_NEW_LINE_IN_EMPTY_BLOCK} instead.
1728
	 * @category DeprecatedOptionID
909
	 */
1729
	 */
910
	public static final String FORMATTER_NEWLINE_EMPTY_BLOCK = PLUGIN_ID + ".formatter.newline.emptyBlock"; //$NON-NLS-1$
1730
	public static final String FORMATTER_NEWLINE_EMPTY_BLOCK = PLUGIN_ID + ".formatter.newline.emptyBlock"; //$NON-NLS-1$
911
	/**
1731
	/**
912
	 * Possible  configurable option ID.
913
	 * @see #getDefaultOptions()
914
	 * @since 2.0
1732
	 * @since 2.0
915
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_NUMBER_OF_EMPTY_LINES_TO_PRESERVE} instead
1733
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_NUMBER_OF_EMPTY_LINES_TO_PRESERVE} instead.
1734
	 * @category DeprecatedOptionID
916
	 */
1735
	 */
917
	public static final String FORMATTER_CLEAR_BLANK_LINES = PLUGIN_ID + ".formatter.newline.clearAll"; //$NON-NLS-1$
1736
	public static final String FORMATTER_CLEAR_BLANK_LINES = PLUGIN_ID + ".formatter.newline.clearAll"; //$NON-NLS-1$
918
	/**
1737
	/**
919
	 * Possible  configurable option ID.
920
	 * @see #getDefaultOptions()
921
	 * @since 2.0
1738
	 * @since 2.0
922
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_LINE_SPLIT} instead
1739
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_LINE_SPLIT} instead
1740
	 * @category DeprecatedOptionID
923
	 */
1741
	 */
924
	public static final String FORMATTER_LINE_SPLIT = PLUGIN_ID + ".formatter.lineSplit"; //$NON-NLS-1$
1742
	public static final String FORMATTER_LINE_SPLIT = PLUGIN_ID + ".formatter.lineSplit"; //$NON-NLS-1$
925
	/**
1743
	/**
926
	 * Possible  configurable option ID.
927
	 * @see #getDefaultOptions()
928
	 * @since 2.0
1744
	 * @since 2.0
929
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_SPACE_BEFORE_ASSIGNMENT_OPERATOR} instead
1745
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_SPACE_BEFORE_ASSIGNMENT_OPERATOR} instead.
1746
	 * @category DeprecatedOptionID
930
	 */
1747
	 */
931
	public static final String FORMATTER_COMPACT_ASSIGNMENT = PLUGIN_ID + ".formatter.style.assignment"; //$NON-NLS-1$
1748
	public static final String FORMATTER_COMPACT_ASSIGNMENT = PLUGIN_ID + ".formatter.style.assignment"; //$NON-NLS-1$
932
	/**
1749
	/**
933
	 * Possible  configurable option ID.
934
	 * @see #getDefaultOptions()
935
	 * @since 2.0
1750
	 * @since 2.0
936
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_CHAR}} instead
1751
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_CHAR} instead.
1752
	 * @category DeprecatedOptionID
937
	 */
1753
	 */
938
	public static final String FORMATTER_TAB_CHAR = PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$
1754
	public static final String FORMATTER_TAB_CHAR = PLUGIN_ID + ".formatter.tabulation.char"; //$NON-NLS-1$
939
	/**
1755
	/**
940
	 * Possible  configurable option ID.
941
	 * @see #getDefaultOptions()
942
	 * @since 2.0
1756
	 * @since 2.0
943
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_SIZE} instead
1757
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_SIZE} instead.
1758
	 * @category DeprecatedOptionID
944
	 */
1759
	 */
945
	public static final String FORMATTER_TAB_SIZE = PLUGIN_ID + ".formatter.tabulation.size"; //$NON-NLS-1$
1760
	public static final String FORMATTER_TAB_SIZE = PLUGIN_ID + ".formatter.tabulation.size"; //$NON-NLS-1$
946
	/**
1761
	/**
947
	 * Possible configurable option ID
948
	 * @see #getDefaultOptions()
949
	 * @since 2.1
1762
	 * @since 2.1
950
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_SPACE_AFTER_CLOSING_PAREN_IN_CAST} instead
1763
	 * @deprecated Use {@link org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_INSERT_SPACE_AFTER_CLOSING_PAREN_IN_CAST} instead.
1764
	 * @category DeprecatedOptionID
951
	 */
1765
	 */
952
	public static final String FORMATTER_SPACE_CASTEXPRESSION = PLUGIN_ID + ".formatter.space.castexpression"; //$NON-NLS-1$
1766
	public static final String FORMATTER_SPACE_CASTEXPRESSION = PLUGIN_ID + ".formatter.space.castexpression"; //$NON-NLS-1$
953
	/**
1767
	/**
954
	 * Possible  configurable option ID.
1768
     * Configurable option ID.
955
	 * @see #getDefaultOptions()
1769
     * <pre>
1770
	 * CODEASSIST / Activate Visibility Sensitive Completion
1771
	 *    When active, completion doesn't show that you can not see
1772
	 *    (for example, you can not see private methods of a super class).
1773
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.visibilityCheck"
1774
	 *     - possible values:   { "enabled", "disabled" }
1775
	 *     - default:           "disabled"
1776
     * </pre>
956
	 * @since 2.0
1777
	 * @since 2.0
1778
	 * @category CodeAssistOptionID
957
	 */
1779
	 */
958
	public static final String CODEASSIST_VISIBILITY_CHECK = PLUGIN_ID + ".codeComplete.visibilityCheck"; //$NON-NLS-1$
1780
	public static final String CODEASSIST_VISIBILITY_CHECK = PLUGIN_ID + ".codeComplete.visibilityCheck"; //$NON-NLS-1$
959
	/**
1781
	/**
960
	 * Possible  configurable option ID.
1782
     * Configurable option ID.
961
	 * @see #getDefaultOptions()
1783
     * <pre>
1784
	 * CODEASSIST / Activate Deprecation Sensitive Completion
1785
	 *    When enabled, completion doesn't propose deprecated members and types.
1786
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.deprecationCheck"
1787
	 *     - possible values:   { "enabled", "disabled" }
1788
	 *     - default:           "disabled"
1789
     * </pre>
962
	 * @since 3.2
1790
	 * @since 3.2
1791
	 * @category CodeAssistOptionID
963
	 */
1792
	 */
964
	public static final String CODEASSIST_DEPRECATION_CHECK = PLUGIN_ID + ".codeComplete.deprecationCheck"; //$NON-NLS-1$
1793
	public static final String CODEASSIST_DEPRECATION_CHECK = PLUGIN_ID + ".codeComplete.deprecationCheck"; //$NON-NLS-1$
965
	/**
1794
	/**
966
	 * Possible  configurable option ID.
1795
     * Configurable option ID.
967
	 * @see #getDefaultOptions()
1796
     * <pre>
1797
	 * CODEASSIST / Activate Camel Case Sensitive Completion
1798
	 *    When enabled, completion shows proposals whose name match the CamelCase
1799
	 *    pattern.
1800
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.camelCaseMatch"
1801
	 *     - possible values:   { "enabled", "disabled" }
1802
	 *     - default:           "enabled"
1803
     * </pre>
968
	 * @since 3.2
1804
	 * @since 3.2
1805
	 * @category CodeAssistOptionID
969
	 */
1806
	 */
970
	public static final String CODEASSIST_CAMEL_CASE_MATCH = PLUGIN_ID + ".codeComplete.camelCaseMatch"; //$NON-NLS-1$
1807
	public static final String CODEASSIST_CAMEL_CASE_MATCH = PLUGIN_ID + ".codeComplete.camelCaseMatch"; //$NON-NLS-1$
971
	/**
1808
	/**
972
	 * Possible  configurable option ID.
1809
     * Configurable option ID.
973
	 * @see #getDefaultOptions()
1810
     * <pre>
1811
	 * CODEASSIST / Automatic Qualification of Implicit Members
1812
	 *    When active, completion automatically qualifies completion on implicit
1813
	 *    field references and message expressions.
1814
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.forceImplicitQualification"
1815
	 *     - possible values:   { "enabled", "disabled" }
1816
	 *     - default:           "disabled"
1817
     * </pre>
974
	 * @since 2.0
1818
	 * @since 2.0
1819
	 * @category CodeAssistOptionID
975
	 */
1820
	 */
976
	public static final String CODEASSIST_IMPLICIT_QUALIFICATION = PLUGIN_ID + ".codeComplete.forceImplicitQualification"; //$NON-NLS-1$
1821
	public static final String CODEASSIST_IMPLICIT_QUALIFICATION = PLUGIN_ID + ".codeComplete.forceImplicitQualification"; //$NON-NLS-1$
977
	/**
1822
	/**
978
	 * Possible  configurable option ID.
1823
     * Configurable option ID.
979
	 * @see #getDefaultOptions()
1824
     * <pre>
1825
	 * CODEASSIST / Define the Prefixes for Field Name
1826
	 *    When the prefixes is non empty, completion for field name will begin with
1827
	 *    one of the proposed prefixes.
1828
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.fieldPrefixes"
1829
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
1830
	 *     - default:           ""
1831
     * </pre>
980
	 * @since 2.1
1832
	 * @since 2.1
1833
	 * @category CodeAssistOptionID
981
	 */
1834
	 */
982
	public static final String CODEASSIST_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.fieldPrefixes"; //$NON-NLS-1$
1835
	public static final String CODEASSIST_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.fieldPrefixes"; //$NON-NLS-1$
983
	/**
1836
	/**
984
	 * Possible  configurable option ID.
1837
     * Configurable option ID.
985
	 * @see #getDefaultOptions()
1838
     * <pre>
1839
	 * CODEASSIST / Define the Prefixes for Static Field Name
1840
	 *    When the prefixes is non empty, completion for static field name will begin with
1841
	 *    one of the proposed prefixes.
1842
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"
1843
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
1844
	 *     - default:           ""
1845
     * </pre>
986
	 * @since 2.1
1846
	 * @since 2.1
1847
	 * @category CodeAssistOptionID
987
	 */
1848
	 */
988
	public static final String CODEASSIST_STATIC_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.staticFieldPrefixes"; //$NON-NLS-1$
1849
	public static final String CODEASSIST_STATIC_FIELD_PREFIXES = PLUGIN_ID + ".codeComplete.staticFieldPrefixes"; //$NON-NLS-1$
989
	/**
1850
	/**
990
	 * Possible  configurable option ID.
1851
     * Configurable option ID.
991
	 * @see #getDefaultOptions()
1852
     * <pre>
1853
	 * CODEASSIST / Define the Prefixes for Local Variable Name
1854
	 *    When the prefixes is non empty, completion for local variable name will begin with
1855
	 *    one of the proposed prefixes.
1856
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.localPrefixes"
1857
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
1858
	 *     - default:           ""
1859
     * </pre>
992
	 * @since 2.1
1860
	 * @since 2.1
1861
	 * @category CodeAssistOptionID
993
	 */
1862
	 */
994
	public static final String CODEASSIST_LOCAL_PREFIXES = PLUGIN_ID + ".codeComplete.localPrefixes"; //$NON-NLS-1$
1863
	public static final String CODEASSIST_LOCAL_PREFIXES = PLUGIN_ID + ".codeComplete.localPrefixes"; //$NON-NLS-1$
995
	/**
1864
	/**
996
	 * Possible  configurable option ID.
1865
     * Configurable option ID.
997
	 * @see #getDefaultOptions()
1866
     * <pre>
1867
	 * CODEASSIST / Define the Prefixes for Argument Name
1868
	 *    When the prefixes is non empty, completion for argument name will begin with
1869
	 *    one of the proposed prefixes.
1870
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.argumentPrefixes"
1871
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
1872
	 *     - default:           ""
1873
     * </pre>
998
	 * @since 2.1
1874
	 * @since 2.1
1875
	 * @category CodeAssistOptionID
999
	 */
1876
	 */
1000
	public static final String CODEASSIST_ARGUMENT_PREFIXES = PLUGIN_ID + ".codeComplete.argumentPrefixes"; //$NON-NLS-1$
1877
	public static final String CODEASSIST_ARGUMENT_PREFIXES = PLUGIN_ID + ".codeComplete.argumentPrefixes"; //$NON-NLS-1$
1001
	/**
1878
	/**
1002
	 * Possible  configurable option ID.
1879
     * Configurable option ID.
1003
	 * @see #getDefaultOptions()
1880
     * <pre>
1881
	 * CODEASSIST / Define the Suffixes for Field Name
1882
	 *    When the suffixes is non empty, completion for field name will end with
1883
	 *    one of the proposed suffixes.
1884
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.fieldSuffixes"
1885
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
1886
	 *     - default:           ""
1887
     * </pre>
1004
	 * @since 2.1
1888
	 * @since 2.1
1889
	 * @category CodeAssistOptionID
1005
	 */
1890
	 */
1006
	public static final String CODEASSIST_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.fieldSuffixes"; //$NON-NLS-1$
1891
	public static final String CODEASSIST_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.fieldSuffixes"; //$NON-NLS-1$
1007
	/**
1892
	/**
1008
	 * Possible  configurable option ID.
1893
     * Configurable option ID.
1009
	 * @see #getDefaultOptions()
1894
     * <pre>
1895
	 * CODEASSIST / Define the Suffixes for Static Field Name
1896
	 *    When the suffixes is non empty, completion for static field name will end with
1897
	 *    one of the proposed suffixes.
1898
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"
1899
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
1900
	 *     - default:           ""
1901
     * </pre>
1010
	 * @since 2.1
1902
	 * @since 2.1
1903
	 * @category CodeAssistOptionID
1011
	 */
1904
	 */
1012
	public static final String CODEASSIST_STATIC_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.staticFieldSuffixes"; //$NON-NLS-1$
1905
	public static final String CODEASSIST_STATIC_FIELD_SUFFIXES = PLUGIN_ID + ".codeComplete.staticFieldSuffixes"; //$NON-NLS-1$
1013
	/**
1906
	/**
1014
	 * Possible  configurable option ID.
1907
     * Configurable option ID.
1015
	 * @see #getDefaultOptions()
1908
     * <pre>
1909
	 * CODEASSIST / Define the Suffixes for Local Variable Name
1910
	 *    When the suffixes is non empty, completion for local variable name will end with
1911
	 *    one of the proposed suffixes.
1912
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.localSuffixes"
1913
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
1914
	 *     - default:           ""
1915
     * </pre>
1016
	 * @since 2.1
1916
	 * @since 2.1
1917
	 * @category CodeAssistOptionID
1017
	 */
1918
	 */
1018
	public static final String CODEASSIST_LOCAL_SUFFIXES = PLUGIN_ID + ".codeComplete.localSuffixes"; //$NON-NLS-1$
1919
	public static final String CODEASSIST_LOCAL_SUFFIXES = PLUGIN_ID + ".codeComplete.localSuffixes"; //$NON-NLS-1$
1019
	/**
1920
	/**
1020
	 * Possible  configurable option ID.
1921
     * Configurable option ID.
1021
	 * @see #getDefaultOptions()
1922
     * <pre>
1923
	 * CODEASSIST / Define the Suffixes for Argument Name
1924
	 *    When the suffixes is non empty, completion for argument name will end with
1925
	 *    one of the proposed suffixes.
1926
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.argumentSuffixes"
1927
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
1928
	 *     - default:           ""
1929
     * </pre>
1022
	 * @since 2.1
1930
	 * @since 2.1
1931
	 * @category CodeAssistOptionID
1023
	 */
1932
	 */
1024
	public static final String CODEASSIST_ARGUMENT_SUFFIXES = PLUGIN_ID + ".codeComplete.argumentSuffixes"; //$NON-NLS-1$
1933
	public static final String CODEASSIST_ARGUMENT_SUFFIXES = PLUGIN_ID + ".codeComplete.argumentSuffixes"; //$NON-NLS-1$
1025
	/**
1934
	/**
1026
	 * Possible  configurable option ID.
1935
     * Configurable option ID.
1027
	 * @see #getDefaultOptions()
1936
     * <pre>
1937
	 * CODEASSIST / Activate Forbidden Reference Sensitive Completion
1938
	 *    When enabled, completion doesn't propose elements which match a
1939
  	 *    forbidden reference rule.
1940
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.forbiddenReferenceCheck"
1941
	 *     - possible values:   { "enabled", "disabled" }
1942
	 *     - default:           "enabled"
1943
     * </pre>
1028
	 * @since 3.1
1944
	 * @since 3.1
1945
	 * @category CodeAssistOptionID
1029
	 */
1946
	 */
1030
	public static final String CODEASSIST_FORBIDDEN_REFERENCE_CHECK= PLUGIN_ID + ".codeComplete.forbiddenReferenceCheck"; //$NON-NLS-1$
1947
	public static final String CODEASSIST_FORBIDDEN_REFERENCE_CHECK= PLUGIN_ID + ".codeComplete.forbiddenReferenceCheck"; //$NON-NLS-1$
1031
	/**
1948
	/**
1032
	 * Possible  configurable option ID.
1949
     * Configurable option ID.
1033
	 * @see #getDefaultOptions()
1950
     * <pre>
1951
	 * CODEASSIST / Activate Discouraged Reference Sensitive Completion
1952
	 *    When enabled, completion doesn't propose elements which match a
1953
  	 *    discouraged reference rule.
1954
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.discouragedReferenceCheck"
1955
	 *     - possible values:   { "enabled", "disabled" }
1956
	 *     - default:           "disabled"
1957
     * </pre>
1034
	 * @since 3.1
1958
	 * @since 3.1
1959
	 * @category CodeAssistOptionID
1035
	 */
1960
	 */
1036
	public static final String CODEASSIST_DISCOURAGED_REFERENCE_CHECK= PLUGIN_ID + ".codeComplete.discouragedReferenceCheck"; //$NON-NLS-1$
1961
	public static final String CODEASSIST_DISCOURAGED_REFERENCE_CHECK= PLUGIN_ID + ".codeComplete.discouragedReferenceCheck"; //$NON-NLS-1$
1037
	/**
1962
	/**
1038
	 * Possible  configurable option ID.
1963
     * Configurable option ID.
1039
	 * @see #getDefaultOptions()
1964
     * <pre>
1965
	 * CODEASSIST / Activate Suggestion of Static Import
1966
	 *    When enabled, completion proposals can contain static import
1967
	 *    pattern.
1968
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.suggestStaticImports"
1969
	 *     - possible values:   { "enabled", "disabled" }
1970
	 *     - default:           "enabled"
1971
     * </pre>
1040
	 * @since 3.3
1972
	 * @since 3.3
1973
	 * @category CodeAssistOptionID
1041
	 */
1974
	 */
1042
	public static final String CODEASSIST_SUGGEST_STATIC_IMPORTS= PLUGIN_ID + ".codeComplete.suggestStaticImports"; //$NON-NLS-1$
1975
	public static final String CODEASSIST_SUGGEST_STATIC_IMPORTS= PLUGIN_ID + ".codeComplete.suggestStaticImports"; //$NON-NLS-1$
1043
	/**
1976
	/**
1044
	 * Possible  configurable option ID.
1977
     * Configurable option ID.
1045
	 * @see #getDefaultOptions()
1978
     * <pre>
1979
	 * JAVACORE / Set the timeout value for retrieving the method's parameter names from javadoc
1980
	 *    Timeout in milliseconds to retrieve the method's parameter names from javadoc.
1981
	 *    If the value is 0, the parameter names are not fetched and the raw names are returned.
1982
	 *     - option id:         "org.eclipse.jdt.core.timeoutForParameterNameFromAttachedJavadoc"
1983
	 *     - possible values:	"&lt;n&gt;", where n is an integer greater than or equal to 0
1984
	 *     - default:           "50"
1985
     * </pre>
1046
	 * @since 3.2
1986
	 * @since 3.2
1987
	 * @category CoreOptionID
1047
	 */
1988
	 */
1048
	public static final String TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC = PLUGIN_ID + ".timeoutForParameterNameFromAttachedJavadoc"; //$NON-NLS-1$
1989
	public static final String TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC = PLUGIN_ID + ".timeoutForParameterNameFromAttachedJavadoc"; //$NON-NLS-1$
1049
1990
1991
	// end configurable option IDs }
1992
	// Begin configurable option values {
1050
	/**
1993
	/**
1051
	 * Possible  configurable option value.
1994
	 * @deprecated Use {@link #DEFAULT_TASK_TAGS} instead.
1052
	 * @see #getDefaultOptions()
1995
	 * @since 2.1
1996
	 * @category DeprecatedOptionValue
1053
	 */
1997
	 */
1054
	public static final String GENERATE = "generate"; //$NON-NLS-1$
1998
	public static final String DEFAULT_TASK_TAG = "TODO"; //$NON-NLS-1$
1055
	/**
1999
	/**
1056
	 * Possible  configurable option value.
2000
	 * @deprecated Use {@link #DEFAULT_TASK_PRIORITIES} instead.
1057
	 * @see #getDefaultOptions()
2001
	 * @since 2.1
2002
	 * @category DeprecatedOptionValue
1058
	 */
2003
	 */
1059
	public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$
2004
	public static final String DEFAULT_TASK_PRIORITY = "NORMAL"; //$NON-NLS-1$
1060
	/**
2005
	/**
1061
	 * Possible  configurable option value.
2006
	 * Configurable option value.
1062
	 * @see #getDefaultOptions()
2007
	 * Default task tags.
2008
	 * @since 3.0
2009
	 * @category OptionValue
2010
	 */
2011
	public static final String DEFAULT_TASK_TAGS = "TODO,FIXME,XXX"; //$NON-NLS-1$
2012
	/**
2013
	 * Configurable option value.
2014
	 * Default task priorities.
2015
	 * @since 3.0
2016
	 * @category OptionValue
2017
	 */
2018
	public static final String DEFAULT_TASK_PRIORITIES = "NORMAL,HIGH,NORMAL"; //$NON-NLS-1$
2019
	/**
2020
	 * Configurable option value.
2021
	 * @category OptionValue
2022
	 */
2023
	public static final String GENERATE = "generate"; //$NON-NLS-1$
2024
	/**
2025
	 * Configurable option value.
2026
	 * @category OptionValue
2027
	 */
2028
	public static final String DO_NOT_GENERATE = "do not generate"; //$NON-NLS-1$
2029
	/**
2030
	 * Configurable option value.
2031
	 * @category OptionValue
1063
	 */
2032
	 */
1064
	public static final String PRESERVE = "preserve"; //$NON-NLS-1$
2033
	public static final String PRESERVE = "preserve"; //$NON-NLS-1$
1065
	/**
2034
	/**
1066
	 * Possible  configurable option value.
2035
	 * Configurable option value.
1067
	 * @see #getDefaultOptions()
2036
	 * @category OptionValue
1068
	 */
2037
	 */
1069
	public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
2038
	public static final String OPTIMIZE_OUT = "optimize out"; //$NON-NLS-1$
1070
	/**
2039
	/**
1071
	 * Possible  configurable option value.
2040
	 * Configurable option value for COMPILER_TASK_PRIORITIES.
1072
	 * @see #getDefaultOptions()
2041
	 * @since 2.1
2042
	 * @category OptionValue
2043
	 */
2044
	public static final String COMPILER_TASK_PRIORITY_HIGH = "HIGH"; //$NON-NLS-1$
2045
	/**
2046
	 * Configurable option value for COMPILER_TASK_PRIORITIES.
2047
	 * @since 2.1
2048
	 * @category OptionValue
2049
	 */
2050
	public static final String COMPILER_TASK_PRIORITY_LOW = "LOW"; //$NON-NLS-1$
2051
	/**
2052
	 * Configurable option value for COMPILER_TASK_PRIORITIES.
2053
	 * @since 2.1
2054
	 * @category OptionValue
2055
	 */
2056
	public static final String COMPILER_TASK_PRIORITY_NORMAL = "NORMAL"; //$NON-NLS-1$
2057
	/**
2058
	 * Configurable option value.
2059
	 * @category OptionValue
1073
	 */
2060
	 */
1074
	public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
2061
	public static final String VERSION_1_1 = "1.1"; //$NON-NLS-1$
1075
	/**
2062
	/**
1076
	 * Possible  configurable option value.
2063
	 * Configurable option value.
1077
	 * @see #getDefaultOptions()
2064
	 * @category OptionValue
1078
	 */
2065
	 */
1079
	public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
2066
	public static final String VERSION_1_2 = "1.2"; //$NON-NLS-1$
1080
	/**
2067
	/**
1081
	 * Possible  configurable option value.
2068
	 * Configurable option value.
1082
	 * @see #getDefaultOptions()
1083
	 * @since 2.0
2069
	 * @since 2.0
2070
	 * @category OptionValue
1084
	 */
2071
	 */
1085
	public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
2072
	public static final String VERSION_1_3 = "1.3"; //$NON-NLS-1$
1086
	/**
2073
	/**
1087
	 * Possible  configurable option value.
2074
	 * Configurable option value.
1088
	 * @see #getDefaultOptions()
1089
	 * @since 2.0
2075
	 * @since 2.0
2076
	 * @category OptionValue
1090
	 */
2077
	 */
1091
	public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
2078
	public static final String VERSION_1_4 = "1.4"; //$NON-NLS-1$
1092
	/**
2079
	/**
1093
	 * Possible  configurable option value.
2080
	 * Configurable option value.
1094
	 * @see #getDefaultOptions()
1095
	 * @since 3.0
2081
	 * @since 3.0
2082
	 * @category OptionValue
1096
	 */
2083
	 */
1097
	public static final String VERSION_1_5 = "1.5"; //$NON-NLS-1$
2084
	public static final String VERSION_1_5 = "1.5"; //$NON-NLS-1$
1098
	/**
2085
	/**
1099
	 * Possible  configurable option value.
2086
	 * Configurable option value.
1100
	 * @see #getDefaultOptions()
1101
	 * @since 3.2
2087
	 * @since 3.2
2088
	 * @category OptionValue
1102
	 */
2089
	 */
1103
	public static final String VERSION_1_6 = "1.6"; //$NON-NLS-1$
2090
	public static final String VERSION_1_6 = "1.6"; //$NON-NLS-1$
1104
	/**
2091
	/**
1105
	 * Possible  configurable option value.
2092
	 * Configurable option value.
1106
	 * @see #getDefaultOptions()
1107
	 * @since 3.3
2093
	 * @since 3.3
2094
	 * @category OptionValue
1108
	 */
2095
	 */
1109
	public static final String VERSION_1_7 = "1.7"; //$NON-NLS-1$
2096
	public static final String VERSION_1_7 = "1.7"; //$NON-NLS-1$
1110
	/**
2097
	/**
1111
	 * Possible  configurable option value.
2098
	 * Configurable option value.
1112
	 * @see #getDefaultOptions()
1113
	 * @since 3.4
2099
	 * @since 3.4
2100
	 * @category OptionValue
1114
	 */
2101
	 */
1115
	public static final String VERSION_CLDC_1_1 = "cldc1.1"; //$NON-NLS-1$
2102
	public static final String VERSION_CLDC_1_1 = "cldc1.1"; //$NON-NLS-1$
1116
	/**
2103
	/**
1117
	 * Possible  configurable option value.
2104
	 * Configurable option value.
1118
	 * @see #getDefaultOptions()
1119
	 * @since 2.0
2105
	 * @since 2.0
2106
	 * @category OptionValue
1120
	 */
2107
	 */
1121
	public static final String ABORT = "abort"; //$NON-NLS-1$
2108
	public static final String ABORT = "abort"; //$NON-NLS-1$
1122
	/**
2109
	/**
1123
	 * Possible  configurable option value.
2110
	 * Configurable option value.
1124
	 * @see #getDefaultOptions()
2111
	 * @category OptionValue
1125
	 */
2112
	 */
1126
	public static final String ERROR = "error"; //$NON-NLS-1$
2113
	public static final String ERROR = "error"; //$NON-NLS-1$
1127
	/**
2114
	/**
1128
	 * Possible  configurable option value.
2115
	 * Configurable option value.
1129
	 * @see #getDefaultOptions()
2116
	 * @category OptionValue
1130
	 */
2117
	 */
1131
	public static final String WARNING = "warning"; //$NON-NLS-1$
2118
	public static final String WARNING = "warning"; //$NON-NLS-1$
1132
	/**
2119
	/**
1133
	 * Possible  configurable option value.
2120
	 * Configurable option value.
1134
	 * @see #getDefaultOptions()
2121
	 * @category OptionValue
1135
	 */
2122
	 */
1136
	public static final String IGNORE = "ignore"; //$NON-NLS-1$
2123
	public static final String IGNORE = "ignore"; //$NON-NLS-1$
1137
	/**
2124
	/**
1138
	 * Possible  configurable option value.
2125
	 * Configurable option value.
1139
	 * @see #getDefaultOptions()
2126
	 * @category OptionValue
1140
	 */
2127
	 */
1141
	public static final String COMPUTE = "compute"; //$NON-NLS-1$
2128
	public static final String COMPUTE = "compute"; //$NON-NLS-1$
1142
	/**
2129
	/**
1143
	 * Possible  configurable option value.
2130
	 * Configurable option value.
1144
	 * @see #getDefaultOptions()
1145
	 * @since 2.0
2131
	 * @since 2.0
2132
	 * @category OptionValue
1146
	 */
2133
	 */
1147
	public static final String INSERT = "insert"; //$NON-NLS-1$
2134
	public static final String INSERT = "insert"; //$NON-NLS-1$
1148
	/**
2135
	/**
1149
	 * Possible  configurable option value.
2136
	 * Configurable option value.
1150
	 * @see #getDefaultOptions()
1151
	 * @since 2.0
2137
	 * @since 2.0
2138
	 * @category OptionValue
1152
	 */
2139
	 */
1153
	public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
2140
	public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
1154
	/**
2141
	/**
1155
	 * Possible  configurable option value.
2142
	 * Configurable option value.
1156
	 * @see #getDefaultOptions()
1157
	 * @since 2.0
2143
	 * @since 2.0
2144
	 * @category OptionValue
1158
	 */
2145
	 */
1159
	public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
2146
	public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
1160
	/**
2147
	/**
1161
	 * Possible  configurable option value.
2148
	 * Configurable option value.
1162
	 * @see #getDefaultOptions()
1163
	 * @since 2.0
2149
	 * @since 2.0
2150
	 * @category OptionValue
1164
	 */
2151
	 */
1165
	public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
2152
	public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
1166
	/**
2153
	/**
1167
	 * Possible  configurable option value.
2154
	 * Configurable option value.
1168
	 * @see #getDefaultOptions()
1169
	 * @since 2.0
2155
	 * @since 2.0
2156
	 * @category OptionValue
1170
	 */
2157
	 */
1171
	public static final String NORMAL = "normal"; //$NON-NLS-1$
2158
	public static final String NORMAL = "normal"; //$NON-NLS-1$
1172
	/**
2159
	/**
1173
	 * Possible  configurable option value.
2160
	 * Configurable option value.
1174
	 * @see #getDefaultOptions()
1175
	 * @since 2.0
2161
	 * @since 2.0
2162
	 * @category OptionValue
1176
	 */
2163
	 */
1177
	public static final String COMPACT = "compact"; //$NON-NLS-1$
2164
	public static final String COMPACT = "compact"; //$NON-NLS-1$
1178
	/**
2165
	/**
1179
	 * Possible  configurable option value.
2166
	 * Configurable option value.
1180
	 * @see #getDefaultOptions()
1181
	 * @since 2.0
2167
	 * @since 2.0
2168
	 * @category OptionValue
1182
	 */
2169
	 */
1183
	public static final String TAB = "tab"; //$NON-NLS-1$
2170
	public static final String TAB = "tab"; //$NON-NLS-1$
1184
	/**
2171
	/**
1185
	 * Possible  configurable option value.
2172
	 * Configurable option value.
1186
	 * @see #getDefaultOptions()
1187
	 * @since 2.0
2173
	 * @since 2.0
2174
	 * @category OptionValue
1188
	 */
2175
	 */
1189
	public static final String SPACE = "space"; //$NON-NLS-1$
2176
	public static final String SPACE = "space"; //$NON-NLS-1$
1190
	/**
2177
	/**
1191
	 * Possible  configurable option value.
2178
	 * Configurable option value.
1192
	 * @see #getDefaultOptions()
1193
	 * @since 2.0
2179
	 * @since 2.0
2180
	 * @category OptionValue
1194
	 */
2181
	 */
1195
	public static final String ENABLED = "enabled"; //$NON-NLS-1$
2182
	public static final String ENABLED = "enabled"; //$NON-NLS-1$
1196
	/**
2183
	/**
1197
	 * Possible  configurable option value.
2184
	 * Configurable option value.
1198
	 * @see #getDefaultOptions()
1199
	 * @since 2.0
2185
	 * @since 2.0
2186
	 * @category OptionValue
1200
	 */
2187
	 */
1201
	public static final String DISABLED = "disabled"; //$NON-NLS-1$
2188
	public static final String DISABLED = "disabled"; //$NON-NLS-1$
1202
	/**
2189
	/**
1203
	 * Possible  configurable option value.
2190
	 * Configurable option value.
1204
	 * @see #getDefaultOptions()
1205
	 * @since 2.1
2191
	 * @since 2.1
2192
	 * @category OptionValue
1206
	 */
2193
	 */
1207
	public static final String CLEAN = "clean"; //$NON-NLS-1$
2194
	public static final String CLEAN = "clean"; //$NON-NLS-1$
1208
	/**
2195
	/**
1209
	 * Possible  configurable option value.
2196
	 * Configurable option value.
1210
	 * @see #getDefaultOptions()
1211
	 * @since 3.0
2197
	 * @since 3.0
2198
	 * @category OptionValue
1212
	 */
2199
	 */
1213
	public static final String PUBLIC = "public"; //$NON-NLS-1$
2200
	public static final String PUBLIC = "public"; //$NON-NLS-1$
1214
	/**
2201
	/**
1215
	 * Possible  configurable option value.
2202
	 * Configurable option value.
1216
	 * @see #getDefaultOptions()
1217
	 * @since 3.0
2203
	 * @since 3.0
2204
	 * @category OptionValue
1218
	 */
2205
	 */
1219
	public static final String PROTECTED = "protected"; //$NON-NLS-1$
2206
	public static final String PROTECTED = "protected"; //$NON-NLS-1$
1220
	/**
2207
	/**
1221
	 * Possible  configurable option value.
2208
	 * Configurable option value.
1222
	 * @see #getDefaultOptions()
1223
	 * @since 3.0
2209
	 * @since 3.0
2210
	 * @category OptionValue
1224
	 */
2211
	 */
1225
	public static final String DEFAULT = "default"; //$NON-NLS-1$
2212
	public static final String DEFAULT = "default"; //$NON-NLS-1$
1226
	/**
2213
	/**
1227
	 * Possible  configurable option value.
2214
	 * Configurable option value.
1228
	 * @see #getDefaultOptions()
1229
	 * @since 3.0
2215
	 * @since 3.0
2216
	 * @category OptionValue
1230
	 */
2217
	 */
1231
	public static final String PRIVATE = "private"; //$NON-NLS-1$
2218
	public static final String PRIVATE = "private"; //$NON-NLS-1$
1232
	/**
2219
	/**
1233
	 * Possible  configurable option value.
2220
	 * Configurable option value.
1234
	 * @see #getDefaultOptions()
1235
	 * @since 3.1
2221
	 * @since 3.1
2222
	 * @category OptionValue
1236
	 */
2223
	 */
1237
	public static final String NEVER = "never"; //$NON-NLS-1$
2224
	public static final String NEVER = "never"; //$NON-NLS-1$
2225
	/**
2226
	 * Configurable option value.
2227
	 * @since 3.4
2228
	 * @category OptionValue
2229
	 */
2230
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_NO_TAG = CompilerOptions.NO_TAG;
2231
	/**
2232
	 * Configurable option value.
2233
	 * @since 3.4
2234
	 * @category OptionValue
2235
	 */
2236
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_RETURN_TAG = CompilerOptions.RETURN_TAG;
2237
	/**
2238
	 * Configurable option value.
2239
	 * @since 3.4
2240
	 * @category OptionValue
2241
	 */
2242
	public static final String COMPILER_PB_MISSING_JAVADOC_TAG_DESCRIPTION_ALL_TAGS = CompilerOptions.ALL_TAGS;
2243
	// end configurable option values }
1238
2244
1239
	/**
2245
	/**
1240
	 * Value of the content-type for Java source files. Use this value to retrieve the Java content type
2246
	 * Value of the content-type for Java source files. Use this value to retrieve the Java content type
Lines 1721-2937 Link Here
1721
	}
2727
	}
1722
2728
1723
	private static void verbose_found_container_initializer(String containerID, IConfigurationElement configurationElement) {
2729
	private static void verbose_found_container_initializer(String containerID, IConfigurationElement configurationElement) {
1724
		Util.verbose(
2730
		Util.verbose(
1725
			"CPContainer INIT - found initializer\n" + //$NON-NLS-1$
2731
			"CPContainer INIT - found initializer\n" + //$NON-NLS-1$
1726
			"	container ID: " + containerID + '\n' + //$NON-NLS-1$
2732
			"	container ID: " + containerID + '\n' + //$NON-NLS-1$
1727
			"	class: " + configurationElement.getAttribute("class")); //$NON-NLS-1$ //$NON-NLS-2$
2733
			"	class: " + configurationElement.getAttribute("class")); //$NON-NLS-1$ //$NON-NLS-2$
1728
	}
2734
	}
1729
2735
1730
	/**
2736
	/**
1731
	 * Returns the path held in the given classpath variable.
2737
	 * Returns the path held in the given classpath variable.
1732
	 * Returns <code>null</code> if unable to bind.
2738
	 * Returns <code>null</code> if unable to bind.
1733
	 * <p>
2739
	 * <p>
1734
	 * Classpath variable values are persisted locally to the workspace, and
2740
	 * Classpath variable values are persisted locally to the workspace, and
1735
	 * are preserved from session to session.
2741
	 * are preserved from session to session.
1736
	 * <p>
2742
	 * <p>
1737
	 * Note that classpath variables can be contributed registered initializers for,
2743
	 * Note that classpath variables can be contributed registered initializers for,
1738
	 * using the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
2744
	 * using the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
1739
	 * If an initializer is registered for a variable, its persisted value will be ignored:
2745
	 * If an initializer is registered for a variable, its persisted value will be ignored:
1740
	 * its initializer will thus get the opportunity to rebind the variable differently on
2746
	 * its initializer will thus get the opportunity to rebind the variable differently on
1741
	 * each session.
2747
	 * each session.
1742
	 *
1743
	 * @param variableName the name of the classpath variable
1744
	 * @return the path, or <code>null</code> if none
1745
	 * @see #setClasspathVariable(String, IPath)
1746
	 */
1747
	public static IPath getClasspathVariable(final String variableName) {
1748
1749
	    JavaModelManager manager = JavaModelManager.getJavaModelManager();
1750
		IPath variablePath = manager.variableGet(variableName);
1751
		if (variablePath == JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS){
1752
		    return manager.getPreviousSessionVariable(variableName);
1753
		}
1754
1755
		if (variablePath != null) {
1756
			if (variablePath == JavaModelManager.CP_ENTRY_IGNORE_PATH)
1757
				return null;
1758
			return variablePath;
1759
		}
1760
1761
		// even if persisted value exists, initializer is given priority, only if no initializer is found the persisted value is reused
1762
		final ClasspathVariableInitializer initializer = JavaCore.getClasspathVariableInitializer(variableName);
1763
		if (initializer != null){
1764
			if (JavaModelManager.CP_RESOLVE_VERBOSE)
1765
				verbose_triggering_variable_initialization(variableName, initializer);
1766
			if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
1767
				verbose_triggering_variable_initialization_invocation_trace();
1768
			manager.variablePut(variableName, JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS); // avoid initialization cycles
1769
			boolean ok = false;
1770
			try {
1771
				// let OperationCanceledException go through
1772
				// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59363)
1773
				initializer.initialize(variableName);
1774
1775
				variablePath = manager.variableGet(variableName); // initializer should have performed side-effect
1776
				if (variablePath == JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS) return null; // break cycle (initializer did not init or reentering call)
1777
				if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
1778
					verbose_variable_value_after_initialization(variableName, variablePath);
1779
				manager.variablesWithInitializer.add(variableName);
1780
				ok = true;
1781
			} catch (RuntimeException e) {
1782
				if (JavaModelManager.CP_RESOLVE_VERBOSE)
1783
					e.printStackTrace();
1784
				throw e;
1785
			} catch (Error e) {
1786
				if (JavaModelManager.CP_RESOLVE_VERBOSE)
1787
					e.printStackTrace();
1788
				throw e;
1789
			} finally {
1790
				if (!ok) JavaModelManager.getJavaModelManager().variablePut(variableName, null); // flush cache
1791
			}
1792
		} else {
1793
			if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
1794
				verbose_no_variable_initializer_found(variableName);
1795
		}
1796
		return variablePath;
1797
	}
1798
1799
	private static void verbose_no_variable_initializer_found(String variableName) {
1800
		Util.verbose(
1801
			"CPVariable INIT - no initializer found\n" + //$NON-NLS-1$
1802
			"	variable: " + variableName); //$NON-NLS-1$
1803
	}
1804
1805
	private static void verbose_variable_value_after_initialization(String variableName, IPath variablePath) {
1806
		Util.verbose(
1807
			"CPVariable INIT - after initialization\n" + //$NON-NLS-1$
1808
			"	variable: " + variableName +'\n' + //$NON-NLS-1$
1809
			"	variable path: " + variablePath); //$NON-NLS-1$
1810
	}
1811
1812
	private static void verbose_triggering_variable_initialization(String variableName, ClasspathVariableInitializer initializer) {
1813
		Util.verbose(
1814
			"CPVariable INIT - triggering initialization\n" + //$NON-NLS-1$
1815
			"	variable: " + variableName + '\n' + //$NON-NLS-1$
1816
			"	initializer: " + initializer); //$NON-NLS-1$
1817
	}
1818
1819
	private static void verbose_triggering_variable_initialization_invocation_trace() {
1820
		Util.verbose(
1821
			"CPVariable INIT - triggering initialization\n" + //$NON-NLS-1$
1822
			"	invocation trace:"); //$NON-NLS-1$
1823
		new Exception("<Fake exception>").printStackTrace(System.out); //$NON-NLS-1$
1824
	}
1825
1826
	/**
1827
	 * Returns deprecation message of a given classpath variable.
1828
	 *
1829
	 * @param variableName
1830
	 * @return A string if the classpath variable is deprecated, <code>null</code> otherwise.
1831
	 * @since 3.3
1832
	 */
1833
	public static String getClasspathVariableDeprecationMessage(String variableName) {
1834
	    JavaModelManager manager = JavaModelManager.getJavaModelManager();
1835
1836
		// Returns the stored deprecation message
1837
		String message = (String) manager.deprecatedVariables.get(variableName);
1838
		if (message != null) {
1839
		    return message;
1840
		}
1841
	    
1842
	    // If the variable has been already initialized, then there's no deprecation message
1843
		IPath variablePath = manager.variableGet(variableName);
1844
		if (variablePath != null && variablePath != JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS) {
1845
			return null;
1846
		}
1847
1848
		// Search for extension point to get the possible deprecation message
1849
		Plugin jdtCorePlugin = JavaCore.getPlugin();
1850
		if (jdtCorePlugin == null) return null;
1851
1852
		IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
1853
		if (extension != null) {
1854
			IExtension[] extensions =  extension.getExtensions();
1855
			for(int i = 0; i < extensions.length; i++){
1856
				IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
1857
				for(int j = 0; j < configElements.length; j++){
1858
					IConfigurationElement configElement = configElements[j];
1859
					String varAttribute = configElement.getAttribute("variable"); //$NON-NLS-1$
1860
					if (variableName.equals(varAttribute)) {
1861
						String deprecatedAttribute = configElement.getAttribute("deprecated"); //$NON-NLS-1$
1862
						if (deprecatedAttribute != null) {
1863
							return deprecatedAttribute;
1864
						}
1865
					}
1866
				}
1867
			}
1868
		}
1869
		return null;
1870
	}
1871
1872
	/**
1873
	 * Helper method finding the classpath variable initializer registered for a given classpath variable name
1874
	 * or <code>null</code> if none was found while iterating over the contributions to extension point to
1875
	 * the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
1876
	 * <p>
1877
 	 * @param variable the given variable
1878
 	 * @return ClasspathVariableInitializer - the registered classpath variable initializer or <code>null</code> if
1879
	 * none was found.
1880
	 * @since 2.1
1881
 	 */
1882
	public static ClasspathVariableInitializer getClasspathVariableInitializer(String variable){
1883
1884
		Plugin jdtCorePlugin = JavaCore.getPlugin();
1885
		if (jdtCorePlugin == null) return null;
1886
1887
		IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
1888
		if (extension != null) {
1889
			IExtension[] extensions =  extension.getExtensions();
1890
			for(int i = 0; i < extensions.length; i++){
1891
				IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
1892
				for(int j = 0; j < configElements.length; j++){
1893
					IConfigurationElement configElement = configElements[j];
1894
					try {
1895
						String varAttribute = configElement.getAttribute("variable"); //$NON-NLS-1$
1896
						if (variable.equals(varAttribute)) {
1897
							if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
1898
								verbose_found_variable_initializer(variable, configElement);
1899
							Object execExt = configElement.createExecutableExtension("class"); //$NON-NLS-1$
1900
							if (execExt instanceof ClasspathVariableInitializer){
1901
								ClasspathVariableInitializer initializer = (ClasspathVariableInitializer)execExt;
1902
								String deprecatedAttribute = configElement.getAttribute("deprecated"); //$NON-NLS-1$
1903
								if (deprecatedAttribute != null) {
1904
									JavaModelManager.getJavaModelManager().deprecatedVariables.put(variable, deprecatedAttribute);
1905
								}
1906
								String readOnlyAttribute = configElement.getAttribute("readOnly"); //$NON-NLS-1$
1907
								if (JavaModelManager.TRUE.equals(readOnlyAttribute)) {
1908
									JavaModelManager.getJavaModelManager().readOnlyVariables.add(variable);
1909
								}
1910
								return initializer;
1911
							}
1912
						}
1913
					} catch(CoreException e){
1914
						// executable extension could not be created: ignore this initializer
1915
						if (JavaModelManager.CP_RESOLVE_VERBOSE) {
1916
							verbose_failed_to_instanciate_variable_initializer(variable, configElement);
1917
							e.printStackTrace();
1918
						}
1919
					}
1920
				}
1921
			}
1922
		}
1923
		return null;
1924
	}
1925
1926
	private static void verbose_failed_to_instanciate_variable_initializer(String variable, IConfigurationElement configElement) {
1927
		Util.verbose(
1928
			"CPContainer INIT - failed to instanciate initializer\n" + //$NON-NLS-1$
1929
			"	variable: " + variable + '\n' + //$NON-NLS-1$
1930
			"	class: " + configElement.getAttribute("class"), //$NON-NLS-1$ //$NON-NLS-2$
1931
			System.err);
1932
	}
1933
1934
	private static void verbose_found_variable_initializer(String variable, IConfigurationElement configElement) {
1935
		Util.verbose(
1936
			"CPVariable INIT - found initializer\n" + //$NON-NLS-1$
1937
			"	variable: " + variable + '\n' + //$NON-NLS-1$
1938
			"	class: " + configElement.getAttribute("class")); //$NON-NLS-1$ //$NON-NLS-2$
1939
	}
1940
1941
	/**
1942
	 * Returns the names of all known classpath variables.
1943
	 * <p>
1944
	 * Classpath variable values are persisted locally to the workspace, and
1945
	 * are preserved from session to session.
1946
	 * <p>
1947
	 *
1948
	 * @return the list of classpath variable names
1949
	 * @see #setClasspathVariable(String, IPath)
1950
	 */
1951
	public static String[] getClasspathVariableNames() {
1952
		return JavaModelManager.getJavaModelManager().variableNames();
1953
	}
1954
1955
	/**
1956
	 * Returns a table of all known configurable options with their default values.
1957
	 * These options allow to configure the behaviour of the underlying components.
1958
	 * The client may safely use the result as a template that they can modify and
1959
	 * then pass to <code>setOptions</code>.
1960
	 *
1961
	 * Helper constants have been defined on JavaCore for each of the option ID and
1962
	 * their possible constant values.
1963
	 *
1964
	 * Note: more options might be added in further releases.
1965
	 * <pre>
1966
	 * RECOGNIZED OPTIONS:
1967
	 *
1968
	 * COMPILER / Setting Compliance Level
1969
	 *    Select the compliance level for the compiler. In "1.3" mode, source and target settings
1970
	 *    should not go beyond "1.3" level.
1971
	 *     - option id:         "org.eclipse.jdt.core.compiler.compliance"
1972
	 *     - possible values:   { "1.3", "1.4", "1.5", "1.6", "1.7" }
1973
	 *     - default:           "1.4"
1974
	 *
1975
	 * COMPILER / Setting Source Compatibility Mode
1976
	 *    Specify whether which source level compatibility is used. From 1.4 on, 'assert' is a keyword
1977
	 *    reserved for assertion support. Also note, than when toggling to 1.4 mode, the target VM
1978
	 *   level should be set to "1.4" and the compliance mode should be "1.4".
1979
	 *   Source level 1.5 is necessary to enable generics, autoboxing, covariance, annotations, enumerations
1980
	 *   enhanced for loop, static imports and varargs. Once toggled, the target VM level should be set to "1.5"
1981
	 *   and the compliance mode should be "1.5".
1982
	 *   Source level 1.6 is necessary to enable the computation of stack map tables. Once toggled, the target
1983
	 *   VM level should be set to "1.6" and the compliance mode should be "1.6".
1984
	 *   Once the source level 1.7 is toggled, the target VM level should be set to "1.7" and the compliance mode
1985
	 *   should be "1.7".
1986
	 *     - option id:         "org.eclipse.jdt.core.compiler.source"
1987
	 *     - possible values:   { "1.3", "1.4", "1.5", "1.6", "1.7" }
1988
	 *     - default:           "1.3"
1989
	 *
1990
	 * COMPILER / Defining Target Java Platform
1991
	 *    For binary compatibility reason, .class files can be tagged to with certain VM versions and later.
1992
	 *    Note that "1.4" target requires to toggle compliance mode to "1.4", "1.5" target requires
1993
	 *    to toggle compliance mode to "1.5", "1.6" target requires to toggle compliance mode to "1.6" and
1994
	 *    "1.7" target requires to toggle compliance mode to "1.7".
1995
	 *    "cldc1.1" requires the source version to be "1.3" and the compliance version to be "1.4" or lower.
1996
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.targetPlatform"
1997
	 *     - possible values:   { "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "cldc1.1" }
1998
	 *     - default:           "1.2"
1999
	 *
2000
	 * COMPILER / Generating Local Variable Debug Attribute
2001
 	 *    When generated, this attribute will enable local variable names
2002
	 *    to be displayed in debugger, only in place where variables are
2003
	 *    definitely assigned (.class file is then bigger)
2004
	 *     - option id:         "org.eclipse.jdt.core.compiler.debug.localVariable"
2005
	 *     - possible values:   { "generate", "do not generate" }
2006
	 *     - default:           "generate"
2007
	 *
2008
	 * COMPILER / Generating Line Number Debug Attribute
2009
	 *    When generated, this attribute will enable source code highlighting in debugger
2010
	 *    (.class file is then bigger).
2011
	 *     - option id:         "org.eclipse.jdt.core.compiler.debug.lineNumber"
2012
	 *     - possible values:   { "generate", "do not generate" }
2013
	 *     - default:           "generate"
2014
	 *
2015
	 * COMPILER / Generating Source Debug Attribute
2016
	 *    When generated, this attribute will enable the debugger to present the
2017
	 *    corresponding source code.
2018
	 *     - option id:         "org.eclipse.jdt.core.compiler.debug.sourceFile"
2019
	 *     - possible values:   { "generate", "do not generate" }
2020
	 *     - default:           "generate"
2021
	 *
2022
	 * COMPILER / Preserving Unused Local Variables
2023
	 *    Unless requested to preserve unused local variables (that is, never read), the
2024
	 *    compiler will optimize them out, potentially altering debugging
2025
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.unusedLocal"
2026
	 *     - possible values:   { "preserve", "optimize out" }
2027
	 *     - default:           "preserve"
2028
	 *
2029
	 * COMPILER / Inline JSR Bytecode Instruction
2030
	 *    When enabled, the compiler will no longer generate JSR instructions, but rather inline corresponding
2031
	 *   subroutine code sequences (mostly corresponding to try finally blocks). The generated code will thus
2032
	 *   get bigger, but will load faster on virtual machines since the verification process is then much simpler.
2033
	 *  This mode is anticipating support for the Java Specification Request 202.
2034
	 *  Note that JSR inlining is optional only for target platform lesser than 1.5. From 1.5 on, the JSR
2035
	 *  inlining is mandatory (also see related setting "org.eclipse.jdt.core.compiler.codegen.targetPlatform").
2036
	 *     - option id:         "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"
2037
	 *     - possible values:   { "enabled", "disabled" }
2038
	 *     - default:           "disabled"
2039
	 *
2040
	 * COMPILER / Javadoc Comment Support
2041
	 *    When this support is disabled, the compiler will ignore all javadoc problems options settings
2042
	 *    and will not report any javadoc problem. It will also not find any reference in javadoc comment and
2043
	 *    DOM AST Javadoc node will be only a flat text instead of having structured tag elements.
2044
	 *     - option id:         "org.eclipse.jdt.core.compiler.doc.comment.support"
2045
	 *     - possible values:   { "enabled", "disabled" }
2046
	 *     - default:           "enabled"
2047
	 *
2048
	 * COMPILER / Reporting Attempt to Override Package Visible Method
2049
	 *    A package visible method, which is any method that is not explicitly 
2050
	 *    declared as public, protected or private, is not visible from other 
2051
	 *    packages, and thus cannot be overridden from another package. 
2052
	 *    Attempting to override a package visible method from another package 
2053
	 *    introduces a new method that is unrelated to the original one. When 
2054
	 *    enabling this option, the compiler will signal such situations as an 
2055
	 *    error or a warning.
2056
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"
2057
	 *     - possible values:   { "error", "warning", "ignore" }
2058
	 *     - default:           "warning"
2059
	 *
2060
	 * COMPILER / Reporting Method With Constructor Name
2061
	 *    Naming a method with a constructor name is generally considered poor
2062
	 *    style programming. When enabling this option, the compiler will signal such
2063
	 *    scenarii either as an error or a warning.
2064
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"
2065
	 *     - possible values:   { "error", "warning", "ignore" }
2066
	 *     - default:           "warning"
2067
	 *
2068
	 * COMPILER / Reporting Deprecation
2069
	 *    When enabled, the compiler will signal use of deprecated API either as an
2070
	 *    error or a warning.
2071
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.deprecation"
2072
	 *     - possible values:   { "error", "warning", "ignore" }
2073
	 *     - default:           "warning"
2074
	 *
2075
	 * COMPILER / Reporting Deprecation Inside Deprecated Code
2076
	 *    When enabled, the compiler will signal use of deprecated API inside deprecated code.
2077
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
2078
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
2079
	 *     - possible values:   { "enabled", "disabled" }
2080
	 *     - default:           "disabled"
2081
	 *
2082
	 * COMPILER / Reporting Deprecation In Non Deprecated Code
2083
	 *    When enabled, the compiler will signal use of deprecated API in non 
2084
	 *    deprecated code.
2085
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
2086
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.deprecationInNonDeprecatedCode"
2087
	 *     - possible values:   { "enabled", "disabled" }
2088
	 *     - default:           "enabled"
2089
	 *
2090
	 * COMPILER / Reporting Deprecation When Overriding Deprecated Method
2091
	 *    When enabled, the compiler will signal the declaration of a method overriding a deprecated one.
2092
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
2093
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"
2094
	 *     - possible values:   { "enabled", "disabled" }
2095
	 *     - default:           "disabled"
2096
	 *
2097
	 * COMPILER / Reporting Hidden Catch Block
2098
	 *    Locally to a try statement, some catch blocks may hide others . For example,
2099
	 *      try {  throw new java.io.CharConversionException();
2100
	 *      } catch (java.io.CharConversionException e) {
2101
	 *      } catch (java.io.IOException e) {}.
2102
	 *    When enabling this option, the compiler will issue an error or a warning for hidden
2103
	 *    catch blocks corresponding to checked exceptions
2104
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"
2105
	 *     - possible values:   { "error", "warning", "ignore" }
2106
	 *     - default:           "warning"
2107
	 *
2108
	 * COMPILER / Reporting Unused Local
2109
	 *    When enabled, the compiler will issue an error or a warning for unused local
2110
	 *    variables (that is, variables never read from)
2111
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedLocal"
2112
	 *     - possible values:   { "error", "warning", "ignore" }
2113
	 *     - default:           "ignore"
2114
	 *
2115
	 * COMPILER / Reporting Unused Parameter
2116
	 *    When enabled, the compiler will issue an error or a warning for unused method
2117
	 *    parameters (that is, parameters never read from)
2118
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameter"
2119
	 *     - possible values:   { "error", "warning", "ignore" }
2120
	 *     - default:           "ignore"
2121
	 *
2122
	 * COMPILER / Reporting Unused Parameter if Implementing Abstract Method
2123
	 *    When enabled, the compiler will signal unused parameters in abstract method implementations.
2124
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
2125
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
2126
	 *     - possible values:   { "enabled", "disabled" }
2127
	 *     - default:           "disabled"
2128
	 *
2129
	 * COMPILER / Reporting Unused Parameter if Overriding Concrete Method
2130
	 *    When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
2131
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
2132
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
2133
	 *     - possible values:   { "enabled", "disabled" }
2134
	 *     - default:           "disabled"
2135
	 *
2136
	 * COMPILER / Consider Reference in Doc Comment for Unused Parameter Check
2137
	 *    When enabled, the compiler will consider doc comment references to parameters (i.e. @param clauses) for the unused
2138
	 *    parameter check. Thus, documented parameters will be considered as mandated as per doc contract.
2139
	 *    The severity of the unused parameter problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
2140
	 *    Note: this option has no effect until the doc comment support is enabled according to the 
2141
	 *    option "org.eclipse.jdt.core.compiler.doc.comment.support".
2142
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference"
2143
	 *     - possible values:   { "enabled", "disabled" }
2144
	 *     - default:           "enabled"
2145
	 *
2146
	 * COMPILER / Reporting Unused Import
2147
	 *    When enabled, the compiler will issue an error or a warning for unused import
2148
	 *    reference
2149
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedImport"
2150
	 *     - possible values:   { "error", "warning", "ignore" }
2151
	 *     - default:           "warning"
2152
	 *
2153
	 * COMPILER / Reporting Unused Private Members
2154
	 *    When enabled, the compiler will issue an error or a warning whenever a private
2155
	 *    method or field is declared but never used within the same unit.
2156
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
2157
	 *     - possible values:   { "error", "warning", "ignore" }
2158
	 *     - default:           "ignore"
2159
	 *
2160
	 * COMPILER / Reporting Assignment with no Effect
2161
	 *    When enabled, the compiler will issue an error or a warning whenever an assignment
2162
	 *    has no effect (e.g 'x = x').
2163
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
2164
	 *     - possible values:   { "error", "warning", "ignore" }
2165
	 *     - default:           "warning"
2166
	 *
2167
	 * COMPILER / Reporting Empty Statements and Unnecessary Semicolons
2168
	 *    When enabled, the compiler will issue an error or a warning if an empty statement or a
2169
	 *    unnecessary semicolon is encountered.
2170
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.emptyStatement"
2171
	 *     - possible values:   { "error", "warning", "ignore" }
2172
	 *     - default:           "ignore"
2173
	 *
2174
	 * COMPILER / Reporting Unnecessary Type Check
2175
	 *    When enabled, the compiler will issue an error or a warning when a cast or an instanceof operation
2176
	 *    is unnecessary.
2177
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck"
2178
	 *     - possible values:   { "error", "warning", "ignore" }
2179
	 *     - default:           "ignore"
2180
	 *
2181
	 * COMPILER / Reporting Unnecessary Else
2182
	 *    When enabled, the compiler will issue an error or a warning when a statement is unnecessarily
2183
	 *    nested within an else clause (in situation where then clause is not completing normally).
2184
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryElse"
2185
	 *     - possible values:   { "error", "warning", "ignore" }
2186
	 *     - default:           "ignore"
2187
	 *
2188
	 * COMPILER / Reporting Synthetic Access Emulation
2189
	 *    When enabled, the compiler will issue an error or a warning whenever it emulates
2190
	 *    access to a non-accessible member of an enclosing type. Such access can have
2191
	 *    performance implications.
2192
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation"
2193
	 *     - possible values:   { "error", "warning", "ignore" }
2194
	 *     - default:           "ignore"
2195
	 *
2196
	 * COMPILER / Reporting Non-Externalized String Literal
2197
	 *    When enabled, the compiler will issue an error or a warning for non externalized
2198
	 *    String literal (that is, not tagged with //$NON-NLS-&lt;n&gt;$).
2199
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral"
2200
	 *     - possible values:   { "error", "warning", "ignore" }
2201
	 *     - default:           "ignore"
2202
	 *
2203
	 * COMPILER / Reporting Usage of 'assert' Identifier
2204
	 *    When enabled, the compiler will issue an error or a warning whenever 'assert' is
2205
	 *    used as an identifier (reserved keyword in 1.4)
2206
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.assertIdentifier"
2207
	 *     - possible values:   { "error", "warning", "ignore" }
2208
	 *     - default:           "warning"
2209
	 *
2210
	 * COMPILER / Reporting Usage of 'enum' Identifier
2211
	 *    When enabled, the compiler will issue an error or a warning whenever 'enum' is
2212
	 *    used as an identifier (reserved keyword in 1.5)
2213
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.enumIdentifier"
2214
	 *     - possible values:   { "error", "warning", "ignore" }
2215
	 *     - default:           "warning"
2216
	 *
2217
	 * COMPILER / Reporting Non-Static Reference to a Static Member
2218
	 *    When enabled, the compiler will issue an error or a warning whenever a static field
2219
	 *    or method is accessed with an expression receiver. A reference to a static member should
2220
	 *    be qualified with a type name.
2221
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.staticAccessReceiver"
2222
	 *     - possible values:   { "error", "warning", "ignore" }
2223
	 *     - default:           "warning"
2224
	 *
2225
	 * COMPILER / Reporting Indirect Reference to a Static Member
2226
	 *    When enabled, the compiler will issue an error or a warning whenever a static field
2227
	 *    or method is accessed in an indirect way. A reference to a static member should
2228
	 *    preferably be qualified with its declaring type name.
2229
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.indirectStaticAccess"
2230
	 *     - possible values:   { "error", "warning", "ignore" }
2231
	 *     - default:           "ignore"
2232
	 *
2233
	 * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
2234
	 *    When enabled, the compiler will issue an error or a warning whenever an interface
2235
	 *    defines a method incompatible with a non-inherited Object method. Until this conflict
2236
	 *    is resolved, such an interface cannot be implemented, For example,
2237
	 *      interface I {
2238
	 *         int clone();
2239
	 *      }
2240
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
2241
	 *     - possible values:   { "error", "warning", "ignore" }
2242
	 *     - default:           "warning"
2243
	 *
2244
	 * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
2245
	 *    When enabled, the compiler will issue an error or a warning whenever a char[] expression
2246
	 *    is used in String concatenations (for example, "hello" + new char[]{'w','o','r','l','d'}).
2247
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
2248
	 *     - possible values:   { "error", "warning", "ignore" }
2249
	 *     - default:           "warning"
2250
	 *
2251
	 * COMPILER / Reporting Local Variable Declaration Hiding another Variable
2252
	 *    When enabled, the compiler will issue an error or a warning whenever a local variable
2253
	 *    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
2254
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.localVariableHiding"
2255
	 *     - possible values:   { "error", "warning", "ignore" }
2256
	 *     - default:           "ignore"
2257
	 *
2258
	 * COMPILER / Reporting Field Declaration Hiding another Variable
2259
	 *    When enabled, the compiler will issue an error or a warning whenever a field
2260
	 *    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
2261
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.fieldHiding"
2262
	 *     - possible values:   { "error", "warning", "ignore" }
2263
	 *     - default:           "ignore"
2264
	 *
2265
	 * COMPILER / Reporting Special Parameter Hiding another Field
2266
	 *    When enabled, the compiler will signal cases where a constructor or setter method parameter declaration
2267
	 *    is hiding some field (either locally, inherited or defined in enclosing type).
2268
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.localVariableHiding".
2269
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.specialParameterHidingField"
2270
	 *     - possible values:   { "enabled", "disabled" }
2271
	 *     - default:           "disabled"
2272
	 *
2273
	 * COMPILER / Reporting Type Declaration Hiding another Type
2274
	 *    When enabled, the compiler will issue an error or a warning in situations where a type parameter
2275
	 *    declaration is hiding some type, when a nested type is hiding some type parameter, or when
2276
	 *    a nested type is hiding another nested type defined in same unit.
2277
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.typeParameterHiding"
2278
	 *     - possible values:   { "error", "warning", "ignore" }
2279
	 *     - default:           "warning"
2280
	 *
2281
	 * COMPILER / Reporting Possible Accidental Boolean Assignment
2282
	 *    When enabled, the compiler will issue an error or a warning if a boolean assignment is acting as the condition
2283
	 *    of a control statement  (where it probably was meant to be a boolean comparison).
2284
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment"
2285
	 *     - possible values:   { "error", "warning", "ignore" }
2286
	 *     - default:           "ignore"
2287
	 *
2288
	 * COMPILER / Reporting Undocumented Empty Block
2289
	 *    When enabled, the compiler will issue an error or a warning when an empty block is detected and it is not
2290
	 *    documented with any comment.
2291
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock"
2292
	 *     - possible values:   { "error", "warning", "ignore" }
2293
	 *     - default:           "ignore"
2294
	 *
2295
	 * COMPILER / Reporting Finally Blocks Not Completing Normally
2296
	 *    When enabled, the compiler will issue an error or a warning when a finally block does not complete normally.
2297
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally"
2298
	 *     - possible values:   { "error", "warning", "ignore" }
2299
	 *     - default:           "warning"
2300
	 *
2301
	 * COMPILER / Reporting Unused Declared Thrown Exception
2302
	 *    When enabled, the compiler will issue an error or a warning when a 
2303
	 *    method or a constructor is declaring a thrown exception, but never 
2304
	 *    actually raises it in its body. Depending on
2305
	 *    "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions",
2306
	 *    only checked exceptions will be considered (default), or all 
2307
	 *    exceptions, including unchecked ones, will be considered. 
2308
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException"
2309
	 *     - possible values:   { "error", "warning", "ignore" }
2310
	 *     - default:           "ignore"
2311
	 *
2312
	 * COMPILER / Reporting Unused Declared Thrown Exception in Overriding Method
2313
	 *    When disabled, the compiler will report unused declared thrown
2314
	 *    exceptions neither on overriding methods nor on implementing methods.
2315
	 *    <br>
2316
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
2317
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"
2318
	 *     - possible values:   { "enabled", "disabled" }
2319
	 *     - default:           "disabled"
2320
	 *
2321
	 * COMPILER / Consider Reference in Doc Comment for Unused Declared Thrown Exception Check
2322
	 *    When enabled, the compiler will consider doc comment references to exceptions (i.e. @throws clauses) for the unused
2323
	 *    declared thrown exception check. Thus, documented exceptions will be considered as mandated as per doc contract.
2324
	 *    The severity of the unused declared thrown exception problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
2325
	 *    Note: this option has no effect until the doc comment support is enabled according to the 
2326
	 *    option "org.eclipse.jdt.core.compiler.doc.comment.support".
2327
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference"
2328
	 *     - possible values:   { "enabled", "disabled" }
2329
	 *     - default:           "enabled"
2330
	 *
2331
	 * COMPILER / Reporting Unused Declared Thrown Unchecked Exceptions
2332
	 *    When enabled, the compiler will report unused declared thrown 
2333
	 *    exceptions for all exceptions, including unchecked ones. When 
2334
	 *    disabled, only checked exceptions will be considered.
2335
	 *    <br>
2336
	 *    The severity of the problem is controlled with option 
2337
	 *    "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
2338
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeUncheckedExceptions"
2339
	 *     - possible values:   { "enabled", "disabled" }
2340
	 *     - default:           "disabled"
2341
	 *
2342
	 * COMPILER / Reporting Unqualified Access to Field
2343
	 *    When enabled, the compiler will issue an error or a warning when a field is access without any qualification.
2344
	 *    In order to improve code readability, it should be qualified, e.g. 'x' should rather be written 'this.x'.
2345
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess"
2346
	 *     - possible values:   { "error", "warning", "ignore" }
2347
	 *     - default:           "ignore"
2348
	 *
2349
	 * COMPILER / Reporting Unchecked Type Operation
2350
	 *    When enabled, the compiler will issue an error or a warning whenever an operation involves generic types, and potentially
2351
	 *    invalidates type safety since involving raw types (e.g. invoking #foo(X&lt;String&gt;) with arguments  (X)).
2352
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation"
2353
	 *     - possible values:   { "error", "warning", "ignore" }
2354
	 *     - default:           "warning"
2355
	 *
2356
	 * COMPILER / Reporting Raw Type Reference
2357
	 *    When enabled, the compiler will issue an error or a warning when detecting references to raw types. Raw types are
2358
	 *    discouraged, and are intended to help interfacing with legacy code. In the future, the language specification may
2359
	 *    reject raw references to generic types.
2360
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.rawTypeReference"
2361
	 *     - possible values:   { "error", "warning", "ignore" }
2362
	 *     - default:           "warning"
2363
	 *
2364
	 * COMPILER / Reporting final Bound for Type Parameter
2365
	 *    When enabled, the compiler will issue an error or a warning whenever a generic type parameter is associated with a
2366
	 *    bound corresponding to a final type; since final types cannot be further extended, the parameter is pretty useless.
2367
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.finalParameterBound"
2368
	 *     - possible values:   { "error", "warning", "ignore" }
2369
	 *     - default:           "warning"
2370
	 *
2371
	 * COMPILER / Reporting Missing Declaration of serialVersionUID Field on Serializable Class
2372
	 *    When enabled, the compiler will issue an error or a warning whenever a serializable class is missing a local declaration
2373
	 *    of a serialVersionUID field. This field must be declared as static final and be of type long.
2374
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingSerialVersion"
2375
	 *     - possible values:   { "error", "warning", "ignore" }
2376
	 *     - default:           "warning"
2377
	 *
2378
	 * COMPILER / Reporting Varargs Argument Needing a Cast in Method/Constructor Invocation
2379
	 *    When enabled, the compiler will issue an error or a warning whenever a varargs arguments should be cast
2380
	 *    when passed to a method/constructor invocation. (e.g. Class.getMethod(String name, Class ... args )
2381
	 *    invoked with arguments ("foo", null)).
2382
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast"
2383
	 *     - possible values:   { "error", "warning", "ignore" }
2384
	 *     - default:           "warning"
2385
	 *
2386
	 * COMPILER / Reporting Null Dereference
2387
	 *    When enabled, the compiler will issue an error or a warning whenever a
2388
	 *    variable that is statically known to hold a null value is used to
2389
	 *    access a field or method.
2390
	 *
2391
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.nullReference"
2392
	 *     - possible values:   { "error", "warning", "ignore" }
2393
	 *     - default:           "ignore"
2394
	 *
2395
	 * COMPILER / Reporting Potential Null Dereference
2396
	 *    When enabled, the compiler will issue an error or a warning whenever a
2397
	 *    variable that has formerly been tested against null but is not (no more)
2398
	 *    statically known to hold a non-null value is used to access a field or
2399
	 *    method.
2400
	 *
2401
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.potentialNullReference"
2402
	 *     - possible values:   { "error", "warning", "ignore" }
2403
	 *     - default:           "warning"
2404
	 *
2405
	 * COMPILER / Reporting Redundant Null Check
2406
	 *    When enabled, the compiler will issue an error or a warning whenever a
2407
	 *    variable that is statically known to hold a null or a non-null value
2408
	 *    is tested against null.
2409
	 *
2410
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.redundantNullCheck"
2411
	 *     - possible values:   { "error", "warning", "ignore" }
2412
	 *     - default:           "ignore"
2413
	 *
2414
	 * COMPILER / Reporting Use of Annotation Type as Super Interface
2415
	 *    When enabled, the compiler will issue an error or a warning whenever an annotation type is used
2416
	 *    as a super-interface. Though legal, this is discouraged.
2417
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.annotationSuperInterface"
2418
	 *     - possible values:   { "error", "warning", "ignore" }
2419
	 *     - default:           "warning"
2420
	 *
2421
	 * COMPILER / Reporting Missing @Override Annotation
2422
	 *    When enabled, the compiler will issue an error or a warning whenever encountering a method
2423
	 *    declaration which overrides a superclass method but has no @Override annotation.
2424
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation"
2425
	 *     - possible values:   { "error", "warning", "ignore" }
2426
	 *     - default:           "ignore"
2427
	 *
2428
	 * COMPILER / Reporting Missing @Deprecated Annotation
2429
	 *    When enabled, the compiler will issue an error or a warning whenever encountering a declaration
2430
	 *    carrying a @deprecated doc tag but having no corresponding @Deprecated annotation.
2431
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation"
2432
	 *     - possible values:   { "error", "warning", "ignore" }
2433
	 *     - default:           "ignore"
2434
	 *
2435
	 * COMPILER / Reporting Incomplete Enum Switch
2436
	 *    When enabled, the compiler will issue an error or a warning whenever
2437
	 *    an enum constant has no corresponding case label in an enum switch
2438
	 *    statement.
2439
	 *     - option id:        "org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch"
2440
	 *     - possible values:   { "error", "warning", "ignore" }
2441
	 *     - default:           "ignore"
2442
	 *
2443
	 * COMPILER / Reporting Boxing/Unboxing Conversion
2444
	 *    When enabled, the compiler will issue an error or a warning whenever a boxing or an unboxing
2445
	 *    conversion is performed.
2446
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.autoboxing"
2447
	 *     - possible values:   { "error", "warning", "ignore" }
2448
	 *     - default:           "ignore"
2449
	 *
2450
	 * COMPILER / Reporting Invalid Javadoc Comment
2451
	 *    This is the generic control for the severity of Javadoc problems.
2452
	 *    When enabled, the compiler will issue an error or a warning for a problem in Javadoc.
2453
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadoc"
2454
	 *     - possible values:   { "error", "warning", "ignore" }
2455
	 *     - default:           "ignore"
2456
	 *
2457
	 * COMPILER / Visibility Level For Invalid Javadoc Tags
2458
	 *    Set the minimum visibility level for Javadoc tag problems. Below this level problems will be ignored.
2459
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility"
2460
	 *     - possible values:   { "public", "protected", "default", "private" }
2461
	 *     - default:           "public"
2462
	 *
2463
	 * COMPILER / Reporting Invalid Javadoc Tags
2464
	 *    When enabled, the compiler will signal unbound or unexpected reference tags in Javadoc.
2465
	 *    A 'throws' tag referencing an undeclared exception would be considered as unexpected.
2466
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
2467
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
2468
	 *    <br>
2469
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
2470
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTags"
2471
	 *     - possible values:   { "disabled", "enabled" }
2472
	 *     - default:           "disabled"
2473
	 *
2474
	 * COMPILER / Reporting missing tag description
2475
	 *    When enabled, the compiler will report a warning or an error for any Javadoc missing a required description.
2476
	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
2477
	 *    This option is NOT dependent from the Report errors in tags option.
2478
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription"
2479
	 *     - possible values:   { "return_tag", "all_tags", "no_tag" }
2480
	 *     - default:           "return_tag"
2481
	 *
2482
	 * COMPILER / Reporting Invalid Javadoc Tags with Deprecated References
2483
	 *    Specify whether the compiler will report deprecated references used in Javadoc tags.
2484
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
2485
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
2486
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef"
2487
	 *     - possible values:   { "enabled", "disabled" }
2488
	 *     - default:           "disabled"
2489
	 *
2490
	 * COMPILER / Reporting Invalid Javadoc Tags with Not Visible References
2491
	 *    Specify whether the compiler will report non-visible references used in Javadoc tags.
2492
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
2493
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
2494
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef"
2495
	 *     - possible values:   { "enabled", "disabled" }
2496
	 *     - default:           "disabled"
2497
	 *
2498
	 * COMPILER / Reporting Missing Javadoc Tags
2499
	 *    This is the generic control for the severity of Javadoc missing tag problems.
2500
	 *    When enabled, the compiler will issue an error or a warning when tags are missing in Javadoc comments.
2501
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
2502
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility".
2503
	 *    <br>
2504
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTags"
2505
	 *     - possible values:   { "error", "warning", "ignore" }
2506
	 *     - default:           "ignore"
2507
	 *
2508
	 * COMPILER / Visibility Level For Missing Javadoc Tags
2509
	 *    Set the minimum visibility level for Javadoc missing tag problems. Below this level problems will be ignored.
2510
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility"
2511
	 *     - possible values:   { "public", "protected", "default", "private" }
2512
	 *     - default:           "public"
2513
	 *
2514
	 * COMPILER / Reporting Missing Javadoc Tags on Overriding Methods
2515
	 *    Specify whether the compiler will verify overriding methods in order to report Javadoc missing tag problems.
2516
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding"
2517
	 *     - possible values:   { "enabled", "disabled" }
2518
	 *     - default:           "disabled"
2519
	 *
2520
	 * COMPILER / Reporting Missing Javadoc Comments
2521
	 *    This is the generic control for the severity of missing Javadoc comment problems.
2522
	 *    When enabled, the compiler will issue an error or a warning when Javadoc comments are missing.
2523
	 *    <br>Note that this diagnosis can be enabled based on the visibility of the construct associated with the expected Javadoc;
2524
	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility".
2525
	 *    <br>
2526
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocComments"
2527
	 *     - possible values:   { "error", "warning", "ignore" }
2528
	 *     - default:           "ignore"
2529
	 *
2530
	 * COMPILER / Visibility Level For Missing Javadoc Comments
2531
	 *    Set the minimum visibility level for missing Javadoc problems. Below this level problems will be ignored.
2532
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility"
2533
	 *     - possible values:   { "public", "protected", "default", "private" }
2534
	 *     - default:           "public"
2535
	 *
2536
	 * COMPILER / Reporting Missing Javadoc Comments on Overriding Methods
2537
	 *    Specify whether the compiler will verify overriding methods in order to report missing Javadoc comment problems.
2538
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding"
2539
	 *     - possible values:   { "enabled", "disabled" }
2540
	 *     - default:           "disabled"
2541
	 *
2542
	 * COMPILER / Maximum Number of Problems Reported per Compilation Unit
2543
	 *    Specify the maximum number of problems reported on each compilation unit.
2544
	 *     - option id:         "org.eclipse.jdt.core.compiler.maxProblemPerUnit"
2545
	 *     - possible values:	"&lt;n&gt;" where &lt;n&gt; is zero or a positive integer (if zero then all problems are reported).
2546
	 *     - default:           "100"
2547
	 *
2548
	 * COMPILER / Treating Optional Error as Fatal
2549
	 *    When enabled, optional errors (i.e. optional problems which severity is set to "error") will be treated as standard
2550
	 *    compiler errors, yielding problem methods/types preventing from running offending code until the issue got resolved.
2551
	 *    When disabled, optional errors are only considered as warnings, still carrying an error indication to make them more
2552
	 *    severe. Note that by default, errors are fatal, whether they are optional or not.
2553
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.fatalOptionalError"
2554
	 *     - possible values:   { "enabled", "disabled" }
2555
	 *     - default:           "enabled"
2556
	 *
2557
	 * COMPILER / Defining the Automatic Task Tags
2558
	 *    When the tag list is not empty, the compiler will issue a task marker whenever it encounters
2559
	 *    one of the corresponding tags inside any comment in Java source code.
2560
	 *    Generated task messages will start with the tag, and range until the next line separator,
2561
	 *    comment ending, or tag.
2562
	 *    When a given line of code bears multiple tags, each tag will be reported separately.
2563
	 *    Moreover, a tag immediately followed by another tag will be reported using the contents of the
2564
	 *    next non-empty tag of the line, if any.
2565
	 *    Note that tasks messages are trimmed. If a tag is starting with a letter or digit, then it cannot be leaded by
2566
	 *    another letter or digit to be recognized ("fooToDo" will not be recognized as a task for tag "ToDo", but "foo#ToDo"
2567
	 *    will be detected for either tag "ToDo" or "#ToDo"). Respectively, a tag ending with a letter or digit cannot be followed
2568
	 *    by a letter or digit to be recognized ("ToDofoo" will not be recognized as a task for tag "ToDo", but "ToDo:foo" will
2569
	 *    be detected either for tag "ToDo" or "ToDo:").
2570
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskTags"
2571
	 *     - possible values:   { "&lt;tag&gt;[,&lt;tag&gt;]*" } where &lt;tag&gt; is a String without any wild-card or leading/trailing spaces
2572
	 *     - default:           "TODO,FIXME,XXX"
2573
	 *
2574
	 * COMPILER / Defining the Automatic Task Priorities
2575
	 *    In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
2576
	 *    of the task markers issued by the compiler.
2577
	 *    If the default is specified, the priority of each task marker is "NORMAL".
2578
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskPriorities"
2579
	 *     - possible values:   { "&lt;priority&gt;[,&lt;priority&gt;]*" } where &lt;priority&gt; is one of "HIGH", "NORMAL" or "LOW"
2580
	 *     - default:           "NORMAL,HIGH,NORMAL"
2581
	 *
2582
	 * COMPILER / Determining whether task tags are case-sensitive
2583
	 *    When enabled, task tags are considered in a case-sensitive way.
2584
	 *     - option id:         "org.eclipse.jdt.core.compiler.taskCaseSensitive"
2585
	 *     - possible values:   { "enabled", "disabled" }
2586
	 *     - default:           "enabled"
2587
	 *
2588
	 * COMPILER / Reporting Forbidden Reference to Type with Restricted Access
2589
	 *    When enabled, the compiler will issue an error or a warning when referring to a type that is non accessible, as defined according
2590
	 *    to the access rule specifications.
2591
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.forbiddenReference"
2592
	 *     - possible values:   { "error", "warning", "ignore" }
2593
	 *     - default:           "warning"
2594
	 *
2595
	 * COMPILER / Reporting Discouraged Reference to Type with Restricted Access
2596
	 *    When enabled, the compiler will issue an error or a warning when referring to a type with discouraged access, as defined according
2597
	 *    to the access rule specifications.
2598
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.discouragedReference"
2599
	 *     - possible values:   { "error", "warning", "ignore" }
2600
	 *     - default:           "warning"
2601
	 *
2602
	 * COMPILER / Determining Effect of @SuppressWarnings
2603
	 *    When enabled, the @SuppressWarnings annotation can be used to suppress some compiler warnings.
2604
	 *    When disabled, all @SupressWarnings annotations are ignored; i.e., warnings are reported.
2605
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.suppressWarnings"
2606
	 *     - possible values:   { "enabled", "disabled" }
2607
	 *     - default:           "enabled"
2608
	 *
2609
	 * COMPILER / Reporting Unhandled Warning Token for @SuppressWarnings
2610
	 *    When enabled, the compiler will issue an error or a warning when encountering a token
2611
	 *    it cannot handle inside a @SuppressWarnings annotation.
2612
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unhandledWarningToken"
2613
	 *     - possible values:   { "error", "warning", "ignore" }
2614
	 *     - default:           "warning"
2615
	 *
2616
	 * COMPILER / Reporting Unnecessary @SuppressWarnings
2617
	 *    When enabled, the compiler will issue an error or a warning when encountering @SuppressWarnings annotation 
2618
	 *    for which no corresponding warning got detected in the code. This diagnostic is provided to help developers to get
2619
	 *    rid of transient @SuppressWarnings no longer needed. Note that <code>@SuppressWarnings("all")</code> is still 
2620
	 *    silencing the warning for unnecessary <code>@SuppressWarnings</code>, as it is the master switch to silence ALL warnings.
2621
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedWarningToken"
2622
	 *     - possible values:   { "error", "warning", "ignore" }
2623
	 *     - default:           "warning"
2624
	 *
2625
	 * COMPILER / Reporting Unreferenced Label
2626
	 *    When enabled, the compiler will issue an error or a warning when encountering a labeled statement which label
2627
	 *    is never explicitly referenced. A label is considered to be referenced if its name explicitly appears behind a break
2628
	 *    or continue statement; for instance the following label would be considered unreferenced;   LABEL: { break; }
2629
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedLabel"
2630
	 *     - possible values:   { "error", "warning", "ignore" }
2631
	 *     - default:           "warning"
2632
	 *
2633
	 * COMPILER / Reporting Parameter Assignment
2634
	 *    When enabled, the compiler will issue an error or a warning if a parameter is
2635
	 *    assigned to.
2636
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.parameterAssignment"
2637
	 *     - possible values:   { "error", "warning", "ignore" }
2638
	 *     - default:           "ignore"
2639
	 *
2640
	 * COMPILER / Reporting Switch Fall-Through Case
2641
	 *    When enabled, the compiler will issue an error or a warning if a case may be
2642
	 *    entered by falling through previous case. Empty cases are allowed.
2643
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.fallthroughCase"
2644
	 *     - possible values:   { "error", "warning", "ignore" }
2645
	 *     - default:           "ignore"
2646
	 *
2647
	 * COMPILER / Reporting Overriding method that doesn't call the super method invocation
2648
	 *    When enabled, the compiler will issue an error or a warning if a method is overriding a method without calling
2649
	 *    the super invocation.
2650
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.overridingMethodWithoutSuperInvocation"
2651
	 *     - possible values:   { "error", "warning", "ignore" }
2652
	 *     - default:           "ignore"
2653
	 *
2654
	 * COMPILER / Reporting Presence of Type Arguments for a Non-Generic Method Invocation
2655
	 *    When enabled, the compiler will issue an error or a warning whenever type arguments are encountered for a
2656
	 *    non-generic method invocation. Note that prior to compliance level is "1.7", this situation would automatically result
2657
	 *    in an error. From Java7 on, unused type arguments are being tolerated, and optionally warned against.
2658
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedTypeArgumentsForMethodInvocation"
2659
	 *     - possible values:   { "error", "warning", "ignore" }
2660
	 *     - default:           "warning"
2661
	 *     
2662
	 * COMPILER / Reporting Redundant Superinterface
2663
	 *    When enabled, the compiler will issue an error or a warning if a type
2664
	 *    explicitly implements an interface that is already implemented by any 
2665
	 *    of its supertypes.
2666
	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.redundantSuperinterface"
2667
	 *     - possible values:   { "error", "warning", "ignore" }
2668
	 *     - default:           "ignore"
2669
	 *
2670
	 * BUILDER / Specifying Filters for Resource Copying Control
2671
	 *    Allow to specify some filters to control the resource copy process.
2672
	 *     - option id:         "org.eclipse.jdt.core.builder.resourceCopyExclusionFilter"
2673
	 *     - possible values:   { "&lt;name&gt;[,&lt;name&gt;]* } where &lt;name&gt; is a file name pattern (* and ? wild-cards allowed)
2674
	 *       or the name of a folder which ends with '/'
2675
	 *     - default:           ""
2676
	 *
2677
	 * BUILDER / Abort if Invalid Classpath
2678
	 *    Allow to toggle the builder to abort if the classpath is invalid
2679
	 *     - option id:         "org.eclipse.jdt.core.builder.invalidClasspath"
2680
	 *     - possible values:   { "abort", "ignore" }
2681
	 *     - default:           "abort"
2682
	 *
2683
	 * BUILDER / Cleaning Output Folder(s)
2684
	 *    Indicate whether the JavaBuilder is allowed to clean the output folders
2685
	 *    when performing full build operations.
2686
	 *     - option id:         "org.eclipse.jdt.core.builder.cleanOutputFolder"
2687
	 *     - possible values:   { "clean", "ignore" }
2688
	 *     - default:           "clean"
2689
	 *
2690
	 * BUILDER / Recreate Modified class files in Output Folder
2691
	 *    Indicate whether the JavaBuilder should check for any changes to .class files
2692
	 *    in the output folders while performing incremental build operations. If changes
2693
	 *    are detected to managed .class files, then a full build is performed, otherwise
2694
	 *    the changes are left as is. Tools further altering generated .class files, like optimizers,
2695
	 *    should ensure this option remains set in its default state of ignore.
2696
	 *     - option id:         "org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder"
2697
	 *     - possible values:   { "enabled", "ignore" }
2698
	 *     - default:           "ignore"
2699
	 *
2700
	 * BUILDER / Reporting Duplicate Resources
2701
	 *    Indicate the severity of the problem reported when more than one occurrence
2702
	 *    of a resource is to be copied into the output location.
2703
	 *     - option id:         "org.eclipse.jdt.core.builder.duplicateResourceTask"
2704
	 *     - possible values:   { "error", "warning" }
2705
	 *     - default:           "warning"
2706
	 *
2707
	 * JAVACORE / Computing Project Build Order
2708
	 *    Indicate whether JavaCore should enforce the project build order to be based on
2709
	 *    the classpath prerequisite chain. When requesting to compute, this takes over
2710
	 *    the platform default order (based on project references).
2711
	 *     - option id:         "org.eclipse.jdt.core.computeJavaBuildOrder"
2712
	 *     - possible values:   { "compute", "ignore" }
2713
	 *     - default:           "ignore"
2714
	 *
2715
	 * JAVACORE / Default Source Encoding Format
2716
	 *    Get the default encoding format of source files. This value is
2717
	 *    immutable and preset to the result of ResourcesPlugin.getEncoding().
2718
	 *    It is offered as a convenience shortcut only.
2719
	 *     - option id:         "org.eclipse.jdt.core.encoding"
2720
	 *     - value:           &lt;immutable, platform default value&gt;
2721
	 *
2722
	 * JAVACORE / Reporting Incomplete Classpath
2723
	 *    Indicate the severity of the problem reported when an entry on the classpath does not exist,
2724
	 *    is not legite or is not visible (for example, a referenced project is closed).
2725
	 *     - option id:         "org.eclipse.jdt.core.incompleteClasspath"
2726
	 *     - possible values:   { "error", "warning"}
2727
	 *     - default:           "error"
2728
	 *
2729
	 * JAVACORE / Reporting Classpath Cycle
2730
	 *    Indicate the severity of the problem reported when a project is involved in a cycle.
2731
	 *     - option id:         "org.eclipse.jdt.core.circularClasspath"
2732
	 *     - possible values:   { "error", "warning" }
2733
	 *     - default:           "error"
2734
	 *
2735
	 * JAVACORE / Reporting Incompatible JDK Level for Required Binaries
2736
	 *    Indicate the severity of the problem reported when a project prerequisites another project
2737
	 *    or library with an incompatible target JDK level (e.g. project targeting 1.1 vm, but compiled against 1.4 libraries).
2738
	 *     - option id:         "org.eclipse.jdt.core.incompatibleJDKLevel"
2739
	 *     - possible values:   { "error", "warning", "ignore" }
2740
	 *     - default:           "ignore"
2741
	 *
2742
	 * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
2743
	 *    When disabled, no entry on a project classpath can be associated with
2744
	 *    an exclusion pattern.
2745
	 *     - option id:         "org.eclipse.jdt.core.classpath.exclusionPatterns"
2746
	 *     - possible values:   { "enabled", "disabled" }
2747
	 *     - default:           "enabled"
2748
	 *
2749
	 * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
2750
	 *    When disabled, no entry on a project classpath can be associated with
2751
	 *    a specific output location, preventing thus usage of multiple output locations.
2752
	 *     - option id:         "org.eclipse.jdt.core.classpath.multipleOutputLocations"
2753
	 *     - possible values:   { "enabled", "disabled" }
2754
	 *     - default:           "enabled"
2755
	 *
2756
	 * JAVACORE / Set the timeout value for retrieving the method's parameter names from javadoc
2757
	 *    Timeout in milliseconds to retrieve the method's parameter names from javadoc.
2758
	 *    If the value is 0, the parameter names are not fetched and the raw names are returned.
2759
	 *     - option id:         "org.eclipse.jdt.core.timeoutForParameterNameFromAttachedJavadoc"
2760
	 *     - possible values:	"&lt;n&gt;", where n is an integer greater than or equal to 0
2761
	 *     - default:           "50"
2762
	 *
2763
	 * DEPRECATED SEE DefaultCodeFormatterOptions: FORMATTER / Inserting New Line Before Opening Brace
2764
	 *    When Insert, a new line is inserted before an opening brace, otherwise nothing
2765
	 *    is inserted
2766
	 *     - option id:         "org.eclipse.jdt.core.formatter.newline.openingBrace"
2767
	 *     - possible values:   { "insert", "do not insert" }
2768
	 *     - default:           "do not insert"
2769
	 *
2770
	 * DEPRECATED SEE DefaultCodeFormatterOptions: FORMATTER / Inserting New Line Inside Control Statement
2771
	 *    When Insert, a new line is inserted between } and following else, catch, finally
2772
	 *     - option id:         "org.eclipse.jdt.core.formatter.newline.controlStatement"
2773
	 *     - possible values:   { "insert", "do not insert" }
2774
	 *     - default:           "do not insert"
2775
	 *
2776
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Clearing Blank Lines
2777
	 *    When Clear all, all blank lines are removed. When Preserve one, only one is kept
2778
	 *    and all others removed.
2779
	 *     - option id:         "org.eclipse.jdt.core.formatter.newline.clearAll"
2780
	 *     - possible values:   { "clear all", "preserve one" }
2781
	 *     - default:           "preserve one"
2782
	 *
2783
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Inserting New Line Between Else/If
2784
	 *    When Insert, a blank line is inserted between an else and an if when they are
2785
	 *    contiguous. When choosing to not insert, else-if will be kept on the same
2786
	 *    line when possible.
2787
	 *     - option id:         "org.eclipse.jdt.core.formatter.newline.elseIf"
2788
	 *     - possible values:   { "insert", "do not insert" }
2789
	 *     - default:           "do not insert"
2790
	 *
2791
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Inserting New Line In Empty Block
2792
	 *    When insert, a line break is inserted between contiguous { and }, if } is not followed
2793
	 *    by a keyword.
2794
	 *     - option id:         "org.eclipse.jdt.core.formatter.newline.emptyBlock"
2795
	 *     - possible values:   { "insert", "do not insert" }
2796
	 *     - default:           "insert"
2797
	 *
2798
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Splitting Lines Exceeding Length
2799
	 *    Enable splitting of long lines (exceeding the configurable length). Length of 0 will
2800
	 *    disable line splitting
2801
	 *     - option id:         "org.eclipse.jdt.core.formatter.lineSplit"
2802
	 *     - possible values:	"&lt;n&gt;", where n is zero or a positive integer
2803
	 *     - default:           "80"
2804
	 *
2805
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Compacting Assignment
2806
	 *    Assignments can be formatted asymmetrically, for example 'int x= 2;', when Normal, a space
2807
	 *    is inserted before the assignment operator
2808
	 *     - option id:         "org.eclipse.jdt.core.formatter.style.assignment"
2809
	 *     - possible values:   { "compact", "normal" }
2810
	 *     - default:           "normal"
2811
	 *
2812
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Defining Indentation Character
2813
	 *    Either choose to indent with tab characters or spaces
2814
	 *     - option id:         "org.eclipse.jdt.core.formatter.tabulation.char"
2815
	 *     - possible values:   { "tab", "space" }
2816
	 *     - default:           "tab"
2817
	 *
2818
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Defining Space Indentation Length
2819
	 *    When using spaces, set the amount of space characters to use for each
2820
	 *    indentation mark.
2821
	 *     - option id:         "org.eclipse.jdt.core.formatter.tabulation.size"
2822
	 *     - possible values:	"&lt;n&gt;", where n is a positive integer
2823
	 *     - default:           "4"
2824
	 *
2825
	 * DEPRECATED SEE DefaultCodeFormatterOptions: Inserting space in cast expression
2826
	 *    When Insert, a space is added between the type and the expression in a cast expression.
2827
	 *     - option id:         "org.eclipse.jdt.core.formatter.space.castexpression"
2828
	 *     - possible values:   { "insert", "do not insert" }
2829
	 *     - default:           "insert"
2830
	 *
2831
	 * CODEASSIST / Activate Visibility Sensitive Completion
2832
	 *    When active, completion doesn't show that you can not see
2833
	 *    (for example, you can not see private methods of a super class).
2834
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.visibilityCheck"
2835
	 *     - possible values:   { "enabled", "disabled" }
2836
	 *     - default:           "disabled"
2837
	 *
2838
	 * CODEASSIST / Activate Deprecation Sensitive Completion
2839
	 *    When enabled, completion doesn't propose deprecated members and types.
2840
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.deprecationCheck"
2841
	 *     - possible values:   { "enabled", "disabled" }
2842
	 *     - default:           "disabled"
2843
	 *
2844
	 * CODEASSIST / Automatic Qualification of Implicit Members
2845
	 *    When active, completion automatically qualifies completion on implicit
2846
	 *    field references and message expressions.
2847
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.forceImplicitQualification"
2848
	 *     - possible values:   { "enabled", "disabled" }
2849
	 *     - default:           "disabled"
2850
	 *
2851
	 * CODEASSIST / Define the Prefixes for Field Name
2852
	 *    When the prefixes is non empty, completion for field name will begin with
2853
	 *    one of the proposed prefixes.
2854
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.fieldPrefixes"
2855
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
2856
	 *     - default:           ""
2857
	 *
2858
	 * CODEASSIST / Define the Prefixes for Static Field Name
2859
	 *    When the prefixes is non empty, completion for static field name will begin with
2860
	 *    one of the proposed prefixes.
2861
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"
2862
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
2863
	 *     - default:           ""
2864
	 *
2865
	 * CODEASSIST / Define the Prefixes for Local Variable Name
2866
	 *    When the prefixes is non empty, completion for local variable name will begin with
2867
	 *    one of the proposed prefixes.
2868
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.localPrefixes"
2869
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
2870
	 *     - default:           ""
2871
	 *
2872
	 * CODEASSIST / Define the Prefixes for Argument Name
2873
	 *    When the prefixes is non empty, completion for argument name will begin with
2874
	 *    one of the proposed prefixes.
2875
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.argumentPrefixes"
2876
	 *     - possible values:   { "&lt;prefix&gt;[,&lt;prefix&gt;]*" } where &lt;prefix&gt; is a String without any wild-card
2877
	 *     - default:           ""
2878
	 *
2879
	 * CODEASSIST / Define the Suffixes for Field Name
2880
	 *    When the suffixes is non empty, completion for field name will end with
2881
	 *    one of the proposed suffixes.
2882
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.fieldSuffixes"
2883
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
2884
	 *     - default:           ""
2885
	 *
2886
	 * CODEASSIST / Define the Suffixes for Static Field Name
2887
	 *    When the suffixes is non empty, completion for static field name will end with
2888
	 *    one of the proposed suffixes.
2889
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"
2890
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
2891
	 *     - default:           ""
2892
	 *
2893
	 * CODEASSIST / Define the Suffixes for Local Variable Name
2894
	 *    When the suffixes is non empty, completion for local variable name will end with
2895
	 *    one of the proposed suffixes.
2896
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.localSuffixes"
2897
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
2898
	 *     - default:           ""
2899
	 *
2900
	 * CODEASSIST / Define the Suffixes for Argument Name
2901
	 *    When the suffixes is non empty, completion for argument name will end with
2902
	 *    one of the proposed suffixes.
2903
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.argumentSuffixes"
2904
	 *     - possible values:   { "&lt;suffix&gt;[,&lt;suffix&gt;]*" } where &lt;suffix&gt; is a String without any wild-card
2905
	 *     - default:           ""
2906
	 *
2907
	 * CODEASSIST / Activate Forbidden Reference Sensitive Completion
2908
	 *    When enabled, completion doesn't propose elements which match a
2909
  	 *    forbidden reference rule.
2910
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.forbiddenReferenceCheck"
2911
	 *     - possible values:   { "enabled", "disabled" }
2912
	 *     - default:           "enabled"
2913
	 *
2748
	 *
2914
	 * CODEASSIST / Activate Discouraged Reference Sensitive Completion
2749
	 * @param variableName the name of the classpath variable
2915
	 *    When enabled, completion doesn't propose elements which match a
2750
	 * @return the path, or <code>null</code> if none
2916
  	 *    discouraged reference rule.
2751
	 * @see #setClasspathVariable(String, IPath)
2917
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.discouragedReferenceCheck"
2752
	 */
2918
	 *     - possible values:   { "enabled", "disabled" }
2753
	public static IPath getClasspathVariable(final String variableName) {
2919
	 *     - default:           "disabled"
2754
2755
	    JavaModelManager manager = JavaModelManager.getJavaModelManager();
2756
		IPath variablePath = manager.variableGet(variableName);
2757
		if (variablePath == JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS){
2758
		    return manager.getPreviousSessionVariable(variableName);
2759
		}
2760
2761
		if (variablePath != null) {
2762
			if (variablePath == JavaModelManager.CP_ENTRY_IGNORE_PATH)
2763
				return null;
2764
			return variablePath;
2765
		}
2766
2767
		// even if persisted value exists, initializer is given priority, only if no initializer is found the persisted value is reused
2768
		final ClasspathVariableInitializer initializer = JavaCore.getClasspathVariableInitializer(variableName);
2769
		if (initializer != null){
2770
			if (JavaModelManager.CP_RESOLVE_VERBOSE)
2771
				verbose_triggering_variable_initialization(variableName, initializer);
2772
			if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
2773
				verbose_triggering_variable_initialization_invocation_trace();
2774
			manager.variablePut(variableName, JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS); // avoid initialization cycles
2775
			boolean ok = false;
2776
			try {
2777
				// let OperationCanceledException go through
2778
				// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59363)
2779
				initializer.initialize(variableName);
2780
2781
				variablePath = manager.variableGet(variableName); // initializer should have performed side-effect
2782
				if (variablePath == JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS) return null; // break cycle (initializer did not init or reentering call)
2783
				if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
2784
					verbose_variable_value_after_initialization(variableName, variablePath);
2785
				manager.variablesWithInitializer.add(variableName);
2786
				ok = true;
2787
			} catch (RuntimeException e) {
2788
				if (JavaModelManager.CP_RESOLVE_VERBOSE)
2789
					e.printStackTrace();
2790
				throw e;
2791
			} catch (Error e) {
2792
				if (JavaModelManager.CP_RESOLVE_VERBOSE)
2793
					e.printStackTrace();
2794
				throw e;
2795
			} finally {
2796
				if (!ok) JavaModelManager.getJavaModelManager().variablePut(variableName, null); // flush cache
2797
			}
2798
		} else {
2799
			if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
2800
				verbose_no_variable_initializer_found(variableName);
2801
		}
2802
		return variablePath;
2803
	}
2804
2805
	private static void verbose_no_variable_initializer_found(String variableName) {
2806
		Util.verbose(
2807
			"CPVariable INIT - no initializer found\n" + //$NON-NLS-1$
2808
			"	variable: " + variableName); //$NON-NLS-1$
2809
	}
2810
2811
	private static void verbose_variable_value_after_initialization(String variableName, IPath variablePath) {
2812
		Util.verbose(
2813
			"CPVariable INIT - after initialization\n" + //$NON-NLS-1$
2814
			"	variable: " + variableName +'\n' + //$NON-NLS-1$
2815
			"	variable path: " + variablePath); //$NON-NLS-1$
2816
	}
2817
2818
	private static void verbose_triggering_variable_initialization(String variableName, ClasspathVariableInitializer initializer) {
2819
		Util.verbose(
2820
			"CPVariable INIT - triggering initialization\n" + //$NON-NLS-1$
2821
			"	variable: " + variableName + '\n' + //$NON-NLS-1$
2822
			"	initializer: " + initializer); //$NON-NLS-1$
2823
	}
2824
2825
	private static void verbose_triggering_variable_initialization_invocation_trace() {
2826
		Util.verbose(
2827
			"CPVariable INIT - triggering initialization\n" + //$NON-NLS-1$
2828
			"	invocation trace:"); //$NON-NLS-1$
2829
		new Exception("<Fake exception>").printStackTrace(System.out); //$NON-NLS-1$
2830
	}
2831
2832
	/**
2833
	 * Returns deprecation message of a given classpath variable.
2920
	 *
2834
	 *
2921
	 * CODEASSIST / Activate Camel Case Sensitive Completion
2835
	 * @param variableName
2922
	 *    When enabled, completion shows proposals whose name match the CamelCase
2836
	 * @return A string if the classpath variable is deprecated, <code>null</code> otherwise.
2923
	 *    pattern.
2837
	 * @since 3.3
2924
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.camelCaseMatch"
2838
	 */
2925
	 *     - possible values:   { "enabled", "disabled" }
2839
	public static String getClasspathVariableDeprecationMessage(String variableName) {
2926
	 *     - default:           "enabled"
2840
	    JavaModelManager manager = JavaModelManager.getJavaModelManager();
2841
2842
		// Returns the stored deprecation message
2843
		String message = (String) manager.deprecatedVariables.get(variableName);
2844
		if (message != null) {
2845
		    return message;
2846
		}
2847
	    
2848
	    // If the variable has been already initialized, then there's no deprecation message
2849
		IPath variablePath = manager.variableGet(variableName);
2850
		if (variablePath != null && variablePath != JavaModelManager.VARIABLE_INITIALIZATION_IN_PROGRESS) {
2851
			return null;
2852
		}
2853
2854
		// Search for extension point to get the possible deprecation message
2855
		Plugin jdtCorePlugin = JavaCore.getPlugin();
2856
		if (jdtCorePlugin == null) return null;
2857
2858
		IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
2859
		if (extension != null) {
2860
			IExtension[] extensions =  extension.getExtensions();
2861
			for(int i = 0; i < extensions.length; i++){
2862
				IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
2863
				for(int j = 0; j < configElements.length; j++){
2864
					IConfigurationElement configElement = configElements[j];
2865
					String varAttribute = configElement.getAttribute("variable"); //$NON-NLS-1$
2866
					if (variableName.equals(varAttribute)) {
2867
						String deprecatedAttribute = configElement.getAttribute("deprecated"); //$NON-NLS-1$
2868
						if (deprecatedAttribute != null) {
2869
							return deprecatedAttribute;
2870
						}
2871
					}
2872
				}
2873
			}
2874
		}
2875
		return null;
2876
	}
2877
2878
	/**
2879
	 * Helper method finding the classpath variable initializer registered for a given classpath variable name
2880
	 * or <code>null</code> if none was found while iterating over the contributions to extension point to
2881
	 * the extension point "org.eclipse.jdt.core.classpathVariableInitializer".
2882
	 * <p>
2883
 	 * @param variable the given variable
2884
 	 * @return ClasspathVariableInitializer - the registered classpath variable initializer or <code>null</code> if
2885
	 * none was found.
2886
	 * @since 2.1
2887
 	 */
2888
	public static ClasspathVariableInitializer getClasspathVariableInitializer(String variable){
2889
2890
		Plugin jdtCorePlugin = JavaCore.getPlugin();
2891
		if (jdtCorePlugin == null) return null;
2892
2893
		IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
2894
		if (extension != null) {
2895
			IExtension[] extensions =  extension.getExtensions();
2896
			for(int i = 0; i < extensions.length; i++){
2897
				IConfigurationElement [] configElements = extensions[i].getConfigurationElements();
2898
				for(int j = 0; j < configElements.length; j++){
2899
					IConfigurationElement configElement = configElements[j];
2900
					try {
2901
						String varAttribute = configElement.getAttribute("variable"); //$NON-NLS-1$
2902
						if (variable.equals(varAttribute)) {
2903
							if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
2904
								verbose_found_variable_initializer(variable, configElement);
2905
							Object execExt = configElement.createExecutableExtension("class"); //$NON-NLS-1$
2906
							if (execExt instanceof ClasspathVariableInitializer){
2907
								ClasspathVariableInitializer initializer = (ClasspathVariableInitializer)execExt;
2908
								String deprecatedAttribute = configElement.getAttribute("deprecated"); //$NON-NLS-1$
2909
								if (deprecatedAttribute != null) {
2910
									JavaModelManager.getJavaModelManager().deprecatedVariables.put(variable, deprecatedAttribute);
2911
								}
2912
								String readOnlyAttribute = configElement.getAttribute("readOnly"); //$NON-NLS-1$
2913
								if (JavaModelManager.TRUE.equals(readOnlyAttribute)) {
2914
									JavaModelManager.getJavaModelManager().readOnlyVariables.add(variable);
2915
								}
2916
								return initializer;
2917
							}
2918
						}
2919
					} catch(CoreException e){
2920
						// executable extension could not be created: ignore this initializer
2921
						if (JavaModelManager.CP_RESOLVE_VERBOSE) {
2922
							verbose_failed_to_instanciate_variable_initializer(variable, configElement);
2923
							e.printStackTrace();
2924
						}
2925
					}
2926
				}
2927
			}
2928
		}
2929
		return null;
2930
	}
2931
2932
	private static void verbose_failed_to_instanciate_variable_initializer(String variable, IConfigurationElement configElement) {
2933
		Util.verbose(
2934
			"CPContainer INIT - failed to instanciate initializer\n" + //$NON-NLS-1$
2935
			"	variable: " + variable + '\n' + //$NON-NLS-1$
2936
			"	class: " + configElement.getAttribute("class"), //$NON-NLS-1$ //$NON-NLS-2$
2937
			System.err);
2938
	}
2939
2940
	private static void verbose_found_variable_initializer(String variable, IConfigurationElement configElement) {
2941
		Util.verbose(
2942
			"CPVariable INIT - found initializer\n" + //$NON-NLS-1$
2943
			"	variable: " + variable + '\n' + //$NON-NLS-1$
2944
			"	class: " + configElement.getAttribute("class")); //$NON-NLS-1$ //$NON-NLS-2$
2945
	}
2946
2947
	/**
2948
	 * Returns the names of all known classpath variables.
2949
	 * <p>
2950
	 * Classpath variable values are persisted locally to the workspace, and
2951
	 * are preserved from session to session.
2952
	 * <p>
2927
	 *
2953
	 *
2928
	 * CODEASSIST / Activate Suggestion of Static Import
2954
	 * @return the list of classpath variable names
2929
	 *    When enabled, completion proposals can contain static import
2955
	 * @see #setClasspathVariable(String, IPath)
2930
	 *    pattern.
2956
	 */
2931
	 *     - option id:         "org.eclipse.jdt.core.codeComplete.suggestStaticImports"
2957
	public static String[] getClasspathVariableNames() {
2932
	 *     - possible values:   { "enabled", "disabled" }
2958
		return JavaModelManager.getJavaModelManager().variableNames();
2933
	 *     - default:           "enabled"
2959
	}
2934
	 * </pre>
2960
2961
	/**
2962
	 * Returns a table of all known configurable options with their default values.
2963
	 * These options allow to configure the behaviour of the underlying components.
2964
	 * The client may safely use the result as a template that they can modify and
2965
	 * then pass to <code>setOptions</code>.
2966
	 * <p>
2967
	 * Helper constants have been defined on JavaCore for each of the option IDs
2968
	 * (categorized in CodeAssistOptionID, CompilerOptionID and CoreOptionID) 
2969
	 * and some of their acceptable values (categorized in OptionValue). Some
2970
	 * options accept open value sets beyond the documented constant values.
2971
	 * Note: each release may add new options.
2972
	 * 
2973
	 * @return a table of all known configurable options with their default values
2935
	 */
2974
	 */
2936
 	public static Hashtable getDefaultOptions(){
2975
 	public static Hashtable getDefaultOptions(){
2937
 		return JavaModelManager.getJavaModelManager().getDefaultOptions();
2976
 		return JavaModelManager.getJavaModelManager().getDefaultOptions();
Lines 3176-3183 Link Here
3176
	 * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
3215
	 * Helper method for returning one option value only. Equivalent to <code>(String)JavaCore.getOptions().get(optionName)</code>
3177
	 * Note that it may answer <code>null</code> if this option does not exist.
3216
	 * Note that it may answer <code>null</code> if this option does not exist.
3178
	 * <p>
3217
	 * <p>
3179
	 * For a complete description of the configurable options, see <code>getDefaultOptions</code>.
3218
	 * Helper constants have been defined on JavaCore for each of the option IDs
3180
	 * </p>
3219
	 * (categorized in CodeAssistOptionID, CompilerOptionID and CoreOptionID) 
3220
	 * and some of their acceptable values (categorized in OptionValue). Some
3221
	 * options accept open value sets beyond the documented constant values.
3222
	 * Note: each release may add new options.
3181
	 *
3223
	 *
3182
	 * @param optionName the name of an option
3224
	 * @param optionName the name of an option
3183
	 * @return the String value of a given option
3225
	 * @return the String value of a given option
Lines 3192-3198 Link Here
3192
	/**
3234
	/**
3193
	 * Returns the table of the current options. Initially, all options have their default values,
3235
	 * Returns the table of the current options. Initially, all options have their default values,
3194
	 * and this method returns a table that includes all known options.
3236
	 * and this method returns a table that includes all known options.
3195
	 * <p>For a complete description of the configurable options, see <code>getDefaultOptions</code>.</p>
3237
	 * <p>
3238
	 * Helper constants have been defined on JavaCore for each of the option IDs
3239
	 * (categorized in CodeAssistOptionID, CompilerOptionID and CoreOptionID) 
3240
	 * and some of their acceptable values (categorized in OptionValue). Some
3241
	 * options accept open value sets beyond the documented constant values.
3242
	 * Note: each release may add new options.
3196
	 * <p>Returns a default set of options even if the platform is not running.</p>
3243
	 * <p>Returns a default set of options even if the platform is not running.</p>
3197
	 *
3244
	 *
3198
	 * @return table of current settings of all options
3245
	 * @return table of current settings of all options
Lines 4817-4824 Link Here
4817
	 * Sets the default's compiler options inside the given options map according
4864
	 * Sets the default's compiler options inside the given options map according
4818
	 * to the given compliance.
4865
	 * to the given compliance.
4819
	 *
4866
	 *
4820
	 * <p>The given compliance must be one of the compliance supported by the compiler.
4867
	 * <p>The given compliance must be one of those supported by the compiler, 
4821
	 * See {@link #getDefaultOptions()} for a list of compliance values.</p>
4868
	 * that is one of the acceptable values for option {@link #COMPILER_COMPLIANCE}.
4822
	 *
4869
	 *
4823
	 * <p>The list of modified options is:</p>
4870
	 * <p>The list of modified options is:</p>
4824
	 * <ul>
4871
	 * <ul>
Lines 4882-4890 Link Here
4882
	 * included in the given table are remembered; all previous option settings
4929
	 * included in the given table are remembered; all previous option settings
4883
	 * are forgotten, including ones not explicitly mentioned.
4930
	 * are forgotten, including ones not explicitly mentioned.
4884
	 * <p>
4931
	 * <p>
4885
	 * For a complete description of the configurable options, see
4932
	 * Helper constants have been defined on JavaCore for each of the option IDs
4886
	 * <code>getDefaultOptions</code>.
4933
	 * (categorized in CodeAssistOptionID, CompilerOptionID and CoreOptionID) 
4887
	 * </p>
4934
	 * and some of their acceptable values (categorized in OptionValue). Some
4935
	 * options accept open value sets beyond the documented constant values.
4936
	 * Note: each release may add new options.
4888
	 *
4937
	 *
4889
	 * @param newOptions
4938
	 * @param newOptions
4890
	 *            the new options (key type: <code>String</code>; value type:
4939
	 *            the new options (key type: <code>String</code>; value type:
Lines 4926-4929 Link Here
4926
		super.start(context);
4975
		super.start(context);
4927
		JavaModelManager.getJavaModelManager().startup();
4976
		JavaModelManager.getJavaModelManager().startup();
4928
	}
4977
	}
4929
}
4978
}

Return to bug 202490