JDT/Core Release Notes 3.6
Author: IBM

jdt core - build notes 3.6 stream
Java development tools core
Here are the build notes for the Eclipse JDT/Core plug-in project org.eclipse.jdt.core, describing bug resolution and substantial changes in the HEAD branch. For more information on 3.6 planning, please refer to JDT/Core release plan, the next milestone plan, the overall official plan, or the build schedule. This present document covers all changes since Release 3.5 (also see a summary of API changes). Maintenance of previous releases of JDT/Core is performed in parallel branches: R3.5.x, R3.4.x, R3.3.x, R3.2.x, R3.1.x, R3.0.x, R2.1.x, R2.0.x, R1.0.x.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6 - June 3, 2010 - 3.6.0
Project org.eclipse.jdt.core v_A58 (cvs).

## What's new in this drop

### Problem Reports Fixed

315568 improve Javadoc of SearchPattern#createPattern(String, int, int, int)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC4 - June 3, 2010 - 3.6.0 RC4
Project org.eclipse.jdt.core v_A57 (cvs).

## What's new in this drop

- Use default disabling/enabling tags in the samples of the Javadoc comments of the formatter constants `FORMATTER_DISABLING_TAG` and `FORMATTER_ENABLING_TAG`.
- Fixed minor javadoc issues of `createStrictHierarchyScope()`.

### Problem Reports Fixed

314709 Clarify -encoding <encoding name> in jdt_api_compile.htm

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC3 - May 27, 2010 - 3.6.0 RC3
Project org.eclipse.jdt.core v_A56 (cvs).

## What's new in this drop

### Problem Reports Fixed

313890 Migration guide to 3.6 for containers with MANIFEST-referred entries
313965 Breaking change in classpath container API

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC3 - May 25, 2010
Project org.eclipse.jdt.core v_A55 (cvs).

## What's new in this drop

### Problem Reports Fixed

313706 Replace ie. with i.e. in jdt.core documentation

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC2 - May 20, 2010 - 3.6.0 RC2
Project org.eclipse.jdt.core v_A54 (cvs).

## What's new in this drop

- Added a new preference to force the formatter to try to keep nested expressions on one line.

  This new preference is controlled with the option:

  `DefaultCodeFormatterConstants.FORMATTER_WRAP_OUTER_EXPRESSIONS_WHEN_NESTED`

      /**
       * FORMATTER / Option to wrap outer expressions in nested expressions
       *     - option id:         "org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested"
       *     - possible values:   { TRUE, FALSE }
       *     - default:           TRUE
       *
       * This option changes the formatter behavior when nested method calls are encountered.
       * Since 3.6, the formatter tries to wrap outermost method calls first to have a better output.
       * For example, let's say we are using the Eclipse built-in profile with a max line width=40+space for tab policy.
       * Then consider the following snippet:
       *
       * public class X01 {
       *     void test() {
       *         foo(bar(1, 2, 3, 4), bar(5, 6, 7, 8));
       *     }
       * }
       *
       * With this new strategy, the formatter will wrap the line earlier, between the arguments of the message call
       * for this example, and then it will allow to keep each nested call on a single line.
       * Hence, the output will be:
       *
       * public class X01 {
       *     void test() {
       *         foo(bar(1, 2, 3, 4),
       *             bar(5, 6, 7, 8));
       *     }
       * }
       *
       * Important notes:
       * 1. This new behavior is automatically activated (i.e. the default value for this preference is {@link #TRUE}).
       *    If the backward compatibility regarding previous versions' formatter behavior (i.e. before 3.6 version) is necessary,
       *    then the preference needs to be set to {@link #FALSE} to retrieve the previous formatter behavior.
       * 2. The new strategy currently only applies to nested method calls, but might be extended to other nested expressions in future versions
       *
       * @see #TRUE
       * @see #FALSE
       * @since 3.6
       */

  See bug 313524 for more details.

### Problem Reports Fixed

313524 [formatter] Add preference for improved lines wrapping in nested method calls
313109 @SuppressWarnings on multiple locals is marked unnecessary if any local is never used

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC1 - May 12, 2010 - 3.6.0 RC1
Project org.eclipse.jdt.core v_A53 (cvs).

## What's new in this drop

### Problem Reports Fixed

312326 IllegalArgumentException using open type dialog
310159 Hang in JavaModel.getExternalTarget(JavaModel.java:333)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC1 - May 11, 2010
Project org.eclipse.jdt.core v_A52 (cvs).

## What's new in this drop

### Problem Reports Fixed

157847 NPE in WildcardBinding.computeUniqueKey during code assist
311849 [quick fix] @SuppressWarnings does not work as expected inside a for loop

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC1 - May 8, 2010
Project org.eclipse.jdt.core v_A51 (cvs).

## What's new in this drop

### Problem Reports Fixed

306170 [perfs] Regression for FullSourceWorkspaceTypeHierarchyTests#testPerfAllTypes()
298844 [formatter] New lines in empty method body wrong behavior
311864 [formatter] NPE with empty {@code }

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC1 - May 6, 2010
Project org.eclipse.jdt.core v_A50 (cvs).

## What's new in this drop

- Added a new preference to switch on/off the usage of the disabling/enabling tags of the formatter.

  This new preference is controlled with the option:

  `DefaultCodeFormatterConstants.FORMATTER_USE_ON_OFF_TAGS`

      /**
       * FORMATTER / Option to use the disabling and enabling tags defined respectively by the {@link #FORMATTER_DISABLING_TAG} and the {@link #FORMATTER_ENABLING_TAG} options.
       *     - option id:         "org.eclipse.jdt.core.formatter.use_on_off_tags"
       *     - possible values:   TRUE / FALSE
       *     - default:           FALSE
       *
       * @since 3.6
       */

  See bug 311582 for more details.

### Problem Reports Fixed

311617 [formatter] provide default tags to enable/disable formatter
311582 [formatter] Master switch to enable/disable on/off tags
307040 Search Job with HierarchyScope on Object does not cancel
302295 After associating source folder with rt.jar project refresh takes exceedingly long time.
311048 AbortCompilation propagated from CompilationUnitProblemFinder.process()

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6RC1 - May 4, 2010
Project org.eclipse.jdt.core v_A49 (cvs).

## What's new in this drop

### Problem Reports Fixed

310811 [perfs] Big regression on FullSourceWorkspaceFormatterTests#testFormatDefaultBigFile()

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - April 25, 2010 - 3.6.0 M7
Project org.eclipse.jdt.core v_A48 (cvs).

## What's new in this drop

### Problem Reports Fixed

310330 Add multiple encoding support for the batch compiler

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - April 25, 2010
Project org.eclipse.jdt.core v_A47 (cvs).

## What's new in this drop

### Problem Reports Fixed

309835 [formatter] adds blank lines on each run
310213 AIOOBE in IndexSelector.initializeIndexLocations()
309966 IType#getKey() does not work for unresolved local ITypes

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - April 23, 2010
Project org.eclipse.jdt.core v_A46 (cvs).

## What's new in this drop

### Problem Reports Fixed

59891 [formatter] improve lines wrapping in nested method calls
306172 [perfs] Invalid test duration for FullSourceWorkspaceTypeHierarchyTests#testPerSuperTypes()
267091 [content assist] After 'implements' interface members are not proposed
261534 content assist after instanceof should also work after &&
308980 [content assist]An initializer inside a non-array field declaration confuses content assist
310002 ToolFactory.createScanner(..) should use workspace compliance
291528 Synchronize project warning/error settings to build.properties
309787 Extension point "org.eclipse.jdt.core.codeFormatter" is ignored
244820 Content assist after 'instanceof' should also work in assignment
309706 [formatter] doesn't work when code has three semicolons side by side

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - April 20, 2010
Project org.eclipse.jdt.core v_A45 (cvs).

## What's new in this drop

### Problem Reports Fixed

305037 missing story for attributes of referenced JARs in classpath containers
305116 [index] Improve performance of indexes results tables
236306 [content assist] for method invocation in variable initializer should not guess variable
302865 Issue with "import" a class and "import static" a method with the same name
309022 [ImportRewrite] Add Import wrongly removes import for nested type

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - April 13, 2010
Project org.eclipse.jdt.core v_A44 (cvs).

## What's new in this drop

### Problem Reports Fixed

308754 CompilationUnit.rewrite messes up .class-literal in annotation instead of changing class to interface
306519 JavaCore#getReferencedClasspathEntries(IClasspathEntry, IJavaProject) should allow null project
308428 Possible problem to get corrections with surrogate characters
307295 Task tags and task priorities
308476 Test ClasspathTests#testBug308150 fails on all platforms
305043 Internal error during classpath init
307486 DBCS3.6: Fail to propose Ext-B labels with content assist in Java Editor
308256 DiagnosticListener always supplies Diagnostic.getSource()==null
308356 codeSelect(..) doesn't work for local variable with surrogate in name
308245 Valid code fails to compile in 3.6
307885 Error message for instanceof <parameterized type> wrong arguments
249704 [code assist] autocomplete with anonymous classes does stop working
308150 JAR with invalid Class-Path entry in MANIFEST.MF crashes the project

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - April 6, 2010
Project org.eclipse.jdt.core v_A43 (cvs).

## What's new in this drop

### Problem Reports Fixed

306223 [search] Searching for annotation references report all type references
292087 anonymous class in array member initializer confuses content assist
307337 [content assist] Default constructor should not be proposed for anonymous types
306568 [ImportRewrite] Add Import does not work for nested type when package is on-demand imported

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - March 30, 2010
Project org.eclipse.jdt.core v_A42 (cvs).

## What's new in this drop

### Problem Reports Fixed

202634 [codeassist] missing super proposal in specific source
304394 IJavaElement#getAttachedJavadoc(IProgressMonitor) should support referenced entries
305122 FUP of 302949
306917 Exception occurred during compilation unit conversion:
306196 [search] NPE while searching for annotation references in rt.jar of JRE 6.0
288658 [compiler][1.5] Annotations visibility issues

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - March 23, 2010
Project org.eclipse.jdt.core v_A41 (cvs).

## What's new in this drop

### Problem Reports Fixed

305518 [formatter] Line inside <pre> tag is wrongly indented by one space when starting just after the star
295825 [formatter] Commentaries are running away after formatting are used
306477 Indexer(?) fails to recognise enum as a type
305830 [formatter] block comment should not be formatted when a non-nls tag is on the same line
300031 The deprecation warning for a type should not include the package name
306078 Navigate to Inaccessible Field
209479 infinite loop in BindingKey when signatures are invalid
293558 [quick assist] "Invert if statement" fails when comment follows
182459 [compiler] Inconsistent error range for unresolved field
192233 [AST] CompilationUnit.rewrite() removes whitespace between return type and method name
306073 ASTRewrite Javadoc wrongly talks about getTargetSourceRangeComputer
305001 Exception occurred in listener of Java element change notification
305590 Redundant null check false-positive
305755 Remove deprecated API that has been added for 3.6

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M7 - March 16, 2010
Project org.eclipse.jdt.core v_A40 (cvs).

## What's new in this drop

### Problem Reports Fixed

305371 [formatter] Unexpected indentation of line comment
305281 [formatter] Turning off formatting changes comment's formatting

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - March 9, 2010 - 3.6.0 M6
Project org.eclipse.jdt.core v_A39 (cvs).

## What's new in this drop

### Problem Reports Fixed

289057 Java Content Assist taking too long
303830 "X cannot be resolved or is not a field" erroneously reported
235658 Valid identifier unrecognized.
304841 [search] NPE in IndexSelector.initializeIndexLocations
295866 FormalParameter in JDT DOM/AST documentation
304817 Review documentation of ASTParser class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - March 5, 2010
Project org.eclipse.jdt.core v_A38 (cvs).

## What's new in this drop

- Added two new preferences to allow to disable the formatter in a section of the code. These two preference define respectively the tag which disables the formatting and the tag which re-enable it.

  These new preferences are controlled with the options:

  `DefaultCodeFormatterConstants.FORMATTER_DISABLING_TAG` `DefaultCodeFormatterConstants.FORMATTER_ENABLING_TAG`

      /**
       * FORMATTER / Option to define the tag to put in a comment to disable the formatting.
       * See the {@link #FORMATTER_ENABLING_TAG} option to re-enable it.
       *     - option id:         "org.eclipse.jdt.core.formatter.disabling_tag"
       *     - possible values:   String, with constraints mentioned below
       *     - default:           ""
       *
       * Note that:
       *
       * 1. The tag name will be trimmed. Hence if it does contain white spaces
       *    at the beginning or at the end, they will not be taken into account while
       *    searching for the tag in the comments
       * 2. If a tag is starting with a letter or digit, then it cannot be leaded by
       *    another letter or digit to be recognized
       *    ("ToDisableFormatter" will not be recognized as a disabling tag
       *    "DisableFormatter", but "Re:DisableFormatter"
       *    will be detected for either tag "DisableFormatter" or
       *    ":DisableFormatter").
       *    Respectively, a tag ending with a letter or digit cannot be followed by a letter
       *    or digit to be recognized ("DisableFormatter1" will not be
       *    recognized as a disabling tag "DisableFormatter", but
       *    "DisableFormatter:1" will be detected either for tag
       *    "DisableFormatter" or "DisableFormatter:")
       * 3. As soon as the formatter encounters the defined disabling tag, it stops to
       *    format the code from the beginning of the comment including this tag. If it
       *    was already disabled, the tag has no special effect.
       *    For example, the second defined enabling tag "disable-formatter"
       *    in the following snippet is not necessary as the formatter was already disabled
       *    since the first one:
       *     class X {
       *     // disable-formatter
       *     void foo1() {}
       *     // disable-formatter
       *     void foo2() {}
       *     void bar1() {}
       *     void bar2() {}
       *     }
       *
       * 4. If no enabling tag is found by the formatter after the disabling tag, then
       *    the end of the snippet won't be formatted.
       *    For example, when a disabling tag is put at the beginning of the code, then
       *    the entire content of a compilation unit is not formatted:
       *     // disable-formatter
       *     class X {
       *     void foo1() {}
       *     void foo2() {}
       *     void bar1() {}
       *     void bar2() {}
       *     }
       *
       * 5. If a mix of disabling and enabling tags is done in the same comment, then
       *    the formatter will only take into account the last encountered tag in the
       *    comment.
       *    For example, in the following snippet, the formatter will be disabled after
       *    the comment:
       *     class X {
       *     /*
       *      * This is a comment with a mix of disabling and enabling tags:
       *      *  - disable-formatter
       *      *  - enable-formatter
       *      *  - disable-formatter
       *      * The formatter will stop to format from the beginning of this comment...
       *      */
       *     void foo() {}
       *     void bar() {}
       *     }
       *
       * 6. The tag cannot include newline character (i.e. '\n') but it can have white spaces.
       *    E.g. "format: off" is a valid disabling tag
       *    In the future, newlines may be used to support multiple disabling tags.
       *
       * @since 3.6
       */

      /**
       * FORMATTER / Option to define the tag to put in a comment to re-enable the
       * formatting after it has been disabled (see {@link #FORMATTER_DISABLING_TAG})
       *     - option id:         "org.eclipse.jdt.core.formatter.enabling_tag"
       *     - possible values:   String, with constraints mentioned below
       *     - default:           ""
       *
       * Note that:
       *
       * 1. The tag name will be trimmed. Hence if it does contain white spaces
       *    at the beginning or at the end, they will not be taken into account while
       *    searching for the tag in the comments
       * 2. If a tag is starting with a letter or digit, then it cannot be leaded by
       *    another letter or digit to be recognized
       *    ("ReEnableFormatter" will not be recognized as an enabling tag
       *    "EnableFormatter", but "Re:EnableFormatter"
       *    will be detected for either tag "EnableFormatter" or
       *    ":EnableFormatter").
       *    Respectively, a tag ending with a letter or digit cannot be followed by a letter
       *    or digit to be recognized ("EnableFormatter1" will not be
       *    recognized as an enabling tag "EnableFormatter", but
       *    "EnableFormatter:1" will be detected either for tag
       *    "EnableFormatter" or "EnableFormatter:")
       * 3. As soon as the formatter encounters the defined enabling tag, it re-starts
       *    to format the code just after the comment including this tag. If it was already
       *    active, i.e. already re-enabled or never disabled, the tag has no special effect.
       *    For example, the defined enabling tag "enable-formatter"
       *    in the following snippet is not necessary as the formatter has never been
       *    disabled:
       *     class X {
       *     void foo1() {}
       *     void foo2() {}
       *     // enable-formatter
       *     void bar1() {}
       *     void bar2() {}
       *     }
       *
       *    Or, in the following other snippet, the second enabling tag is not necessary as
       *    the formatting will have been re-enabled by the first one:
       *     class X {
       *     // disable-formatter
       *     void foo1() {}
       *     void foo2() {}
       *     // enable-formatter
       *     void bar1() {}
       *     // enable-formatter
       *     void bar2() {}
       *     }
       *
       * 4. If a mix of disabling and enabling tags is done in the same comment, then
       *    the formatter will only take into account the last encountered tag in the
       *    comment.
       *    For example, in the following snippet, the formatter will be re-enabled after
       *    the comment:
       *     // disable-formatter
       *     class X {
       *     /*
       *      * This is a comment with a mix of disabling and enabling tags:
       *      *  - enable-formatter
       *      *  - disable-formatter
       *      *  - enable-formatter
       *      * The formatter will restart to format after this comment...
       *      */
       *     void foo() {}
       *     void bar() {}
       *     }
       *
       * 5. The tag cannot include newline character (i.e. '\n') but it can have white spaces.
       *    E.g. "format: on" is a valid enabling tag
       *    In the future, newlines may be used to support multiple enabling tags.
       *
       * @since 3.6
       */

  For example, the following snippet:

      public class Test {
      /* disable-formatter */
      void     foo(    )      {
      				//      unformatted       area
      }
      /* enable-formatter */
      void     bar(    )      {
      				//      formatted       area
      }
      }

  formatted with disabling tags = "disable-formatter" and enabling tags = "enable-formatter" produces the following output:

      public class Test {

      /* disable-formatter *
      void     foo(    )      {
      				//      unformatted       area
      }
      /* enable-formatter *
      	void bar() {
      		// formatted area
      	}
      }

  See bug 27079 for more details.

### Problem Reports Fixed

129804 [dom] Local variable bindings from ASTParser#createASTs(.., String[], .., ..) have no declaring method
304705 [formatter] Unexpected indentation of wrapped line comments when 'Never indent line comment on first column' preference is checked
304656 StringIndexOutOfBoundsException when using JDT dom methods to process sourcefile
304506 Task descriptions always have a space after the tag
304081 IJavaProject#isOnClasspath(IJavaElement) returns false for type from referenced JAR
304122 TypeBindings.getAnnotations() breaks interface
304416 VerifyError after compiling without preserve all locals
304529 [formatter] NPE when either the disabling or the enabling tag is not defined
27079 Tags for disabling/enabling code formatter (feature)
304316 NPE when javadoc URL is invalid

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - March 2, 2010
Project org.eclipse.jdt.core v_A37 (cvs).

## What's new in this drop

- Added new configurable option to fix bug 295551:

      /**
       * Compiler option ID: Further Determining the Effect of @SuppressWarnings if also
       * COMPILER_PB_SUPPRESS_WARNINGS is enabled.
       * When enabled, the @SuppressWarnings annotation can additionally be used to suppress
       * optional compiler diagnostics that have been configured as ERROR.
       * When disabled, all @SuppressWarnings annotations only affects warnings.
       *
       * Option id: "org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors"
       * Possible values: { "enabled", "disabled" }
       * Default: "disabled"
       *
       * @since 3.6
       * @category CompilerOptionID
       */
      public static final String COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS = PLUGIN_ID + ".compiler.problem.suppressOptionalErrors";

- Added a new formatter preferences to align method declaration.

  This new preference is controlled with the option:

  `DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_METHOD_DECLARATION`

      /**
       * FORMATTER / Option for alignment of method declaration
       *     - option id:         "org.eclipse.jdt.core.formatter.alignment_for_method_declaration"
       *     - possible values:   values returned by createAlignmentValue(boolean, int, int) call
       *     - default:           createAlignmentValue(false, WRAP_NO_SPLIT, INDENT_DEFAULT)
       *
       * @see #createAlignmentValue(boolean, int, int)
       * @since 3.6
       */

  For example, the following snippet:

      public class Test {
      public final synchronized java.lang.String a_method_which_has_a_very_long_name() {
      return null;
      }
      }

  formatted with this preference activated as 'Wrap only when necessary', will produce the following output:

      public class Test {
      	public final synchronized java.lang.String
      			a_method_which_has_a_very_long_name() {
      		return null;
      	}
      }

  See bug 284789 for more details.
- New API to fix bug 246594. See the bug for details.

      org.eclipse.jdt.core.ITypeParameter
      	/**
      	 * Returns the signatures for this type parameter's bounds. The type parameter may have
      	 * been declared as part of a type or a method. The signatures represent only the individual
      	 * bounds and do not include the type variable name or the extends keyword.
      	 * The signatures may be either unresolved (for source types) or resolved (for binary types).
      	 * See {@link Signature} for details.
      	 *
      	 * @return the signatures for the bounds of this formal type parameter
      	 * @throws JavaModelException
      	 *             if this element does not exist or if an exception occurs while accessing its corresponding resource.
      	 * @see Signature
      	 * @since 3.6
      	 */
      	String[] getBoundsSignatures() throws JavaModelException;

- Added a new formatter preference to enable or disable the formatting of line comments that start on the first column.
  Note that the indentation of line comments will also be disabled when activating this option, as otherwise the formatter could not produce stable outputs...

  The default is to format these comments to have a backward compatible behavior.

  This new preferences is controlled with the options:

  `DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_LINE_COMMENT_STARTING_ON_FIRST_COLUMN`

      /**
       * FORMATTER / Option to format line comments that start on the first column
       *     - option id:         "org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column"
       *     - possible values:   { TRUE, FALSE }
       *     - default:           TRUE
       *
       * Note that this option is ignored if either the
       * {@link #FORMATTER_COMMENT_FORMAT_LINE_COMMENT} option has been set to
       * {@link #FALSE} or the formatter is created with the mode
       * {@link ToolFactory#M_FORMAT_NEW}.
       *
       * @see #TRUE
       * @see #FALSE
       * @see ToolFactory#createCodeFormatter(Map, int)
       * @since 3.6
       */

  For example, the following snippet:

      public class X01 {
      //    int	a  =   1;
      //    int	b  =   2;
      }

  will be untouched by the formatter if both options are activated. See bug 251133 for more details.
- New API to fix bug 252431. See the bug for details.

      org.eclipse.jdt.core.IClasspathEntry
      	/**
      	 * Returns the classpath entry that is making a reference to this classpath entry. For entry kinds
      	 * {@link #CPE_LIBRARY}, the return value is the entry that is representing the JAR that includes
      	 * this in the MANIFEST.MF file's Class-Path section. For entry kinds other than
      	 * {@link #CPE_LIBRARY}, this returns null. For those entries that are on the raw classpath already,
      	 * this returns null.
      	 *
      	 * It is possible that multiple library entries refer to the same entry
      	 * via the MANIFEST.MF file. In those cases, this method returns the first classpath entry
      	 * that appears in the raw classpath. However, this does not mean that the other referencing
      	 * entries do not relate to their referenced entries.
      	 * See {@link JavaCore#getReferencedClasspathEntries(IClasspathEntry, IJavaProject)} for
      	 * more details.
      	 *
      	 * @return the classpath entry that is referencing this entry or null if
      	 * 		not applicable.
      	 * @since 3.6
      	 */
      	IClasspathEntry getReferencingEntry();

      org.eclipse.jdt.core.IJavaProject
      	/**
      	 * Works similar to {@link #setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor)} and
      	 * additionally allows persisting the given array of referenced entries for this project.
      	 * The referenced entries and their attributes are stored in the .classpath file of this
      	 * project. For details on referenced entries, see
      	 * {@link JavaCore#getReferencedClasspathEntries(IClasspathEntry, IJavaProject)}
      	 * and {@link IClasspathEntry#getReferencingEntry()}.
      	 *
      	 * Since the referenced entries are stored in the .classpath file, clients can store additional
      	 * information that belong to these entries and retrieve them across sessions, though the referenced
      	 * entries themselves may not be present in the raw classpath. By passing a null
      	 * referencedEntries, clients can choose not to modify the already persisted referenced entries,
      	 * which is fully equivalent to {@link #setRawClasspath(IClasspathEntry[], IPath, IProgressMonitor)}.
      	 * If an empty array is passed as referencedEntries, the already persisted referenced entries,
      	 * if any, will be cleared.
      	 *
      	 * If there are duplicates of a referenced entry or if any of the referencedEntries
      	 * is already present in the raw classpath(entries) those referenced entries will
      	 * be excluded and not be persisted.
      	 *
      	 * @param entries a list of classpath entries
      	 * @param referencedEntries the list of referenced classpath entries to be persisted
      	 * @param outputLocation the default output location
      	 * @param monitor the given progress monitor
      	 * @exception JavaModelException if the classpath could not be set. Reasons include:
      	 *  	This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
      	 *  	The classpath is being modified during resource change event notification (CORE_EXCEPTION)
      	 *  	The classpath failed the validation check as defined by {@link JavaConventions#validateClasspath(IJavaProject, IClasspathEntry[], IPath)}
      	 * @see IClasspathEntry
      	 * @see #getReferencedClasspathEntries()
      	 * @since 3.6
      	 */
      	void setRawClasspath(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, IPath outputLocation,
      			IProgressMonitor monitor) throws JavaModelException;

      	/**
      	 * Returns the list of referenced classpath entries stored in the .classpath file of this
      	 * java project. Clients can store the referenced classpath entries using
      	 * {@link #setRawClasspath(IClasspathEntry[], IClasspathEntry[], IPath, IProgressMonitor)}
      	 * If the client has not stored any referenced entries for this project, an empty array is returned.
      	 *
      	 * @throws JavaModelException
      	 * @return an array of referenced classpath entries stored for this java project or an empty array if none
      	 * 			stored earlier.
      	 * @since 3.6
      	 */
      	IClasspathEntry[] getReferencedClasspathEntries() throws JavaModelException;

      org.eclipse.jdt.core.IPackageFragmentRoot
      	/**
      	 * Returns the first resolved classpath entry that corresponds to this package fragment root.
      	 * A resolved classpath entry is said to correspond to a root if the path of the resolved
      	 * entry is equal to the root's path.
      	 *
      	 * @return the first resolved classpath entry that corresponds to this package fragment root
      	 * @throws JavaModelException if this element does not exist or if an
      	 *		exception occurs while accessing its corresponding resource.
      	 * @since 3.6
      	 */
      	IClasspathEntry getResolvedClasspathEntry() throws JavaModelException;

      org.eclipse.jdt.core.JavaCore
      	/**
      	 * Returns an array of classpath entries that are referenced directly or indirectly
      	 * by a given classpath entry. For the entry kind {@link IClasspathEntry#CPE_LIBRARY},
      	 * the method returns the libraries that are included in the Class-Path section of
      	 * the MANIFEST.MF file. If a referenced JAR file has further references to other library
      	 * entries, they are processed recursively and added to the list. For entry kinds other
      	 * than {@link IClasspathEntry#CPE_LIBRARY}, this method returns an empty array.
      	 *
      	 * If a referenced entry has already been stored
      	 * in the given project's .classpath, the stored attributes are populated in the corresponding
      	 * referenced entry. For more details on storing referenced entries see
      	 * see {@link IJavaProject#setRawClasspath(IClasspathEntry[], IClasspathEntry[], IPath,
      	 * IProgressMonitor)}.
      	 *
      	 * @param libraryEntry the library entry whose referenced entries are sought
      	 * @param project project where the persisted referenced entries to be retrieved from
      	 * @return an array of classpath entries that are referenced directly or indirectly by the given entry.
      	 * 			If not applicable, returns an empty array.
      	 * @since 3.6
      	 */
      	public static IClasspathEntry[] getReferencedClasspathEntries(IClasspathEntry libraryEntry, IJavaProject project);

### Problem Reports Fixed

252431 New API is needed to better identify referenced jars in the Class-Path: entry
251133 [formatter] Automatic formatting single line comments is incoherent among tools
248897 [1.5][compiler] Wrong warning 'The local variable 'var' is never read'.
304031 Unused @SuppressWarnings(..) not flagged when suppressed problem is set to Error
295551 Add option to automatically promote all warnings to errors
303810 Compact boolean fields on FlowContext
251227 [compiler] Fup of bug 115814, comparing doubles should not be flagged
268798 [1.5][compiler] Eclipse 3.5M5/6 produces new compiler errors with generics
303448 Wrong code generation optimization when assert condition is false
303776 Member types imports are removed too aggressively
302949 JavaModelManager hangs accessing the nonChainingJars set
246594 [model] API request: ITypeParameter#getBoundsSignatures() or #getSignature()
253896 [compiler][null] wrong "Null comparison always yields false" problem for auto-unboxing
284789 [formatter] Does not line-break method declaration exception with parameters
303480 [1.5][compiler] CCE: org.eclipse.jdt.internal.compiler.parser.RecoveredBlock cannot be cast to org.eclipse.jdt.internal.compiler.parser.RecoveredType

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - February 23, 2010
Project org.eclipse.jdt.core v_A36 (cvs).

## What's new in this drop

- Added a new formatter preferences to align annotation arguments (i.e. element-value pairs).

  This new preference is controlled with the option:

  `DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_ARGUMENTS_IN_ANNOTATION`

      /**
       * FORMATTER / Option for alignment of arguments in annotation
       *     - option id:         "org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation"
       *     - possible values:   values returned by createAlignmentValue(boolean, int, int) call
       *     - default:           createAlignmentValue(false, WRAP_NO_SPLIT, INDENT_DEFAULT)
       *
       * @see #createAlignmentValue(boolean, int, int)
       * @since 3.6
       */

  For example, the following snippet:

      @MyAnnot(value1 = "this is an example", value2 = "of an annotation", value3 = "with several arguments", value4 = "which may need to be wrapped")
      public class Test {
      }

  formatted with this preference activated, will produce the following output while using the `Eclipse [built-in]` profile:

      @MyAnnot(value1 = "this is an example", value2 = "of an annotation",
      		value3 = "with several arguments",
      		value4 = "which may need to be wrapped")
      public class Test {
      }

  See bug 282030 for more details.
- In order to get bindings outside the Eclipse environment, the following methods has been added on the ASTParser class.
  See bug 206391 for details.

      org.eclipse.jdt.core.dom.ASTParser
      	/**
      	 * Set the environment that can be used when no IJavaProject are available.
      	 *
      	 * The user has to be sure to include all required types on the classpaths for binary types
      	 * or on the sourcepaths for source types to resolve the given source code.
      	 * All classpath and sourcepath entries are absolute paths.
      	 * If sourcepaths contain units using a specific encoding (not the platform encoding), then the
      	 * given encodings must be set. If the given encodings is set, its length must
      	 * match the length of the sourcepaths parameter or an IllegalArgumentException will be thrown.
      	 * If encodings is not null, the given sourcepathEntries must not be null.
      	 *
      	 * @param classpathEntries the given classpath entries to be used to resolve bindings
      	 * @param sourcepathEntries the given sourcepath entries to be used to resolve bindings
      	 * @param encodings the encodings of the corresponding sourcepath entries or null if the platform encoding
      	 * can be used.
      	 * @param includeRunningVMBootclasspath true if the bootclasspath of the running VM must be prepended to the
      	 * given classpath and false if the bootclasspath of the running VM should be ignored.
      	 * @throws IllegalArgumentException if the size of the given encodings is not equals to the size of the given
      	 * sourcepathEntries
      	 * @since 3.6
      	 */
      	public void setEnvironment(String[] classpathEntries, String[] sourcepathEntries, String[] encodings, boolean includeRunningVMBootclasspath);

      	/**
      	 * Creates ASTs for a batch of compilation units. When bindings are being resolved, processing a
      	 * batch of compilation units is more efficient because much of the work involved in resolving
      	 * bindings can be shared.
      	 *
      	 * When bindings are being resolved, all compilation units are resolved
      	 * using the same environment, which must be set beforehand with
      	 * {@link #setEnvironment(String[], String[], String[], boolean) setEnvironment}.
      	 * The compilation units are processed one at a time in no specified order.
      	 * For each of the compilation units in turn,
      	 *  - {@link ASTParser#createAST(IProgressMonitor) ASTParser.createAST} is called to parse it
      	 *           and create a corresponding AST. The calls to {@link ASTParser#createAST(IProgressMonitor) ASTParser.createAST}
      	 *           all employ the same settings.

* - {@link FileASTRequestor#acceptAST(String, CompilationUnit) FileASTRequestor.acceptAST} is called passing * the compilation unit path and the corresponding AST to `requestor`. The compilation unit path is the same * path that is passed into the given `sourceFilePaths` parameter. * * Note only ASTs from the given compilation units are reported * to the requestor. If additional compilation units are required to * resolve the original ones, the corresponding ASTs are not * reported to the requestor. * * Note also the following parser parameters are used, regardless of what * may have been specified: * - The {@linkplain #setKind(int) parser kind} is `K_COMPILATION_UNIT` * - The {@linkplain #setSourceRange(int,int) source range} is `(0, -1)` * - The {@linkplain #setFocalPosition(int) focal position} is not set * * The `bindingKeys` parameter specifies bindings keys * ({@link IBinding#getKey()}) that are to be looked up. These keys may * be for elements either inside or outside the set of compilation * units being processed. When bindings are being resolved, * the keys and corresponding bindings (or `null` if none) are * passed to {@link FileASTRequestor#acceptBinding(String, IBinding) FileASTRequestor.acceptBinding}. Note that binding keys * for elements outside the set of compilation units being processed are looked up * after all {@link FileASTRequestor#acceptAST(String, CompilationUnit) ASTRequestor.acceptAST} * callbacks have been made. * Binding keys for elements inside the set of compilation units being processed * are looked up and reported right after the corresponding * {@link FileASTRequestor#acceptAST(String, CompilationUnit) FileASTRequestor.acceptAST} callback has been made. * No {@link FileASTRequestor#acceptBinding(String, IBinding) FileASTRequestor.acceptBinding} callbacks are made unless * bindings are being resolved. * * A successful call to this method returns all settings to their * default values so the object is ready to be reused. * * The given `encodings` are used to properly parse the given source units. If the platform encoding is sufficient, * then the given encodings can be set to `null`. * * @param sourceFilePaths the compilation units to create ASTs for * @param encodings the given encoding for the source units * @param bindingKeys the binding keys to create bindings for * @param requestor the AST requestor that collects abstract syntax trees and bindings * @param monitor the progress monitor used to report progress and request cancellation, * or `null` if none * @exception IllegalStateException if the settings provided * are insufficient, contradictory, or otherwise unsupported * @since 3.6 */ public void createASTs(String[] sourceFilePaths, String[] encodings, String[] bindingKeys, FileASTRequestor requestor, IProgressMonitor monitor)
- Added two new formatter preferences to condense block and javadoc comments.

  These new preferences are controlled respectively with the options:

  `DefaultCodeFormatterConstants.FORMATTER_COMMENT_NEW_LINES_AT_BLOCK_BOUNDARIES`
  `DefaultCodeFormatterConstants.FORMATTER_COMMENT_NEW_LINES_AT_JAVADOC_BOUNDARIES`

      /**
       * FORMATTER / Option to control whether block comments will have new lines at boundaries
       *     - option id:         "org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries"
       *     - possible values:   { TRUE, FALSE }
       *     - default:           TRUE
       *
       * @see #TRUE
       * @see #FALSE
       * @since 3.6
       */

      /**
       * FORMATTER / Option to control whether javadoc comments will have new lines at boundaries
       *     - option id:         "org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries"
       *     - possible values:   { TRUE, FALSE }
       *     - default:           TRUE
       *
       * @see #TRUE
       * @see #FALSE
       * @since 3.6
       */

  For example, the following snippet:

      public class X {
      	/*
      	 * This block comment after formatting will no longer use a new line
      	 * at the beginning and at the end of the comment...
      	 */
      	void foo() {
      	}
      	/**
      	 * This javadoc comment after formatting will no longer use a new line
      	 * at the beginning and at the end of the comment...
      	 */
      	void bar() {
      	}
      }

  formatted with both the options set to FALSE, will produce the following output:

      public class X {
      	/* This block comment after formatting will no longer use a new line at the
      	 * beginning and at the end of the comment... */
      	void foo() {
      	}

      	/** This javadoc comment after formatting will no longer use a new line at
      	 * the beginning and at the end of the comment... */
      	void bar() {
      	}
      }

  See bug 270209 for more details.
- The `CodeFormatter.F_INCLUDE_COMMENT` flag now works for all kind of snippet while using the formatter.
  See bug 236406 for more details.
- Added a new formatter preferences to insert a new line after a label.

  This new preference is controlled with the option:

  `DefaultCodeFormatterConstants.FORMATTER_INSERT_NEW_LINE_AFTER_LABEL`

      /**
       * FORMATTER / Option to insert a new line after a label
       *     - option id:         "org.eclipse.jdt.core.formatter.insert_new_line_after_label"
       *     - possible values:   { INSERT, DO_NOT_INSERT }
       *     - default:           DO_NOT_INSERT
       *
       * @see JavaCore#INSERT
       * @see JavaCore#DO_NOT_INSERT
       * @since 3.6
       */

  For example, the following snippet:

      public class X {
      	void foo() {
      		LABEL:for (int i = 0; i < 10; i++) {
      		}
      	}
      }

  formatted with this preference activated, will produce the following output:

      public class X {
      	void foo() {
      		LABEL:
      		for (int i = 0; i < 10; i++) {
      		}
      	}
      }

  See bug 150741 for more details.

### Problem Reports Fixed

298362 [1.5][compiler] Compiler returns java.lang.Object instead of generic type T when javac returns T
281655 [formatter] "Never join lines" does not work for annotations.
282030 [formatter] Java annotation formatting
270209 [format] Condensed block comment formatting
236406 [formatter] The comments flags should work for all kinds of snippet
294360 Duplicate entries in Classpath Resolution when importing dependencies from parent project
206391 [DOM] Binding Resolutions for projects outside of Eclipse workspace
150409 [compiler] AST does not expose method bindings for non-visible inherited field
302358 Compiler finds wrong method for method invocation with generics
302919 misreported cast Error when mixing generic and raw class in nested class
150741 [formatter] Add option: "add new line after label"
287939 [code assist] The instanceof and the auto cast feature should also work for an assignment
303108 [import rewrite] ImportRewrite#removeImport(String) does not work with setUseContextToFilterImplicitImports(true)
295619 Test failure caused by a timing issue in M20091118-0800

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - February 16, 2010
Project org.eclipse.jdt.core v_A35 (cvs).

## What's new in this drop

- In order to fix bugs 235253 and 194358, a new API was added to preserve the existing pre-3.6 behavior for existing clients:

      	/**
      	 * Sets whether a context should be used to properly filter implicit imports.
      	 *
      	 * By default, the option is disabled to preserve pre-3.6 behavior.
      	 *
      	 *
      	 * When this option is set, the context passed to the addImport*(...) methods is used to determine
      	 * whether an import can be filtered because the type is implicitly visible. Note that too many imports
      	 * may be kept if this option is set and addImport*(...) methods are called without a context.
      	 *
      	 *
      	 * @param useContextToFilterImplicitImports the given setting
      	 *
      	 * @see #setFilterImplicitImports(boolean)
      	 * @since 3.6
      	 */
      	public void setUseContextToFilterImplicitImports(boolean useContextToFilterImplicitImports);

### Problem Reports Fixed

302455 java.lang.ClassCastException in secondary types removal
102279 [search] method reference performance depends on method name
236814 [jsr199] EclipseCompiler#getTask does not respect its contract when its first argument is null
302552 [formatter] Formatting qualified invocations can be broken when the Line Wrapping policy forces element to be on a new line
302587 Encoding/decoding of problem arguments in Marker fails if argument contains #
301438 Eclipse hangs when attempting to refactor using the "change method signature"
260381 [formatter] Javadoc formatter breaks {@code ...} tags.
302446 [compiler] Regression in if statement flow analysis related to null checks
194358 [import rewrite] Organize Imports produces wrong order of imports
235253 [organize imports] Organize imports removes needed import statement.
302379 [search] JavaSearchTests.testZIPArchive2() test failed in I20100209-0800

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - February 9, 2010
Project org.eclipse.jdt.core v_A34 (cvs).

## What's new in this drop

### Problem Reports Fixed

302123 [formatter] AssertionFailedException occurs while formatting a source containing the specific javadoc comment /** ***/
300379 [formatter] Fup of bug 287833
250056 [compiler][null] Another assert and "Redundant null check"
301683 Annotations are broken when native methods are present in a class
300734 Extract temp misses duplicate occurrence.
289560 Eclipse hangs after modifying user libraries
301562 [JSR269] Error in EclipseFileManager.collectAllMatchingFiles
298637 Could not retrieve declared methods (NPE in ParameterizedTypeBinding.resolve)
294057 [1.5][compiler] Imports not resolved correctly with generics and inner interfaces

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M6 - February 2, 2010
Project org.eclipse.jdt.core v_A33 (cvs).

## What's new in this drop

### Problem Reports Fixed

300136 classpathentry OPTIONAL attribute not honored for var entries
300723 Fup of bug 235783

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M5 - January 21, 2010 - 3.6.0 M5
Project org.eclipse.jdt.core v_A32a (cvs).

## What's new in this drop

### Problem Reports Fixed

300133 [1.5][compiler] Local classes inside enum constants generate default constructor without implicit constructor call
300440 icu dependency needs to be udpated
299900 [null]Missing potential null warnings for variable on the right of an OR conditional expression
293917 Invalid 'potential null access' warning reports
252379 Organize imports deletes needed static import.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M5 - January 18, 2010
Project org.eclipse.jdt.core v_A31 (cvs).

## What's new in this drop

- New API to fix bug 295894. See the bug for details.

      /**
       * Returns a Java search scope limited to the hierarchy of the given type and to a given project.
       * The Java elements resulting from a search with this scope will be types in this hierarchy.
       *
       * Unlike the createHierarchyScope methods, this method creates strict
       * scopes that only contain types that actually span the hierarchy of the focus
       * type, but do not include additional enclosing or member types.
       *
       *
       * By default, hierarchy scopes include all direct and indirect supertypes and subtypes of the
       * focus type. This method, however, allows to restrict the hierarchy to true subtypes,
       * not including supertypes. Also inclusion of the focus type itself is controled by a parameter.
       *
       *
       * @param project the project to which to constrain the search, or null if
       *        search should consider all types in the workspace
       * @param type the focus of the hierarchy scope
       * @param onlySubtypes if true only subtypes of type are considered
       * @param includeFocusType if true the focus type type is included in the resulting scope,
       * 		  otherwise it is excluded
       * @param owner the owner of working copies that take precedence over original compilation units,
       *        or null if the primary working copy owner should be used
       * @return a new hierarchy scope
       * @exception JavaModelException if the hierarchy could not be computed on the given type
       * @since 3.6
       */
      public static IJavaSearchScope createStrictHierarchyScope(IJavaProject project, IType type, boolean onlySubtypes, boolean includeFocusType, WorkingCopyOwner owner) throws JavaModelException;

- New API added to report a compiler warning when object allocations are unused:

      org.eclipse.jdt.core.compiler.IProblem.UnusedObjectAllocation

      /**
       * Compiler option ID: Reporting Allocation of an Unused Object.
       * When enabled, the compiler will issue an error or a warning if an object is allocated but never used,
       * neither by holding a reference nor by invoking one of the object's methods.
       *
       * Option id:"org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation"
       * Possible values:{ "error", "warning", "ignore" }
       * Default:"ignore"
       *
       * @since 3.6
       * @category CompilerOptionID
       */
      public static final String COMPILER_PB_UNUSED_OBJECT_ALLOCATION = PLUGIN_ID + ".compiler.problem.unusedObjectAllocation";

### Problem Reports Fixed

245007 [compiler] Should not completely ignore anonymous type with missing super type
295894 [search] Search shows focus type implementation for nested types even though the scope is restricted to subtypes.
236385 [compiler] Warn for potential programming problem if an object is created but not used

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M5 - January 12, 2010
Project org.eclipse.jdt.core v_A30 (cvs).

## What's new in this drop

- New API added to expose the reconcile flags used in the reconcile context:

      /**
       * Returns the reconcile flag of this context. This flag is a bitwise value of the constant defined
       * in ICompilationUnit.
       *
       * @return the reconcile flag of this context
       * @since 3.6
       *
       * @see ICompilationUnit#ENABLE_BINDINGS_RECOVERY
       * @see ICompilationUnit#ENABLE_STATEMENTS_RECOVERY
       * @see ICompilationUnit#IGNORE_METHOD_BODIES
       */
      public int getReconcileFlags();

### Problem Reports Fixed

243917 [compiler] should not warn about unused field when native method present
296343 OOM error caused by java indexing referencing classloader from threadLocal
130000 [API] ReconcileContext API: Does getAST3 return AST with bindings?
298238 Unresolved import in superclass causes 'Cannot reduce the visibility of the inherited method' in subclass

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M5 - January 5, 2010
Project org.eclipse.jdt.core v_A29a (cvs).

## What's new in this drop

### Problem Reports Fixed

293861 Problem with refactoring when existing jar with invalid package names
264112 [Formatter] Wrap when necessary too aggressive on short qualifiers
298250 [1.6][compiler] NegativeArraySizeException in StackMapFrame.duplicate
296998 Unused imports should not prevent execution
298243 [formatter] Removing empty lines between import groups
297546 [formatter] Formatter removes blank after @see if reference is wrapped
235781 [compiler] difference to javac in definite unassignment analysis involving an exception within a constructor
235783 [eval] CodeSnippetParser and some 'CodeSnippet*' ast node does not seem up to date

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M5 - December 14, 2009
Project org.eclipse.jdt.core v_A28 (cvs).

## What's new in this drop

### Problem Reports Fixed

196714 [comment] InvalidInputException prevents the AbstractCommentMapper to retrieve tag element
297757 Cannot get bindings for IType corresponding to parameterized anonymous type
255640 [spec] Methods Signature.toCharArray(..) have unclear precondition
262898 BufferChangedEvent must not have @noinstantiate
181682 JavaConventions.validateJavaTypeName should list valid constants
108784 SourceMapper doesn't find name range of inner class constructors

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - December 8, 2009 - 3.6.0 M4
Project org.eclipse.jdt.core v_A27 (cvs).

## What's new in this drop

### Problem Reports Fixed

297225 [formatter] Indentation may be still wrong in certain circumstances after formatting
293697 JavaSearchBugTests.testBug286379c is failing randomly

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - December 7, 2009
Project org.eclipse.jdt.core v_A26 (cvs).

## What's new in this drop

### Problem Reports Fixed

297045 Weird tests failures in N20091204-2000 and N20091205-2000 builds
293300 [formatter] The formatter is still unstable in certain circumstances

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - December 4, 2009
Project org.eclipse.jdt.core v_A25 (cvs).

## What's new in this drop

- Match result can now report the access rules through a new API added on `TypeNameMatch`:

      /**
       * Returns the accessibility of the type name match
       *
       * @see IAccessRule
       *
       * @return the accessibility of the type name which may be
       * 		{@link IAccessRule#K_ACCESSIBLE}, {@link IAccessRule#K_DISCOURAGED}
       * 		or {@link IAccessRule#K_NON_ACCESSIBLE}.
       * 		The default returned value is {@link IAccessRule#K_ACCESSIBLE}.
       *
       * @since 3.6
       */
      public abstract int getAccessibility();

  See bug 296277 for more details.

### Problem Reports Fixed

296277 [search] SearchEngine#searchAllTypeNames(.., TypeNameMatchRequestor,..) should report access rules
296708 [DOM/AST] clarify setters when createASTs(..) is used
296629 [quick fix] Cast quick fix not offered for method-local classes
295948 ElementImpl.hashCode throws an NPE
296660 [compiler] Incorrect unused method warning from compiler

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - December 1, 2009
Project org.eclipse.jdt.core v_A24 (cvs).

## What's new in this drop

- New API added to ignore method bodies inside AST tree. The new APIs are tagged as 3.5.2 as this code will be backported to 3.5.2:

      org.eclipse.jdt.core.dom.ASTParser:
      	/**
      	 * Requests an abstract syntax tree without method bodies.
      	 *
      	 * When ignore method bodies is enabled, all method bodies are discarded.
      	 * This has no impact on the binding resolution.
      	 *
      	 * If a method contains local types, its method body will be retained.
      	 * This settings is not used if the kind used in setKind(int) is either
      	 * K_EXPRESSION or K_STATEMENTS.
      	 * @since 3.5.2
      	 */
      	public void setIgnoreMethodBodies(boolean enabled);

      org.eclipse.jdt.core.ICompilationUnit:
      	/**
      	 * Constant indicating that a reconcile operation could ignore to parse the method bodies.
      	 * @see ASTParser#setIgnoreMethodBodies(boolean)
      	 * @since 3.5.2
      	 */
      	public static final int IGNORE_METHOD_BODIES = 0x08;

### Problem Reports Fixed

288174 [search] NullPointerException when searching for type references
277643 Generics compile error
288211 APT uses a lot of memory

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - November 24, 2009
Project org.eclipse.jdt.core v_A23 (cvs).

## What's new in this drop

### Problem Reports Fixed

295698 [1.5][compiler] ClassCastException in unchecked warning report
295260 Wrong warnings on Java.Compiler.Errors/Warnings "Redundant null check"
190737 [compiler][null] missing 'cannot be null' warning within for loop

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - November 16, 2009
Project org.eclipse.jdt.core v_A22 (cvs).

## What's new in this drop

### Problem Reports Fixed

153429 JUnit4 in Eclipse Testing Framework
295238 [formatter] The comment formatter add an unexpected new line in block comment
295175 [formatter] Missing space before a string at the beginning of a line in a javadoc comment
294529 The Scanner sometimes ignores the given offset if larger than the EOF.
294662 ClassCastException while invoking quick assist
294404 -target jsr14 flags error on foreach over Collection that does not implement Iterable
293955 valid javadoc url set on user library, but still says no javadoc
293443 AbortCompilation when invoking content assist
293711 Clarify ICompilationUnit#getOwner() javadoc
293615 error message since v3.6.0M2: name clash by overriding generic methods
294618 [formatter] The formatter fails to format a compilation unit with deep nesting of html tags
248312 [model] IMemberValuePair#getValue() should also work for negative numerals
294731 Specify value type of JAVADOC_LOCATION_ATTRIBUTE_NAME

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - November 10, 2009
Project org.eclipse.jdt.core v_A21 (cvs).

## What's new in this drop

### Problem Reports Fixed

294631 [formatter] The formatter takes two passes to format a common sequence of html tags
294500 [formatter] MalformedTreeException when formatting an invalid sequence of <code> tags in a javadoc comment
294488 Javadoc of ISourceReference#getSourceRange() should link to SourceRange#isAvailable(..)
199265 [formatter] 3.3 Code Formatter mis-places commented-out import statements
241549 [spec] IType#getFields/Initializers/Methods() should define order from class file
275805 creating a non-primary working copy causes typeHierarchyChanged event
292510 FUP of 292364: Error messages don't identify partial types precisely.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M4 - November 3, 2009
Project org.eclipse.jdt.core v_A20 (cvs).

## What's new in this drop

### Problem Reports Fixed

293384 Eclipse erroneously reports method "is ambiguous for type"
285002 [compiler] visibility error for package private method

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 29, 2009 - 3.6M3
Project org.eclipse.jdt.core v_A19 (cvs).

## What's new in this drop

This version was created to tentatively fix bug 293697 but it occurs again in subsequent build. So, it has been reopened and moved to next version...

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 28, 2009
Project org.eclipse.jdt.core v_A18 (cvs).

## What's new in this drop

### Problem Reports Fixed

293496 Adding the serialVersionUID field doesn't work when tab size is 0

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 26, 2009
Project org.eclipse.jdt.core v_A17 (cvs).

## What's new in this drop

- Reverted change for bug 263564.

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 25, 2009
Project org.eclipse.jdt.core v_A16 (cvs).

## What's new in this drop

### Problem Reports Fixed

293240 [formatter] 'insert_space_before_opening_brace_in_array_initializer' preference may be reset in certain circumstances
263564 API to know when default compiler preference settings have been altered
289385 Investigate comment in performance tests
286379 [search] Problem while searching class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 20, 2009
Project org.eclipse.jdt.core v_A15 (cvs).

## What's new in this drop

### Problem Reports Fixed

292350 [1.5][compiler] Compiler error: ambiguous method since 3.5.1 using generics and interface inheritance
292364 [internal] Type name in CastExpression not treated as Type name.
292428 Internal compiler error: NullPointerException at org.eclipse.jdt.internal.compiler.ast.CastExpression.checkUnsafeCast(CastExpression.java:333)
291985 [compiler][jsr14] Translating Enum with jsr14 target: ECJ causes a runtime error while Sun compiler works fine
292240 Compiler error on implementation of raw sub interface

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 13, 2009
Project org.eclipse.jdt.core v_A14 (cvs).

## What's new in this drop

### Problem Reports Fixed

291391 update the Bundle-Version of the JDT Core Batch Compiler (ecj) from 3.3.0 to 3.6.*
284280 [1.5][compiler] Error on use generic interface in abstract super class
286228 [1.5][compiler] Generics inconsistencies possible regression
286601 [formatter] Code formatter formats anonymous inner classes wrongly when 'Never join lines' is on
215139 [search] More options for HierarchyScope
291472 [1.5][compiler] Access to a generic method is compiled incorrectly
283539 NamingConventions.suggestVariableNames doesn't work if name contains '_'
280784 [batch] Allow access restrictions to be reported as errors

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - October 6, 2009
Project org.eclipse.jdt.core v_A13 (cvs).

## What's new in this drop

- Reverted fix for 106478.

### Problem Reports Fixed

291322 Test errors when running JDT Core tests on Windows 7
282770 [compiler] Dead code detection should have specific @SuppressWarnings
290028 Use IResource#setDerived(boolean, IProgressMonitor) instead of IResource#setDerived(boolean)
287607 [1.5][compiler] cast of inner of generic enclosing type are not reported as unsafe
288749 Redundant superinterface not flagged inside one declaration
290905 [formatter] Certain formatter pref constellation cause endless loop ==> OOME
285124 serialVersionUID still causes error/warning
290877 [DOM] If using a tag named '@enum' the ASTParser ignores this
281575 Eclipse hangs in SourceMapper while doing java proposals
290470 [JSR199][compiler] JDT compiler not jsr199 compatible.
290730 Rewriting SwitchStatement throws NPE

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - September 29, 2009
Project org.eclipse.jdt.core v_A12 (cvs).

## What's new in this drop

### Problem Reports Fixed

287676 [1.5][compiler] Useless cast warning not emited
290563 add specification for fine grain search flags
290376 Errant "Comparing identical expressions" warning with assignment
287592 [1.5][compiler] Wrong ambiguous compilation error
290049 Reconciling a compilation unit does not return an AST with bindings when it should (probably)
290034 Effects of @SuppressWarnings("unchecked") are broader in Eclipse than in javac
267561 [evaluation] LocalEvaluationEngine does not accept primitive types
163194 [1.6] compiler should warn about missing @Override annotation for interface method

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M3 - September 22, 2009
Project org.eclipse.jdt.core v_A11 (cvs).

## What's new in this drop

### Problem Reports Fixed

289892 [compiler] NPE during binaryTypeBinding field initialization
287833 [formatter] Formatter removes the first character after the * in the <pre> tag
238943 SortElementsOperation doesn't use project specific settings
288621 [1.5][compiler] Creating type hierarchy failed when pressing F4
289538 [1.5][compiler] compiler fails to generate correct code for private constructor in inner class
289639 Problems opening perspective JavaPerspective, NPE on JavaModelManager.containersReset()
289516 Annotations (visible and invisible) should be preserved with target jsr14
289576 [1.5][compiler] Compiler changes 'private' modifier on methods with annotated parameter

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M2 - September 14, 2009 - 3.6M2
Project org.eclipse.jdt.core v_A10 (cvs).

## What's new in this drop

### Problem Reports Fixed

288148 [perfs] Comments applied for performance tests may be obsolete
289247 [1.5][compiler]Detecting duplicate methods should not consider return type
288920 [compiler] NPE renaming run() method
288698 Cannot create type hierarchy for abstract types when they have inline descendants and *.class* in project name

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M2 - September 1, 2009
Project org.eclipse.jdt.core v_A09 (cvs).

## What's new in this drop

### Problem Reports Fixed

287009 Inner Annotation Checks are Missing
287701 [dom] Length of Assignment should not include whitespace
285230 [performance] Duplicate buffers created for internal classes
286391 [compiler] jsr14 target behavior changed between ECJ 3.4.2 and ECJ 3.5

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M2 - August 25, 2009
Project org.eclipse.jdt.core v_A08 (cvs).

## What's new in this drop

### Problem Reports Fixed

287462 [formatter] new failures in last 2 nightly builds
285565 [inline] Inlining constant or local variables causes exceptions with tab width 0
285799 HashtableOfObject rehashes and grows buffer on removeKey()
286912 [formatter] Never join lines preferences makes the formatter unstable in certain circumstances
286668 [formatter] 'Never Join Lines' joins lines that are split on method invocation
248661 Axis2: Missing required libraries in Axis 2 WS Client Projects
286918 [javadoc] Compiler should warn when @see and @link tag references in package-info.java don't have fully qualified names
285466 [3.5 regression] fails to build IcedTea, works with 3.4.x
286956 NPE when asking to externalize constant
281609 [javadoc] "Javadoc: Invalid reference" warning for @link to Java package

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M2 - August 18, 2009
Project org.eclipse.jdt.core v_A07 (cvs).

## What's new in this drop

### Problem Reports Fixed

286840 ClasspathJar getPath() should return a unique path
254738 NPE in HierarchyResolver.setFocusType
276294 Error does not go away after it is resolved
284785 [1.5][compiler] Eclipse compiler shows error on javac-valid construct: varargs plus overload
286405 Default value character of annotations in ClassFileEditor are badly printed
286407 [Model] IMemberValuePair don't return the right value for java.lang.annotation.RetentionPolicy annotations
285701 [1.5][compiler] Internal Compiler Error - ArrayIndexOutOfBoundsException

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M1 - August 3, 2009 - 3.6M1
Project org.eclipse.jdt.core v_A06 (cvs).

## What's new in this drop

### Problem Reports Fixed

284948 [1.6][compiler] Java annotations are broken in editor when used on interface methods

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M1 - July 30, 2009
Project org.eclipse.jdt.core v_A05 (cvs).

## What's new in this drop

### Problem Reports Fixed

276526 [content assist] Error - Type Duplicate interface Iterable for the type TestClass
191176 JavaProject#getOption optimizations

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M1 - July 28, 2009
Project org.eclipse.jdt.core v_A04 (cvs).

## What's new in this drop

### Problem Reports Fixed

261909 ClassFileReader.getModifiers() answers funny bits
283225 [1.6][compiler] classfile versus source conformance check too strict
284679 [formatter] empty single semi statement prevent enum elements format
284482 [compiler] Collision cases not detected
284431 Different inherited thrown exception clauses are not properly handled
133911 type.move() returns unclear exception "invalid destination"
270436 [assist] Interface type proposed where only class is legal
210385 [compiler] ProblemReporter#getProblemCategory misbehaves when passed ProblemSeverities.Ignore as severity parameter
282891 [compiler] "Comparing identical expressions" warning sometimes invalid
282869 [compiler] Unnecessary cast warning for cast from char to int
270437 [assist] Completion proposal leads to cycle detected error
217443 Documentation for JavaCore#CORE_ENCODING does not match the observed behavior

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M1 - July 21, 2009
Project org.eclipse.jdt.core v_A03 (cvs).

## What's new in this drop

### Problem Reports Fixed

283467 [formatter] wrong indentation with 'Never join lines' selected
281776 Should not warn for comparison of identical expression with float type
282768 [compiler] Dead code detection should ignore trivial case for ternary if operator
283133 [formatter] IAE when pasting a snippet
283299 Complete SourceRange API

# Eclipse Platform Build Notes
Java Development Tooling Core

Eclipse SDK 3.6M1 - July 13, 2009
Project org.eclipse.jdt.core v_A02 (cvs).

## What's new in this drop

- Added new API type org.eclipse.jdt.core.SourceRange

### Problem Reports Fixed

271296 [assist] void typed proposal may not be appropriate in many contexts
281871 [content assist] The extension took too long to return from the 'computeCompletionProposals()' operation
281598 [assist] Problems during content assist - if project has empty zip file in classpath
235294 [formatter] javadoc for DefaultCodeFormatterConstants#FORMATTER_ALIGNMENT_FOR_ASSIGNMENT cites a non-API constant
280497 Incorrect null result for IJavaProject.getClasspathEntryFor(IPath)
204777 Clarify documentation for ITypeHierarchy created on interface types
88265 Make SourceRange API

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M1 - July 7, 2009
Project org.eclipse.jdt.core v_A01 (cvs).

## What's new in this drop

### Problem Reports Fixed

260968 Deadlock in UserLibraryManager

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.6M1 - June 30, 2009
Project org.eclipse.jdt.core v_A00 (cvs).

## What's new in this drop

- New API added to handle the new `invokedynamic` bytecode:

      org.eclipse.jdt.core.util.ByteCodeVisitorAdapter:
      	public void _invokedynamic(
      			int pc,
      			int index,
      			IConstantPoolEntry nameEntry,
      			IConstantPoolEntry descriptorEntry) {
      		// default behavior is to do nothing
      	}

      org.eclipse.jdt.core.util.IBytecodeVisitor#_invokedynamic(int, int, IConstantPoolEntry, IConstantPoolEntry)

      org.eclipse.jdt.core.util.IOpcodeMnemonics#INVOKEDYNAMIC

### Problem Reports Fixed

277450 [1.5][compiler] Problems with += and Autoboxing/Unboxing
206498 [1.7][compiler] Remove fix for bug 206483 once 1.7 VMS can handle .class files with version 51.0
191176 JavaProject#getOption optimizations
201762 Content Assist has no proposals with certain CU structure
281681 Stale code in CompilerOptions
231796 [formatter] @throws tag description is not indented using @param preference when there's a syntax error
255142 [select] Codeselect should not omit cast
235295 [formatter] javadoc of CodeFormatter#F_INCLUDE_COMMENTS needs improvement
280134 [1.5][compiler] Requesting Java AST from selection has encountered a problem
281317 [search] An internal error occurred during: "Java Search".
276373 Incorrect resource comparison with IJavaProject.isOnClasspath(IResource)
275518 [assist] Content assist does not provide proposals if invoked right after a method's opening brace
280888 change a java file in one plug-in will compile all related plugin projects
274466 [assist] Assert expressions should be proposed with high relevance
277382 NPE and other failures in Parser
275330 NPE from org.eclipse.jdt.internal.core.ClasspathChange.requestIndexing
273385 [model] NPE while closing project
280079 NPE while parsing K_CLASS_BODY_DECLARATIONS
280063 org.eclipse.jdt.internal.compiler.parser.Parser.parseClassBodyDeclarations(char[], int, int, CompilationUnitDeclaration) should return consistent results
267046 SourceMapper infinite loop on primitive type in generic
240934 Add support for the invokedynamic bytecode into the disassembler
267551 [formatter] Wrong spacing in default array parameter for annotation type
277965 [compiler] NPE in canBeSeenBy due to illegal protected toplevel class
273990 [compiler] FUP of 269388: Eclipse accepts code rejected by javac
279183 [1.6][compiler] Inconsistent stackmap frames generated by JDT cause VerifyError
209778 [search] TypeReferenceMatch#getOtherElements() fails for match in annotation
221065 [search] Search still finds overridden method
279836 [1.5][compiler] Eclipse compiler shows error on javac-valid construct: raw types on overridden methods
280616 [formatter] Valid 1.5 code is not formatted inside <pre> tag
280255 [formatter] Format edited lines adds two new lines on each save
280061 [formatter] AIOOBE while formatting javadoc comment
276938 Remove unreachable removes reachable logic in case statement.
274898 [recovery] IllegalArgumentException in ASTNode#setSourceRange()
277204 IAE in SharedASTProvider for generic local class.
276741 comparing identical value detection does not work for this
276740 comparing identical value detection does not work for primitive types
278745 Methods overloaded with unavailable types worked in 3.4 but give "indirectly referenced.." error in 3.5
278305 [1.5][compiler] JDT accepts supertype parameterized with wildcard
196308 [formatter] Don't escape entity when formatting in <pre> tags within javadoc comments
279359 [formatter] Formatter with 'never join lines' produces extra level of indent
273619 [formatter] Formatting repeats *} in javadoc

For earlier build notes, also see build notes up to Release 3.5.