JDT/Core Release Notes
Author: IBM

jdt core - build notes 3.0 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. This present document covers all changes since Release 2.1 (also see a summary of API changes). Older changes which occurred up to Release 2.1 can be found in build notes R2.1.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC4 Build - 24th June 2004 - 3.0 RELEASE CANDIDATE 4
Project org.eclipse.jdt.core v_449 (cvs).

## What's new in this drop

- Fixed schema copyrights.

### Problem Reports Fixed

44068 [DOC] Need more project configuration tutorials

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC4 Build - 24th June 2004
Project org.eclipse.jdt.core v_448 (cvs).

## What's new in this drop

- Fixed mixed line delimiters.

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC4 Build - 23rd June 2004
Project org.eclipse.jdt.core v_447 (cvs).

## What's new in this drop

- Copyright update to 2004.

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC4 Build - 22nd June 2004
Project org.eclipse.jdt.core v_446 (cvs).

## What's new in this drop

### Problem Reports Fixed

67769 Internal StackOverflowError occurred during project build

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC3 Build - 18th June 2004 - 3.0 RELEASE CANDIDATE 3
Project org.eclipse.jdt.core v_445 (cvs).

## What's new in this drop

### Problem Reports Fixed

66898 refactor-rename: encoding is not preserved

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC3 Build - 18th June 2004
Project org.eclipse.jdt.core v_444 (cvs).

## What's new in this drop

### Problem Reports Fixed

67297 Renaming included package folder throws JME
67786 OutOfMemoryError searching for reference to Object

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC3 Build - 18th June 2004
Project org.eclipse.jdt.core v_443 (cvs).

## What's new in this drop

### Problem Reports Fixed

67717 NPE disassembling .class file

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC3 Build - 17th June 2004
Project org.eclipse.jdt.core v_442 (cvs).

## What's new in this drop

### Problem Reports Fixed

67600 String Index out of bounds when searching for all types
67599 NPE when cancelling search
66271 No need to resolve type names when selecting declaration

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC3 Build - 16th June 2004
Project org.eclipse.jdt.core v_441 (cvs).

## What's new in this drop

### Problem Reports Fixed

67324 Package Explorer doesn't update included package after moving contents of source folder
41434 [msic] Slow Down using classes with many methods
64646 [Navigator] Navigator popup causes Eclipse to hang.
65186 Can't attach source from project directory [build path]
65831 search for all types slow/memory intensive [search]
66675 Extra period in the doc in 200406110010

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC2 Build - 10th June 2004 - 3.0 RELEASE CANDIDATE 2
Project org.eclipse.jdt.core v_440 (cvs).

## What's new in this drop

### Problem Reports Fixed

66551 Error in org.eclipse.swt project on class PrinterData
66573 Shouldn't bind to local constructs

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC2 Build - 10th June 2004
Project org.eclipse.jdt.core v_439 (cvs).

## What's new in this drop

### Problem Reports Fixed

66216 Sort Members is broken.
66437 Canceling search leads to broken workspace
65266 JarPackageFragmentInfo has unnecessary field
66098 MatchLocatorParser does not need advanced syntax diagnosis

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC2 Build - 9th June 2004
Project org.eclipse.jdt.core v_438 (cvs).

## What's new in this drop

### Problem Reports Fixed

66026 Large amount of garbage created by DefaultCommentMapper
64646 [Navigator] Navigator popup causes Eclipse to hang.
65288 Javadoc: tag gets mangled when javadoc closing on same line without whitespace
65253 [Javadoc] @@tag is wrongly parsed as @tag
65180 Spurious "Javadoc: xxx cannot be resolved or is not a field" error with inner classes
65174 Spurious "Javadoc: Missing reference" error

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC2 Build - 8th June 2004
Project org.eclipse.jdt.core v_437 (cvs).

## What's new in this drop

### Problem Reports Fixed

66142 SearchParticipant#scheduleDocumentIndexing() fails silently if index doesn't exist
65795 source inclusion mechanism breaks type lookups
66099 Persisted container/variable values are leaked throughout a session
65250 Problem selection does not choose first n errors
65259 CodeSelect should only find one match for dup methods
65737 Strange completion by code assist
65871 Missing SUPER_INTERFACE_TYPES_PROPERTY in EnumDeclaration
53072 [DOC] Search for fully qualified constructor name reports nothing
65116 IProjectDescription.getBuildSpec copies commands
65234 Inclusion filter not working
64657 better documentation for IType#resolveType behavior
65693 Package Explorer shows .class files instead of .java
64750 NPE in Java AST Creation - editing some random file
65562 Java AST creation failure
65531 out of the box formatter settings need to be improved
65677 Creating hierarchy failed. See log for details. 0
65090 ASTParser with kind == K_STATEMENTS doesn't work unless source range specified

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC1 Build - 28th May 2004 - 3.0 RELEASE CANDIDATE 1
Project org.eclipse.jdt.core v_436 (cvs).

## What's new in this drop

### Problem Reports Fixed

63534 ConcurrentModificationException after "catching up"
62131 CodeStream should do bounds checks
64470 <packages prefixes=..../> should be removed
64299 NullPointerException when OverrideIndicatorLabelDecorator is decorating
63550 NPE "Java AST Creation"
64421 ArrayIndexOutOfBoundsException in PackageReferenceLocator.matchReportReference()
62453 Large File: Java builder not reacting on cancel
64377 CRASH: An internal error occurred during: "Java AST creation"
64378 Wording of error message
64332 Javadoc errors in non-API doc comments
64329 Missing Javadoc tags declaration in API methods
64170 Classpath reentrance protection is not thread-safe

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC1 Build - 27th May 2004
Project org.eclipse.jdt.core v_435 (cvs).

## What's new in this drop

- API polish on search matches (org.eclipse.jdt.core.search.SearchMatch hierarchy):
  - added setters for all match properties (not just length & offset)
  - add insideDocComment argument to PackageReferenceMatch constructor (for being consistent with other reference matches)
  See bug 62697 for more details.

### Problem Reports Fixed

62854 refactoring does not trigger reconcile
62697 Need to know if a package reference match is in Javadoc or in Code
63756 multiple builds early
63077 IllegalArgumentException in Openable.codeSelect
62861 ArrayIndexOutOfBoundsException in SearchableEnvironment

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0RC1 Build - 26th May 2004
Project org.eclipse.jdt.core v_434 (cvs).

## What's new in this drop

### Problem Reports Fixed

56870 copied file not shown in package explorer / java browser [ccp]
63748 Type Hierarchy: null pointer when pressing F4 on ListCellRenderer
38839 org.eclipse.jdt.internal.compiler.parser.Scanner throws thousands of Exceptions
62869 [navigation] 'Go to Next Annotation' doesn't find next error
63871 Using M9, -warn: option crashes the batch compiler
63434 NPE during checkout/build
62737 Code formatter doesn't work on some files
62639 [1.5] Cheetah and extending Vector
62769 Javadoc errors in 200405180816
62952 Ant adapter behavior is a little strange
62704 Using 05180816, //toto is a task if //toto is a task tag.
51660 [DOM/AST] AST.parse* should handle all legal doc tags
51606 Javadoc - {@inheritDoc} should be inefficient when not in first text element
62713 should not be able to nest output folders [build path]
63245 findPackageFragment won't return default package
62698 NPE while searching for declaration of binary package
61017 Refactoring - test case that results in uncompilable source
63044 Reference to a constructor inside a javadoc should point to a type binding and not a constructor binding
62812 Some malformed javadoc tags are not reported as malformed
62810 Deadlock when closing editors and save

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 21st May 2004 - 3.0 MILESTONE-9 / 3.0 RELEASE CANDIDATE 0
Project org.eclipse.jdt.core v_433 (cvs).

## What's new in this drop

- Put back test org.eclipse.jdt.core.tests.model.JavaElementDeltaTests.testBuildProjectUsedAsLib() after bug 62927 was fixed.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 20th May 2004
Project org.eclipse.jdt.core v_432 (cvs).

## What's new in this drop

- Excluded test org.eclipse.jdt.core.tests.model.JavaElementDeltaTests.testBuildProjectUsedAsLib()

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 20th May 2004
Project org.eclipse.jdt.core v_431 (cvs).

## What's new in this drop

### Problem Reports Fixed

62881 JDT/Core could be contributing a content type for JAR manifests
58580 VariableBinding.getVariableId() returns wrong IDs for nested types

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 18th May 2004
Project org.eclipse.jdt.core v_430 (cvs).

## What's new in this drop

### Problem Reports Fixed

62608 Include pattern ending with slash should include all subtree
59933 applying exclusion filter to opened java file makes it appear twice [build path]

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 18th May 2004
Project org.eclipse.jdt.core v_429 (cvs).

## What's new in this drop

### Problem Reports Fixed

39499 keyword completion does not work in anonymous inner classes
59282 Unable to include an external folder with class files to project classpath
52422 F3 can't find method def'n inside inner (anonymous) class
62463 Wrong length for ExpressionStatement after conversion
61831 Full build happens on every start of Eclipse
62201 NPE in MethodScope
61872 library looses content when setting source attachment
54962 plain reference to package not found in (@see) javadoc
54424 AST has structural problems with incomplete javadoc tags
51951 codeComplete finds no completion in method of local class inside static method
50686 NPE in MethodScope.createMethod
61952 Bad deprecation -- IJavaSearchConstants#CASE_SENSITIVE
62068 Index manager should use client's index location

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 13th May 2004
Project org.eclipse.jdt.core v_428 (cvs).

## What's new in this drop

- Due to an implementation cleanup, the optional diagnosis for unnecessary empty statement or empty control-flow statement, will be reverted to ignore by default. If you did set it differently in the past, you will have to manually set it back. We now conform to the spec for this option (until JDT/UI converted, the old option ID was incorrectly used: "org.eclipse.jdt.core.compiler.problem.superfluousSemicolon"):

      * COMPILER / Reporting Empty Statements and Unnecessary Semicolons
      *    When enabled, the compiler will issue an error or a warning if an empty statement or a
      *    unnecessary semicolon is encountered.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.emptyStatement"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Improved error location when type indirectly referenced from required .class files.

### Problem Reports Fixed

61959 dangerous practice of catching Throwable
61882 Inconsistency between build errors and reconcile errors
35356 Convert local variable to field refactoring proposes weird name
53555 SourceType#get*QualifiedName() methods return unusable/invalid names for local types
48752 Completion: relevance could be improved for non static field
61877 ClassCastException in DefaultBindingResolver
59769 Javadoc of SearchMatch#getElement(): is *enclosing* element
58440 type hierarchy incomplete when implementing fully qualified interface
61719 Incorrect fine grain delta after method copy-rename
61075 [Compiler] implementation uses numerous ArrayIndexOutOfBoundsException
19898 StackOverflowError in BinaryExpression
61706 Improve error message when unbound reference from binaries

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 11th May 2004
Project org.eclipse.jdt.core v_427 (cvs).

## What's new in this drop

- A system job now reports progress when the indexer is running.
- The org.eclipse.jdt.core.jdom package has been deprecated. The JDOM was made obsolete by the addition in 2.0 of the more powerful, fine-grained DOM/AST API found in the org.eclipse.jdt.core.dom package.

### Problem Reports Fixed

60689 AST on reconcile: AST without Javadoc comments created
60365 hierarchy view shows some interfaces as classes [type hierarchy]
53290 [Javadoc] Compiler should complain when tag name is not correct
53279 [Javadoc] Compiler should complain when inline tag is not terminated
51600 Javadoc: tags with errors are not stored in DOM AST Javadoc hierarchy
59751 No Feedback/information from indexing
42402 OuterClass.this does not appear in code assist of the InnerClass
61390 Indexing thread grabbing resource lock
61408 Incorrect parsing
58859 [encoding] Editor does not detect BOM on .txt files
61148 deprecate JDOM API
61270 Wrong delta when copying a package that overrides another package
61181 Task tag starting with double-/ (//) causes compile error
61040 Should add protect for reentrance to #getResolvedClasspath
61214 The classpath computation inside the Java builder should get rid of duplicates entries
60867 LocalVariableReferenceMatch should offer isReadAccess(), etc.
59638 ConcurrentModificationException in JavaModelManager.saving
61052 Flatten cp container initialization
60848 [reconciling] Unclosed Comment in Java Texteditor
60822 Reacting to Project > Clean...

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 4th May 2004
Project org.eclipse.jdt.core v_426 (cvs).

## What's new in this drop

- Added new flag IJavaElementDelta.F_PRIMARY_RESOURCE that is set when the resource of a primary working copy changes (or when it is added or removed).
- Removed dependency on org.eclipse.runtime.compatibility.
- Tuned the diagnosis for unnecessary else statements to tolerate else-if constructs.

### Problem Reports Fixed

60687 NPE in JavaCore.getEncoding
60581 "Java AST creation" error.
48502 Exception during "Java AST creation"
59750 DCR: Code Assist: Hook to add getter and setters
47227 Syntax error diagnosis shouldn't expose internal goal tokens
60595 AST: AST from reconcile does not have 'ORIGINAL' bit set
59500 Java Model Notification needs notification that a java class was physically saved
60459 AST: 'malformed' flag overwrites other flags
60367 dynamic project references not maintained
60257 SearchPattern API: R_CASE_SENSITIVE vs. boolean isCaseSensitive
58565 code formatter doesn't format blocks with a return statement correctly
58724 Java code formatter should add space between imports and class definition
60418 remove warnings from core runtime deprecations
57749 Search in working copies doesn't find all matches
60235 WorkingCopyOwner needs clarification on

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 28th April 2004
Project org.eclipse.jdt.core v_425 (cvs).

## What's new in this drop

- Added API to register/deregister a pre-processing resource change listener:

      /**
       * Adds the given listener for POST_CHANGE resource change events to the Java core.
       * The listener is guarantied to be notified of the POST_CHANGE resource change event before
       * the Java core starts processing the resource change event itself.
       *
       * Has no effect if an identical listener is already registered.
       *
       * @param listener the listener
       * @see #removePreResourceChangeListener(IResourceChangeListener)
       * @since 3.0
       */
      public static void addPreProcessingResourceChangedListener(IResourceChangeListener listener);

      /**
       * Removes the given pre-processing resource changed listener.
       *
       * Has no effect if an identical listener is not registered.
       *
       * @param listener the listener
       * @since 3.0
       */
      public static void removePreProcessingResourceChangedListener(IResourceChangeListener listener);

- When diagnostic for unnecessary semicolon is enabled, the compiler will also flag empty control-flow statement: e.g. if (bool);. Note that the naming of the option is going soon to be revised to better reflect this evolution. Empty control-flow statement problem ID is: `IProblem.EmptyControlFlowStatement`.
- Added compiler style option to report situation where a statement is unnecessarily nested in else clause, e.g.:

       if (bool)
         return;
       else
         System.out.println();   // no need to be inside else

  Associated problem ID is: `IProblem.UnnecessaryElse`.

      * COMPILER / Reporting Unnecessary Else
      *    When enabled, the compiler will issue an error or a warning when a statement is unnecessarily
      *    nested within an else clause (in situation where then clause is not completing normally).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryElse"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

### Problem Reports Fixed

42493 Error message when evaluating: Expressionopt?
32061 No code assist in instance variable inner class
49904 [DCR] Quick Assist : unneeded else
60081 [Compiler] java.lang.VerifyError: Illegal target of jump or branch
52805 [DCR] Compiler should warn when using if (test);
58652 ImageBuilderInternalException during auto build
60108 SearchMatch should implement toString()
60078 NPE in ASTConverter

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 27th April 2004
Project org.eclipse.jdt.core v_424 (cvs).

## What's new in this drop

### Problem Reports Fixed

54108 Weird piece of source code in SourceTypeConverter.java
51500 [DOM AST] Quick fix "Add unimplemented methods" fails on static variable initialized using anonymous constructor
59843 Eclipse 3.0M8 generates ambiguous keys from ITypeBindings for nested classes with the same name
59937 Should not process saved state delta during startup
58069 Compilation ERROR: Missing code implementation in the compiler
51911 @see method w/out ()
49025 Util.bind(String, String[]) can be optimized a little bit
59743 [Compiler] Incorrect diagnosis of ambiguous method when inheriting
57871 Override Indicator: blocks editor from opening when error occurs in java compiler
59421 Bad error message from Eclipse Java Compiler when file is missing
58946 Standalone compiler help text is incorrect on Unix
59084 [content type] ensure content types/file associations are contributed by the right plugins
59716 Using 200404201300, one more blank line is inserted in front of import declarations when no package is defined
59575 invalid formatting
51213 Unable to resolve conflict between type and package name in binaries

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 22nd April 2004
Project org.eclipse.jdt.core v_423 (cvs).

## What's new in this drop

### Problem Reports Fixed

59363 Should surface cancellation exceptions
51075 Compiler warning "is hiding a field" given for static inner class
38658 Search for existing type fails
59291 Deadlock between AllTypes cache and setClasspathContainer

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 20th April 2004
Project org.eclipse.jdt.core v_422 (cvs).

## What's new in this drop

- Added API for User Library Container support in JavaCore:

      /**
       * Name of the User Library Container id.
       */
      public static final String USER_LIBRARY_CONTAINER_ID= "org.eclipse.jdt.USER_LIBRARY"; //$NON-NLS-1$

      /**
       * Returns the names of all defined user libraries. The corresponding classpath container path
       * is the name appended to the USER_LIBRARY_CONTAINER_ID.
       * @return Return an array containing the names of all known user defined.
       */
      public static String[] getUserLibraryNames();

- Added API to get classpath container comparison ID in ClasspathContainerInitializer:

      /**
       * Returns an object which identifies a container for comparison purpose. This allows
       * to eliminate redundant containers when accumulating classpath entries (e.g.
       * runtime classpath computation). When requesting a container comparison ID, one
       * should ensure using its corresponding container initializer. Indeed, a random container
       * initializer cannot be held responsible for determining comparison IDs for arbitrary
       * containers.
       *
       * @param containerPath the path of the container which is being checked
       * @param project the project for which the container is to being checked
       * @return returns an Object identifying the container for comparison
       * @since 3.0
       */
      public Object getComparisonID(IPath containerPath, IJavaProject project);

  By default, containers are identical if they have same container path first segment but this may be refined by other container initializer implementations.
  For example, the User Library classpath container initializer added for User Library Container API implementation (UserLibraryClasspathContainerInitializer) refines the comparison ID to the entire container path.

### Problem Reports Fixed

52747 formatter - please special case empty array init
59000 Code formatter struggles with end-of-line comments
52679 Code formatter formats braces in case and default statements, but no settings exist
52940 Formatter: Separate control of new lines in control statements by statement type
47815 Refactoring doesn't work with some project names [refactoring]
37657 [plan item] Improve code formatter
50989 Non-externalized strings wrap lines incorrectly
57689 ArrayIndexOutOfBoundsException when creating a new class
55004 [DCR] IVariableBinding should have a method returning the constant value
58606 Inner class in child calling protected method in parent
55979 There are still deprecated formatter constants without new way
57117 Ant adapter preserves all deprecation when using compiler arg even if deprecation is set to off

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 13th April 2004
Project org.eclipse.jdt.core v_421 (cvs).

## What's new in this drop

### Problem Reports Fixed

57829 Should optimize assert true case
57294 Ignore serialVersionUID hiding another field
41395 StackOverflowError when pasting code
57414 Summary: GB18030: Can not open Java Search dialog.
57886 Concurrency issue while initializing containers and variables
57858 [Compiler] Marking a field deprecated still report deprecated usage #46973
57743 [Compiler] invalid byte code produced when catching Throwable
57235 DCR: AST Name.getQualifiedName()

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 6th April 2004
Project org.eclipse.jdt.core v_420 (cvs).

## What's new in this drop

- Added inclusion patterns support. See `JavaCore.newSourceEntry(IPath,IPath[],IPath[],IPath)` and `IClasspathEntry.getInclusionPatterns()` for details.
- Added API on WorkingCopyOwner to set the primary buffer provider (for internal use by the jdt-related plug-ins only).

      /**
       * Sets the buffer provider of the primary working copy owner. Note that even if the
       * buffer provider is a working copy owner, only its createBuffer(ICompilationUnit)
       * method is used by the primary working copy owner. It doesn't replace the internal primary
       * working owner.
       *
       * This method is for internal use by the jdt-related plug-ins.
       * Clients outside of the jdt should not reference this method.
       *
       * @param primaryBufferProvider the primary buffer provider
       */
      public static void setPrimaryBufferProvider(WorkingCopyOwner primaryBufferProvider);

### Problem Reports Fixed

54009 jardesc should be known to Team/File Content
51867 An anonymous type is missing in type hierarchy when editor is modified
54763 [Compiler] Unnecessary cast not detected
52347 NPE in LaunchingPlugin.shutdown
55992 AssertionFailed during preference import
29964 Add inclusion filter
55088 IAE when using ICU.reconcile(GET_AST_TRUE, ...)
56462 [formatter] java profile; array initializer before closing brace
56449 Need to know if a reference match is in Javadoc or in Code

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M9 Build - 30th March 2004
Project org.eclipse.jdt.core v_419 (cvs).

## What's new in this drop

- Replaced "name" property of ParameterizedType node (DOM/AST) with "type" property. The old methods and fields (added earlier in 3.0 cycle) are deprecated and will be removed shortly.
- Added typeParameters property to ClassInstanceCreation node (DOM/AST).
- Package org.eclipse.jdt.core.internal.dom.rewrite renamed to org.eclipse.jdt.internal.core.dom.rewrite.

### Problem Reports Fixed

56316 JavaProject exists should not populate

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 25th March 2004 - 3.0 MILESTONE-8
Project org.eclipse.jdt.core v_418 (cvs).

## What's new in this drop

### Problem Reports Fixed

55930 File encoding should be used on save
55478 Unused import not reported in IDE

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 24th March 2004
Project org.eclipse.jdt.core v_417 (cvs).

## What's new in this drop

- Removed failing tests re: encoding support.

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 23rd March 2004
Project org.eclipse.jdt.core v_416 (cvs).

## What's new in this drop

### Problem Reports Fixed

55504 @<tasktag> should not be reported

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 23rd March 2004
Project org.eclipse.jdt.core v_415 (cvs).

## What's new in this drop

- Added rewriting support to DOM AST. There are two set of API to perform rewriting.
  - An AST-modifying rewrite API
    To use the AST-modifying rewrite the client must create an AST from an existing compilation unit (ASTParser#createAST(...)). Then the client need to start the record process of the AST changes (CompilationUnit#recordModifications()) and modify the AST after. When modifications are done, the client can call a method to compute a text edit tree containing all the text changes (CompilationUnit#rewrite()).

        CompilationUnit
        	public void recordModifications()
        	public TextEdit rewrite(IDocument document, Map options) throws RewriteException

  - A describing rewrite API
    To use the describing AST rewrite, the client starts with creating an instance of NewASTRewrite. Then the client must not modify the AST directly but use NewASTRewrite instead. When modifications are done, the client can call a method to compute a text edit tree containing all the text changes (NewASTRewrite#rewrite()).

        NewASTRewrite
        	public final void markAsRemoved(ASTNode node, TextEditGroup editGroup)
        	public final void markAsReplaced(ASTNode node, ASTNode replacingNode, TextEditGroup editGroup)
        	public ListRewriter getListRewrite(ASTNode parent, ChildListPropertyDescriptor childProperty)
        	public TextEdit rewriteAST(IDocument document, Map options) throws RewriteException
        	...

        ListRewriter
        	remove(ASTNode, TextEditGroup)
        	public void replace(ASTNode, ASTNode, TextEditGroup)
        	public void insertAfter(ASTNode, ASTNode, TextEditGroup)
        	public void insertBefore(ASTNode, ASTNode, TextEditGroup)
        	public void insertFirst(ASTNode, TextEditGroup)
        	public void insertLast(ASTNode, TextEditGroup)
        	public void insertAt(ASTNode, int, TextEditGroup)
        	...

### Problem Reports Fixed

39068 Adopt new core API for encoding on a per file basis

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 22nd March 2004
Project org.eclipse.jdt.core v_414 (cvs).

## What's new in this drop

### Problem Reports Fixed

46668 Changes to class path containers should not change .project
55421 Cannot save a .java file in a non-java project anymore
55223 Bug in comment mapper: Same comment mapped to 2 statements
54044 Ant log does not use system newline character
55372 Should not assume that Preferences.defaultPropertyNames() returns default-default properties
55221 Bug in comment mapper: Grabs next node's Javadoc
55102 NPE when using ICU.reconcile(GET_AST_TRUE, ...)
49986 setRawClasspath(...) should fire a F_CLASSPATH_CHANGED delta

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 15th March 2004
Project org.eclipse.jdt.core v_413 (cvs).

## What's new in this drop

- Added compiler option JavaCore.COMPILER_TASK_CASE_SENSITIVE to control whether the task detection should be case sensitive or not. By default, it is.

       * COMPILER / Determine whether task tags are case-sensitive
       *    When enabled, task tags are considered in a case-sensitive way.
       *     - option id:         "org.eclipse.jdt.core.compiler.taskCaseSensitive"
       *     - possible values:   { "enabled", "disabled" }
       *     - default:           "enabled"

- Added 2 default task tags: "FIXME" and "XXX".

### Problem Reports Fixed

54776 DefaultCommentMapper: different behaviour
54431 ASTParser should honor set compiler options in all cases
54043 Problems with type hierarchy for binary types
53095 I20040225: Won't accept breakpoint on NoClassDefFoundError
54294 No default for JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE
48435 Java Search for OR-pattern finds too much in strange project setup
40921 Task tags should be case-insensitive
49266 FIXME task tag

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 8th March 2004
Project org.eclipse.jdt.core v_412 (cvs).

## What's new in this drop

- Added new global JavaCore.COMPILER_DOC_COMMENT_SUPPORT option for doc comment (Javadoc) support. By default, this option is enabled for backward compatibility.

       * COMPILER / Javadoc Comment Support
       *    When this support is disabled, the compiler will ignore all javadoc problems options settings
       *    and will not report any javadoc problem. It will also not find any reference in javadoc comment and
       *    DOM AST Javadoc node will be only a flat text instead of having structured tag elements.
       *     - option id:         "org.eclipse.jdt.core.compiler.doc.comment.support"
       *     - possible values:   { "enabled", "disabled" }
       *     - default:           "enabled"

  See bug 52264.
- Added new JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE option to allow user to inline subroutine code instead of generating JSR instructions. By default, this option is disabled.

       * COMPILER / Inline JSR Bytecode Instruction
       *    When enabled, the compiler will no longer generate JSR instructions, but rather inline corresponding
       *    subroutine code sequences (mostly corresponding to try finally blocks). The generated code will thus
       *    get bigger, but will load faster on virtual machines since the verification process is then much simpler.
       *    This mode is anticipating support for the Java Specification Request 202.
       *     - option id:         "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"
       *     - possible values:   { "enabled", "disabled" }
       *     - default:           "disabled"
       *

  Corresponding command line compiler option `-noJSR` has been renamed to:

          -inlineJSR : inline JSR bytecode

  which means that when specified, the compiler will no longer generate JSR bytecodes, but instead inlining the corresponding subroutine (e.g. finally block).

### Problem Reports Fixed

53757 Javadoc tag @transient ignored
53075 https://bugs.eclipse.org/bugs/show_bug.cgi?id=53075
53357 Java AST creation error
52264 Need a global preference to enable Javadoc support
51529 "Organize imports" is confused by references inside Javadoc
53477 AnonymousClassDeclaration has wrong range
53624 StackOverFlow in Code assist
50433 Rationalize signatures of AST.parse* methods

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 3rd March 2004
Project org.eclipse.jdt.core v_411 (cvs).

## What's new in this drop

- Added new constant `IJavaElementDelta.F_CLASSPATH_CHANGED` that indicates that the project's raw classpath has changed.

### Problem Reports Fixed

49986 setRawClasspath(...) should fire a F_CLASSPATH_CHANGED delta
53242 Consitent Out of Memory problems indexing (with multiple Java libraries)
52474 UI Blocked when opening Java Perspective during CVS check out

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 2nd March 2004
Project org.eclipse.jdt.core v_410 (cvs).

## What's new in this drop

- Added following APIs to `org.eclipse.jdt.core.dom.CompilationUnit`:
  - `getCommentList()`: Returns a list of the comments encountered while parsing the compilation unit.
  - `getExtendedStartPosition(ASTNode)`: Returns the extended start position of the given node.
  - `getExtendedLength(ASTNode)`: Returns the extended source length of the given node.
  Unlike `ASTNode#getStartPosition()` and `ASTNode#getLength()`, the extended source range may include comments and whitespace immediately before or after the normal source range for the node.
  See bug 53445 for more details on heuristic to find leading and trailing comments.
- Added API `FieldReferenceMatch.isReadAccess()` and `isWriteAccess()`.
- Added API `JavaCore.run(IWorkspaceRunnable action, ISchedulingRule rule, IProgressMonitor monitor)` to control the scheduling rule during a Java batch operation.
- Added API `SearchEngine.createJavaSearchScope(IJavaElement[], int)` that allows to filter the classpath entries added in the scope: SOURCES, APPLICATION_LIBRARIES, SYSTEM_LIBRARIES and REQUIRED_PROJECTS.
- New command line options for batch compiler:
  - `-maxProblems <n>` : max number of problems per compilation unit (100 by default)
  - `-noJSR` : do not use JSR bytecode

### Problem Reports Fixed

53445 [DCR] [DOM Comments] Provide extended ranges including leading/trailing comments for AST nodes
53276 [DOM Comments] Wrong text element length when containing '\' character
52908 [DOM Comments] Wrong text element positions when starting/ending with { or }
48337 [Search] FieldReferenceMatch should report read/write access
52691 Add batch compiler option for maxProblemsPerUnit
51045 Offer to call JavaCore.run with scheduling rule
52273 Add option on predefined search scope to include/exclude system contain libraries
49809 NPE from MethodVerifier

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M8 Build - 24th February 2004
Project org.eclipse.jdt.core v_409 (cvs).

## What's new in this drop

- Added new API to create a DOM AST while reconciling `ICompilationUnit.reconcile(boolean, boolean, WorkingCopyOwner, IProgressMonitor)`.
- Removed compiler support for deprecating jsr bytecode in 1.5 compliant mode (turned off until future release).
- The constant DefaultCodeFormatterConstants.FORMATTER_PRESERVE_USER_LINEBREAKS will be removed. It has been deprecated for now and has no effect in the UI anymore.
- The constant DefaultCodeFormatterConstants.FORMATTER_FILLING_SPACE will be removed. It has been deprecated for now and has no effect in the UI anymore.

### Problem Reports Fixed

52916 Strang error message when using jre1.5.0 libraries
50586 [Code Formatter] trim trailing blanks/whitespace
52851 Space before else should be removed in some cases
52283 do <single-statement> while(<condition>) is ill-formatted
52479 Code Format fails on not on-demand imports
52246 M7 Source formatter fails silently when assert present in source
52429 code formatter seems to ignore settings
51623 [formatter] Wrong formatting when "Preserve existing line breaks" switched on
52305 Code Formatter strips blank lines in methods and field definitions when I try to tell it not to
52746 Formatter - preserve line breaks conflicts with keep blank lines
52804 Deprecated formatter constant should indicate new way
52619 NPE running Java model tests
36889 [DCR] Keep AST created in reconcile for active editor
52384 OutOfMemoryError opening hierarchy on Object
52355 Not present exception trying to create a class in excluded package
49809 NPE from MethodVerifier
22104 [infrastructure] NPE from IndexSummary.read(...)
31013 [infrastructure] npe in index crash recovery
31014 [infrastructure] exception in indexer
51447 [infrastructure] NPE running JDT Core tests
52221 [Compiler] should reject Local type usage when defined in other switch case block
52216 [regression in M7] javadoc: @see <a href> shows a warning
51990 'parameter' vs 'argument' in compiler errors/settings
52012 Special 'serialPersistentFields' marked as 'never used locally'
51353 The type AbstractStringBuilder is not visible
49259 Task tags starting with TODO don't correctly display their priority in Tasks View
49879 java.lang.ClassCastException (SourceTypeBinding to a BinaryTypeBinding) in 30M6 within jdt.core.dom.TypeBinding.getKey(TypeBinding.java:411)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 12th February 2004 - 3.0 MILESTONE-7
Project org.eclipse.jdt.core v_408 (cvs).

## What's new in this drop

### Problem Reports Fixed

51603 [preferences] Code formatter line wrapping preference inconsistent preview behaviour
51476 Javadoc: String or URL @see references are not stored in DOM AST Javadoc structure
51478 Javadoc: @deprecated/@inheritDoc tags are not stored in DOM AST Javadoc structure
51508 Javadoc: Package references DOM AST nodes binding is null
51626 Javadoc - DOM/AST is not correct after a @see tag
51650 Incorrected deprecation check
51770 Javadoc AST Node: wrong binding on qualified name part

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 11th February 2004
Project org.eclipse.jdt.core v_407 (cvs).

## What's new in this drop

- Fixed most of the API Java doc comments.

### Problem Reports Fixed

51659 New Code Formatter: minor problem with "White spaces/Array Initializers" option

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 10th February 2004
Project org.eclipse.jdt.core v_406 (cvs).

## What's new in this drop

### Problem Reports Fixed

51035 [Formatter] endline comment in case of simple if-then statement

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 9th February 2004
Project org.eclipse.jdt.core v_405 (cvs).

## What's new in this drop

### Problem Reports Fixed

51363 Wrong comment positions inside the Scanner.
51201 Code formatter missing 'between empty brackets' option in Whitespace Array allocation configuration
50695 Javadoc: package reference in @see tags is wrongly warned
49994 Strange matches with start=0, end=1 in type reference search
51300 VerifyError when using a array reference assigned to null
51128 [Code Formatter] Indent statements within blocks and methods
51241 IllegalArgumentException while creating a DOM/AST
51249 Performance problems in PackageFragment.getPath
50276 Function call line wrapping fails on chained calls
51190 comment after else block goes to next line
51226 Javadoc inside DOM AST does not support starting characters in unicode
51104 Comments are not recorded when inside a method body
50858 Javadoc IProblem constant not defined
50898 Javadoc AST: Missing binding for reference to non-visible type

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 3rd February 2004
Project org.eclipse.jdt.core v_404 (cvs).

## What's new in this drop

### Problem Reports Fixed

50938 Javadoc AST: Still invalid range for embedded tag

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 3rd February 2004
Project org.eclipse.jdt.core v_403 (cvs).

## What's new in this drop

- Updated porting guide to introduce search participant story (see porting guide)

### Problem Reports Fixed

51089 Java AST creation failure
50571 search sender in hierarchy hangs

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 30th January 2004
Project org.eclipse.jdt.core v_402 (cvs).

## What's new in this drop

### Problem Reports Fixed

50883 Javadoc AST node: Range problem with embedded tags
50884 Compiler crashes without a trace in the log leaving workspace in unhappy state
50831 DCR Javadoc AST: Offer well known tag names as constants
50880 JavadocAST Nodes: Wrong ranges on link
50877 Javadoc AST Nodes: Wrong ranges
47396 JAVA AST Creation failure
50844 AbortCompilation thrown from Name#resolveBinding()
50746 Searching for variable references can cause an internal error
50838 Javadoc bindings: No bindings in constructor ref parameter
50840 Javadoc AST: wrong start position on MemberRef

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 29th January 2004
Project org.eclipse.jdt.core v_401 (cvs).

## What's new in this drop

### Problem Reports Fixed

46126 [DCR] IBinding should have a method to check @since javadoc tag
50785 Javadoc bindings: No bindings member refs
50784 Javadoc bindings: No binding in {@link } and link disturbs other bindings
50781 Javadoc bindings: No bindings for qualified names
50736 Out of bounds exception while formatting

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 28th January 2004
Project org.eclipse.jdt.core v_400 (cvs).

## What's new in this drop

### Problem Reports Fixed

50694 Javadoc: Cannot find DOM AST bindings for types in @see tags
50692 Javadoc: Cannot find DOM AST bindings for inline link tags references
50719 wrong formatting for java coding conventions

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 27th January 2004
Project org.eclipse.jdt.core v_399 (cvs).

## What's new in this drop

- Improve DOM/AST support for doc comments.
  Following changes have been made to the DOM/AST API:
  - added Javadoc.tags() to represent structure of the doc comments
  - deprecated Javadoc.get/setComment
  - added 5 new node types that occur only within doc comments: TagElement, TextElement, MemberRef, MethodRef, MethodRefParameter
  - tag elements like MemberRef, MethodRef, and Name can carry binding information (must be requested like elsewhere)
  - added ASTVisitor(boolean) for controlling whether Javadoc.tags() are visited by default
  - added ASTMatcher(boolean) for controlling whether Javadoc.tags() are compared vs. only Javadoc.getComment()
  - AST.parse*(...) now returns structured doc comments (for compatibility, Javadoc.getComment() is also set as before)
  See bugs 50683.
- Improve DOM/AST support for locating all comments.
  Following changes have been made to the DOM/AST API:
  - added CompilationUnit.getCommentTable() to record locations of all comments found in the source
  - added 2 new node types, LineComment and BlockComment, to represent end-of-line and traditional comments respectively
  - these new nodes are placeholders for comments
  - these new node types only occur in the comment table (since they can occur anywhere (lexically), there is no way to properly parent them in the regular AST nodes that reflects their position)
  - AST.parse*(...) now returns sets the comment table on the compilation unit to include all comments (including attached and free-floating doc comments)
  See bug 50697.
- Added option to control whether diagnosis for unused thrown exceptions should be enabled when overriding another method. By default, it is disabled.

      * COMPILER / Reporting Unused Declared Thrown Exception in Overridind Method
      *    When disabled, the compiler will not include overriding methods in its diagnosis for unused declared
      *    thrown exceptions.
      *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException".
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "disabled"

### Problem Reports Fixed

50644 Deprecation check doesn't check that the @deprecated is at the beginning of the line
27134 Add a ASTNode for non-Javadoc comments
50683 Improve DOM/AST support for doc comments
50697 Improve DOM/AST support for locating all comments
50667 Deadlock on Refactor -> Extract method
47430 the immutable bit is copied from the original resource to the ouput directory
50601 Blank lines before package declaration is one fewer than specified
48292 [DCR] Need AST.parsePartialClassFile(....)
50320 Java model operations should use IResourceRuleFactory
50207 Compile errors fixed by 'refresh' do not reset problem list or package explorer error states
49691 JavaProject looses property listeners on preferences
50265 Emulate old formatter with the new formatter
50225 Calling the default formatter with an empty string returns an invalid Edit
44876 "Unnecessary declaration of thrown exception" problems

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 20th January 2004
Project org.eclipse.jdt.core v_398 (cvs).

## What's new in this drop

- Major renaming of constants in the code formatter. See `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants`. See bug 49908. The old constants have been deprecated and will be removed before M7. So we encourage you to save your code formatter preferences if you modified the default settings. The UI will provide an automatic conversion to the new options.
- Added API for alignment options in the code formatter. See `org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants`. See bug 49968.
- Changed 3.0 APIs on `org.eclipse.jdt.core.dom.AST` to take an `IProgressMonitor`. This progress monitor is checked for the cancelation of the AST creation only.
- Added API on `org.eclipse.jdt.core.dom.AST` to parse an expression or statements or class body declarations without requiring the parsing of the whole compilation unit. This is still subject to change before 3.0.

      	/**
      	 * Parses the given source between the bounds specified by the given offset (inclusive)
      	 * and the given length and creates and returns a corresponding abstract syntax tree.
      	 *
      	 * The root node of the new AST depends on the given kind.
      	 * - org.eclipse.jdt.core.dom.AST.K_CLASS_BODY_DECLARATIONS: The root node is an instance of
      	 * org.eclipse.jdt.core.dom.TypeDeclaration. The type declaration itself doesn't contain any information.
      	 * It is simply used to return all class body declarations inside the bodyDeclaratins() collection.
      	 * - org.eclipse.jdt.core.dom.AST.K_STATEMENTS: The root node is an instance of
      	 * org.eclipse.jdt.core.dom.Block. The block itself doesn't contain any information.
      	 * It is simply used to return all the statements.
      	 * - org.eclipse.jdt.core.dom.AST.K_EXPRESSION: The root node is an instance of a subclass of
      	 * org.eclipse.jdt.core.dom.Expression.
      	 *
      	 * Each node in the subtree carries source range(s) information relating back
      	 * to positions in the given source (the given source itself
      	 * is not remembered with the AST).
      	 * The source range usually begins at the first character of the first token
      	 * corresponding to the node; leading whitespace and comments are not
      	 * included. The source range usually extends through the last character of
      	 * the last token corresponding to the node; trailing whitespace and
      	 * comments are not included. There are a handful of exceptions
      	 * (including compilation units and the various body declarations); the
      	 * specification for these node type spells out the details.
      	 * Source ranges nest properly: the source range for a child is always
      	 * within the source range of its parent, and the source ranges of sibling
      	 * nodes never overlap.
      	 *
      	 * This method does not compute binding information; all resolveBinding
      	 * methods applied to nodes of the resulting AST return null.
      	 *
      	 * null is returned:
      	 * 1. If a syntax error is detected while parsing,
      	 * 2. If the given source doesn't correspond to the given kind.
      	 *
      	 * @param kind the given kind to parse
      	 * @param source the string to be parsed
      	 * @param offset the given offset
      	 * @param length the given length
      	 * @param options the given options. If null, JavaCore.getOptions() is used.
      	 * @param monitor the progress monitor used to check if the AST creation needs to be canceled
      	 *
      	 * @return ASTNode
      	 * @see ASTNode#getStartPosition()
      	 * @see ASTNode#getLength()
      	 * @see AST#K_CLASS_BODY_DECLARATIONS
      	 * @see AST#K_EXPRESSION
      	 * @see AST#K_STATEMENTS
      	 * @see JavaCore#getOptions()
      	 * @since 3.0
      	 */
      	public static ASTNode parse(int kind, char[] source, int offset, int length, Map options, IProgressMonitor monitor);

- Added API on `org.eclipse.jdt.core.dom.AST` to parse a compilation unit and specify the set of options to use. This is still subject to change before 3.0. The previous API was directly using `JavaCore.getOptions()`. This could be problematic in case you want to parse assert statements.

      	/**
      	 * Parses the given string as a Java compilation unit and creates and
      	 * returns a corresponding abstract syntax tree.
      	 *
      	 * The given options are used to find out the compiler options to use while parsing.
      	 * This could implies the settings for the assertion support. See the JavaCore.getOptions()
      	 * methods for further details.
      	 *
      	 *
      	 * The returned compilation unit node is the root node of a new AST.
      	 * Each node in the subtree carries source range(s) information relating back
      	 * to positions in the given source string (the given source string itself
      	 * is not remembered with the AST).
      	 * The source range usually begins at the first character of the first token
      	 * corresponding to the node; leading whitespace and comments are not
      	 * included. The source range usually extends through the last character of
      	 * the last token corresponding to the node; trailing whitespace and
      	 * comments are not included. There are a handful of exceptions
      	 * (including compilation units and the various body declarations); the
      	 * specification for these node type spells out the details.
      	 * Source ranges nest properly: the source range for a child is always
      	 * within the source range of its parent, and the source ranges of sibling
      	 * nodes never overlap.
      	 * If a syntax error is detected while parsing, the relevant node(s) of the
      	 * tree will be flagged as MALFORMED.
      	 *
      	 *
      	 * This method does not compute binding information; all resolveBinding
      	 * methods applied to nodes of the resulting AST return null.
      	 *
      	 *
      	 * @param source the string to be parsed as a Java compilation unit
      	 * @param options options to use while parsing the file. If null, JavaCore.getOptions() is used.
      	 * @param monitor the progress monitor used to check if the AST creation needs to be canceled
      	 * @return CompilationUnit
      	 * @see ASTNode#getFlags()
      	 * @see ASTNode#MALFORMED
      	 * @see ASTNode#getStartPosition()
      	 * @see ASTNode#getLength()
      	 * @see JavaCore#getOptions()
      	 * @since 3.0
      	 */
      	public static CompilationUnit parseCompilationUnit(char[] source, Map options, IProgressMonitor monitor);

### Problem Reports Fixed

50258 AST.parseCompilationUnit(... IWorkingCopyOwner..) should allow null
49937 JavaDoc of ITypeBinding#isLocal() talks about local interfaces
49845 DCR: Allow to cancel the AST creation
48489 [DCR] AST support for a single expression (vs. CU)
49327 formatter can return null TextEdit when parsing valid java
49908 Renaming of DefaultCodeFormatterConstants.java
49968 [formatter] Alignment API
49953 [Code Formatter] Cannot customize the spaces around brackets in array allocation expression
50025 uppercase ZIP and JAR classpath entries ignored
45060 Missing external jar prevents build, but jar still in Java model

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M7 Build - 13th January 2004
Project org.eclipse.jdt.core v_397 (cvs).

## What's new in this drop

- Added API to get the scheduling rule for a Java element:

      	/**
      	 * Returns the scheduling rule associated with this Java element.
      	 * This is a handle-only method.
      	 *
      	 * @return the scheduling rule associated with this Java element
      	 * @since 3.0
      	 */
      	ISchedulingRule getSchedulingRule();

- Code formatter: If you did change the value of the setting controlling the insertion of a white space between empty arguments of a method declaration, then you have to change it again. Indeed, a spelling mistake has been fixed in the constant name. See bug 49530.
- Inline tags are now supported in Javadoc comments:
  - {@link} and {@linkplain} tags are now parsed using same rules as for @see tag. See bug 48385.
    Because references declared in these tags should be now found during search operation, the index format had to be changed. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
  - {@inheritDoc} tag is now parsed. When this tag is present in a method javadoc comment, all missing tags errors are ignored. See bug 45782.

### Problem Reports Fixed

49843 Not reporting error on constructor with no body
49491 Add option to toggle warning for Javadoc multiple same name @throws tags
49260 Malformed Javadoc Compiler option sensitive to line breaks
45782 [DCR] Compiler should take into account {@inheritDoc} tag
48385 [DCR] Need Javadoc warning for {@link }
49760 Splitting up FORMATTER_INSERT_SPACE_WITHIN_MESSAGE_SEND
49763 New formatter: Problem with empty statement in while
48701 NPE evaluating watch expression
49290 NullpointerException in TypeBinding.getInterfaces().
49660 Code formatter line wrapping indentation ignores whitespace settings
48293 [DCR] IJavaElement should implement ISchedulingRule
48459 NPE in Type hierarchy
49653 Unnecessary white space is added after last semicolon in for statement without increments
49351 New code formatter: left curly brace placement
49530 Spelling mistake in the FORMATTER_INSERT_SPACE_BETWEEN_EMPTY_ARGUMENTS string constant
49298 Code formatter does not correctly space closing bracket on method calls
48395 Hierarchy on region misses local classes
47743 Open type hiearchy problems [type hierarchy]
49571 White space options for method and constructor declarations
49577 Add an option to specify the number of blank lines between two type declarations
49551 formatter fails on empty statement between package and imports
39943 [navigation] outliner auto-changes selection (multi-fields)
49490 New Code Formatter; Java Coding Conventions; Blank Lines; Before first declaration
49561 Commit should only lock parent's folder
47699 Make org.eclipse.core.runtime.compatibility non optional
41444 [navigation] error dialog on opening class file
48350 IType#resolveType(String) fails on local types
49120 search doesn't find references to anonymous inner methods
49482 New Code Formatter; if/else without curly braces; guardian clause (2)
49481 New Code Formatter; if/else without curly braces; guardian clause (1)
49361 FORMATTER_INSERT_SPACE_BETWEEN_EMPTY_ARRAY_INITIALIZER
49243 New code formatter: missing feature
49429 error during build
48404 formatter: no edit returned

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 18th December 2003 - 3.0 MILESTONE-6
Project org.eclipse.jdt.core v_396 (cvs).

## What's new in this drop

### Problem Reports Fixed

49081 JDT is no more using the tab character by default for indentation

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 17th December 2003
Project org.eclipse.jdt.core v_395 (cvs).

## What's new in this drop

### Problem Reports Fixed

48706 NPE in move refactoring
48965 Javadoc problem preference settings: Use 'include' instead of 'ignore'

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 16th December 2003
Project org.eclipse.jdt.core v_394 (cvs).

## What's new in this drop

### Problem Reports Fixed

47209 Javadoc: Type references are not found in @see tag inside a method reference

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 16th December 2003
Project org.eclipse.jdt.core v_393 (cvs).

## What's new in this drop

### Problem Reports Fixed

48818 NPE in delta processor
48711 javadoc-warning if derived exception in @throws clause
46040 NPE in Eclipse console
48725 Cannot search for local vars in jars.
48749 [Compiler] deprecation check in initializer fooled by trailing deprecated field decl

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 15th December 2003
Project org.eclipse.jdt.core v_392 (cvs).

## What's new in this drop

- Added option to avoid reporting a warning when overriding a deprecated method. By default, such warnings are no longer reported.

       * COMPILER / Reporting Deprecation When Overriding Deprecated Method
       *    When enabled, the compiler will signal the declaration of a method overriding a deprecated one.
       *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
       *     - option id:        "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"
       *     - possible values:   { "enabled", "disabled" }
       *     - default:           "disabled"

- Compiler options to signal problems with javadoc comments have been improved. User can now decide to report independently problems on invalid tags (syntax and references), missing tags and missing comments. Invalid references, missing tags or missing comments problem can be now ignored below a specific visibility level. Finally, user will also have the possibility to ignore missing tags and missing comments on overriding methods (assuming that complete Javadoc comments is done in superclass or interface declaration).
  Here's the complete list of these options:

      	 * COMPILER / Reporting Invalid Javadoc Comment
      	 *    This is the generic control for the severity of Javadoc problems.
      	 *    When enabled, the compiler will issue an error or a warning for a problem in Javadoc.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadoc"
      	 *     - possible values:   { "error", "warning", "ignore" }
      	 *     - default:           "ignore"
      	 *
      	 * COMPILER / Visibility Level For Invalid Javadoc Tags
      	 *    Set the minimum visibility level for Javadoc tag problems. Below this level problems will be ignored.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility"
      	 *     - possible values:   { "public", "protected", "default", "private" }
      	 *     - default:           "private"
      	 *
      	 * COMPILER / Reporting Invalid Javadoc Tags
      	 *    When enabled, the compiler will signal unbound or unexpected reference tags in Javadoc.
      	 *    A 'throws' tag referencing an undeclared exception would be considered as unexpected.
      	 *
      Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
      	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility".
      	 *

      	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadocTags"
      	 *     - possible values:   { "disabled", "enabled" }
      	 *     - default:           "enabled"
      	 *
      	 * COMPILER / Reporting Missing Javadoc Tags
      	 *    This is the generic control for the severity of Javadoc missing tag problems.
      	 *    When enabled, the compiler will issue an error or a warning when tags are missing in Javadoc comments.
      	 *
      Note that this diagnosis can be enabled based on the visibility of the construct associated with the Javadoc;
      	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility".
      	 *

      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTags"
      	 *     - possible values:   { "error", "warning", "ignore" }
      	 *     - default:           "ignore"
      	 *
      	 * COMPILER / Visibility Level For Missing Javadoc Tags
      	 *    Set the minimum visibility level for Javadoc missing tag problems. Below this level problems will be ignored.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility"
      	 *     - possible values:   { "public", "protected", "default", "private" }
      	 *     - default:           "private"
      	 *
      	 * COMPILER / Reporting Missing Javadoc Tags on Overriding Methods
      	 *    Specify whether the compiler will verify overriding methods in order to report Javadoc missing tag problems.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "enabled"
      	 *
      	 * COMPILER / Reporting Missing Javadoc Comments
      	 *    This is the generic control for the severity of missing Javadoc comment problems.
      	 *    When enabled, the compiler will issue an error or a warning when Javadoc comments are missing.
      	 *
      Note that this diagnosis can be enabled based on the visibility of the construct associated with the expected Javadoc;
      	 *    also see the setting "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility".
      	 *

      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocComments"
      	 *     - possible values:   { "error", "warning", "ignore" }
      	 *     - default:           "ignore"
      	 *
      	 * COMPILER / Visibility Level For Missing Javadoc Comments
      	 *    Set the minimum visibility level for missing Javadoc problems. Below this level problems will be ignored.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility"
      	 *     - possible values:   { "public", "protected", "default", "private" }
      	 *     - default:           "public"
      	 *
      	 * COMPILER / Reporting Missing Javadoc Comments on Overriding Methods
      	 *    Specify whether the compiler will verify overriding methods in order to report missing Javadoc comment problems.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "enabled"
      	 *

  Note that backward compatibility with previous options IDs: `"org.eclipse.jdt.core.compiler.problem.missingJavadoc"` will be supported until 3.0M7 build and removed after.

### Problem Reports Fixed

47214 Cannot open declaration on a selected method of an anonymous class
47795 NPE selecting method in anonymous 2 level deep
48335 [Compiler] Need option to not report deprecation in override scenarii
48523 @throws reference incorrectly warned as not declared
47940 Unable to control level of JavaDoc errors
47319 Compiler warns on missing Javadoc tags for private methods.
46976 Do not warn about 'Missing Javadoc' for overriding methods
46854 [DCR] Javadoc configuration setting needs more flexibility
48617 Error range for unresolved names in qualified references
48333 [Compiler] Implicit deprecation isn't propagated to anonymous type
46084 ArrayIndexOutOfBoundsException in compiler after feeding with non-real java code
43354 CodeAssist relevance should privilege package completion over type name
48422 Calling isStructureKnown() on ILocalVaraible throws JavaModelExceptions
48261 Search does not show results
47213 Inefficient recursion while initializing classpath container

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 10th December 2003
Project org.eclipse.jdt.core v_391 (cvs).

## What's new in this drop

- We reverted back the behavior when using the class literal. See bugs 37565 and 48086. As long as javac doesn't clarify this case, we keep the old behavior.

### Problem Reports Fixed

48086 Compiler does not resolve references in static init blocks correctly
48353 Indexes deleted on shutdown
42579 Eclipse allows setting a source folder's parent as output folder, which wipes out source code

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 9th December 2003
Project org.eclipse.jdt.core v_390 (cvs).

## What's new in this drop

- The classpath validation rules now allow an excluded directory to be used as an output location. Remember that a source folder can be associated with exclusion rules so as to eliminate portions of the source tree. Nested source/library entries were already allowed given proper exclusion rules were specified, now we also enable nesting an output folder as well under the same restrictions.

### Problem Reports Fixed

47338 CCE in CompletionParser
45589 Too many Util classes in JDTCore
39539 Cannot select excluded directory as output folder for class files
48070 [CodeAssist] ArrayIndexOutOfBoundsException in AssistParster
48167 Indentation/line wrapping problems with array initializers
32022 Indirect static proposal: Wrong compiler positions
48141 Formatter: Java Conventions/WS/Expressions/Operators
45157 Source Formatter: Clear all Blank lines needs to have the ability to set a number of lines to keep.
44673 Formatting
38523 so add "Insert new line after each parameter if line is too long" checkbox to Preferences > Java > Code Formatter > New Lines
34897 Code Formatter feature request
46937 [Compiler] Marking a field deprecated still report deprecated usage
47989 Exception when searching for IPackageFragment "java.util.zip"
47997 No empty line after opening brace [formatter]
48064 Javadoc: NPE during build process
44815 Continuation indent for array initializer should be customizable
44813 Option "Insert new line before an open brace" should work also for array initializers
43212 catch variable not recognized by code-completion
46060 regression - content assist fails to present proposal
47918 New code Formatter
47968 Cannot find @see references in Class javadoc comment
47909 Javadoc: NPE while searching a constructor references in jdt-core
47986 Formatting of 'for' initializers
47976 Implementation of IField.getConstant() fails for some constants
47886 [Compiler] ACC_SUPER bit sets for interfaces

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 2nd December 2003
Project org.eclipse.jdt.core v_389 (cvs).

## What's new in this drop

- Spec and implementation for `ITypeBinding.getBinaryName()` was changed to be '.' separated:

       /**
       * Returns the binary name of this type binding.
       * The binary name of a class is defined in the Java Language
       * Specification 2nd edition, section 13.1.
       *
       * Note that in some cases, the binary name may be unavailable.
       * This may happen, for example, for a local type declared in
       * unreachable code.
       *
       * @return the binary name of this type, or null
       * if the binary name is unknown
       * @since 3.0
       */
      public String getBinaryName();

### Problem Reports Fixed

47881 [Compiler] x && false evaluates to "true"
47802 New Code Formatter: NEXT_PER_LINE_SPLIT
47811 New Code Formatter: doesn't handle several classes per CU
47801 New Code Formatter: INSERT_SPACE_AFTER_PREFIX_OPERATOR
47800 New Code Formatter: BINARY_EXPRESSION_ALIGNMENT
47799 New Code Formatter: PUT_EMPTY_STATEMENT_ON_NEW_LINE
47776 java.lang.VerifyError / Illegal target of jump or branch compiling with 3.0 M5
47341 Javadoc problem for @see to protected method
47339 Javadoc problem while using @see tag
47132 Javadoc for method in anonymous type should not be mark as missing
47215 Javadoc: type reference in @see tag ignore the following text
46761 Search for references: misses match in Javadoc
46675 [Compiler] NullPointerException with ? operator
35220 CodeAssist - method of anonymous type should not be proposed
47631 PerThreadObject (JavaModelManager.deltaState) leaks Threads.
46470 Wrong completion after a switch
35232 CodeAssist - wrong completion for static method in anonymous type
47401 Wrong code assist proposals in anonymous class
47443 All projects touched on startup
44493 Improve formatting of throws clauses
44765 New formatter not properly formatting long method invocation
44653 // $NON-NLS-1$ comments not kept on same line of the string while formatting
46699 IBinding.isSynthetic() returns false for compiler-generated constructor
47415 [Search] package references confused with multiple fragments
38679 Search for class ref shows local class containing a match on an import [search]
47049 [Builder] Build output folder not getting flushed because files are not marked as derived
46613 AST nodes and string buffers
47396 JAVA AST Creation failure

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M6 Build - 25th November 2003
Project org.eclipse.jdt.core v_388 (cvs).

## What's new in this drop

### Problem Reports Fixed

47082 [Compiler] Problem with final variable initialization
47180 Merge different type declarations into one class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 21st November 2003 - 3.0 MILESTONE-5
Project org.eclipse.jdt.core v_387 (cvs).

## What's new in this drop

### Problem Reports Fixed

44397 Search doesn't find references to local types
46571 Searching for all occurrences for method declarated in local types doesn't wor
46943 refactoring: encapsulate field of local type: references from enclosing type are not replaced by setter
47180 NPE in Delta Processor
46788 Export scripts: shouldn't use variable name version
47160 ArrayIndexOutOfBoundsException from CodeSnippetParser
47177 ClassCastException during hover
47079 [Builder] suspicious side-effects during incremental compile

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 20th November 2003
Project org.eclipse.jdt.core v_386 (cvs).

## What's new in this drop

- Removed APIs that create an `ICompilationUnit` handle given a `WorkingCopyOwner` as these can be replaced with `ICompilationUnit.findWorkingCopy(WorkingCopyOwner)`:
  - `IPackageFragment.getCompilationUnit(String, WorkingCopyOwner)`
  - `JavaCore.create(IFile, WorkingCopyOwner)`
  - `JavaCore.create(IResource, WorkingCopyOwner)`
  - `JavaCore.createCompilationUnitFrom(IFile, WorkingCopyOwner)`
  - `IDOMCompilationUnit.getCompilationUnit(IPackageFragment, WorkingCopyOwner)`
- Added API on `ICompilationUnit` to find an existing working copy given a working copy owner (it replaces `IWorkingCopy.findSharedWorkingCopy(IBufferFactory)`):

      /**
       * Finds the working copy for this compilation unit, given a WorkingCopyOwner.
       * If no working copy has been created for this compilation unit associated with this
       * working copy owner, returns null.
       *
       * Users of this method must not destroy the resulting working copy.
       *
       * @param owner the given WorkingCopyOwner
       * @return the found working copy for this compilation unit, null if none
       * @see WorkingCopyOwner
       * @since 3.0
       */
      ICompilationUnit findWorkingCopy(WorkingCopyOwner owner);

- Added API on `IClassFile` to create a working copy on a class file (it replaces `IClassFile.getWorkingCopy(IProgressMonitor, IBufferFactory)`):

      /**
       * Returns a working copy on the source associated with this class file using the given
       * owner to create the buffer, or null if there is no source associated
       * with the class file.
       *
       * The buffer will be automatically initialized with the source of the class file
       * upon creation.
       *
       * The only valid operations on this working copy are getBuffer() or getPrimary().
       *
       * @param owner the owner that creates a buffer that is used to get the content of the working copy
       *                 or null if the primary owner should be used
       * @param monitor a progress monitor used to report progress while opening this compilation unit
       *                 or null if no progress should be reported
       * @return a  a working copy on the source associated with this class file
       * @exception JavaModelException if the source of this class file can
       *   not be determined. Reasons include:
       *   - This class file does not exist (ELEMENT_DOES_NOT_EXIST)
       * @since 3.0
       */
      ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException;

- Added API on `ITypeBinding` to get the binary name of a type binding:

      /**
       * Returns the binary name (as defined in the Java Language
       * Specification Chapter 13 Section 1) of this type binding.
       * It is however slash ('/') separated instead of dot ('.') separated as said
       * in the specification.
       * Returns null if the type is defined in code that is unreachable.
       *
       * @return the binary name of this type or null if this type is unreachable
       */
      String getBinaryName();

### Problem Reports Fixed

46012 IllegalArgumentException in StringLiteral
46769 NPE in PatternLocator.qualifiedSourceName
47074 inability to detect invalid cast between interfaces
46057 need mechanism for retrieving the name of anonymous and local classes

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 19th November 2003
Project org.eclipse.jdt.core v_385 (cvs).

## What's new in this drop

### Problem Reports Fixed

46964 Can not set Javadoc compiler setting
46901 Strange compile error in javadoc

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 19th November 2003
Project org.eclipse.jdt.core v_384 (cvs).

## What's new in this drop

- Added API on `ICompilationUnit` to query whether the working copy's resource has changed (it replaces `IWorkingCopy.isBasedOn(IResource)`):

      /**
       * Returns whether the resource of this working copy has changed since the
       * inception of this working copy.
       * Returns false if this compilation unit is not in working copy mode.
       *
       * @return whether the resource has changed
       * @since 3.0
       */
      public boolean hasResourceChanged();

- Added APIs on `IType` to create hierarchies using `ICompilationUnits` instead of `IWorkingCopies`:

      /**
       * Creates and returns a type hierarchy for this type containing
       * this type and all of its supertypes, considering types in the given
       * working copies. In other words, the list of working copies will take
       * precedence over their original compilation units in the workspace.
       *
       * Note that passing an empty working copy will be as if the original compilation
       * unit had been deleted.
       *
       * @param workingCopies the working copies that take precedence over their original compilation units
       * @param monitor the given progress monitor
       * @return a type hierarchy for this type containing this type and all of its supertypes
       * @exception JavaModelException if this element does not exist or if an
       *		exception occurs while accessing its corresponding resource.
       * @since 3.0
       */
      ITypeHierarchy newSupertypeHierarchy(ICompilationUnit[] workingCopies, IProgressMonitor monitor) throws JavaModelException;

      /**
       * Creates and returns a type hierarchy for this type containing
       * this type, all of its supertypes, and all its subtypes in the workspace,
       * considering types in the given working copies. In other words, the list of working
       * copies that will take precedence over their original compilation units in the workspace.
       *
       * Note that passing an empty working copy will be as if the original compilation
       * unit had been deleted.
       *
       * @param workingCopies the working copies that take precedence over their original compilation units
       * @param monitor the given progress monitor
       * @return a type hierarchy for this type containing
       * this type, all of its supertypes, and all its subtypes in the workspace
       * @exception JavaModelException if this element does not exist or if an
       *		exception occurs while accessing its corresponding resource.
       * @since 3.0
       */
      ITypeHierarchy newTypeHierarchy(ICompilationUnit[] workingCopies, IProgressMonitor monitor) throws JavaModelException;

- Added API on `SearchEngine` to create a search engine using `ICompilationUnits` instead of `IWorkingCopies`:

      /**
       * Creates a new search engine with a list of working copies that will take precedence over
       * their original compilation units in the subsequent search operations.
       *
       * Note that passing an empty working copy will be as if the original compilation
       * unit had been deleted.
       *
       * Since 3.0 the given working copies take precedence over primary working copies (if any).
       *
       * @param workingCopies the working copies that take precedence over their original compilation units
       * @since 3.0
       */
      public SearchEngine(ICompilationUnit[] workingCopies) {...}

### Problem Reports Fixed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 18th November 2003
Project org.eclipse.jdt.core v_383 (cvs).

## What's new in this drop

- To avoid confusion with annotations introduced in JDK 1.5 grammar, all internal references to "annotation" (added to handle Javadoc comments) got renamed into "Javadoc". As a consequence of this is that IDs for optional Javadoc problems have been updated accordingly:

      	 * COMPILER / Reporting Invalid Javadoc Comment
      	 *    When enabled, the compiler will issue an error or a warning when a javadoc comment is inconsistent,
      	 *    misses a tag entry or contains invalid references.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidJavadoc"
      	 *     - possible values:   { "error", "warning", "ignore" }
      	 *     - default:           "ignore"
      	 * COMPILER / Reporting Missing Javadoc Comment
      	 *    When enabled, the compiler will signal cases where public class, interface, method, constructor or field
      	 *    (considered as part of the API) has no javadoc comment.
      	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidJavadoc".
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingJavadoc"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "disabled"

  Note that backward compatibility with previous options IDs: `"org.eclipse.jdt.core.compiler.problem.invalidAnnotation"` and `"org.eclipse.jdt.core.compiler.problem.missingAnnotation"` will be supported until 3.0M6 build and removed after.

### Problem Reports Fixed

46717 The code formatter does not insert a new line before /** Javadoc
45958 Compiler wrongly complains against valid @see constructor reference
45112 Use Javadoc instead of Annotation for comment compiler parsing
46052 result of ITypeHierarchy.getAllSuperTypes() does not include Object
46192 ILocalVariable.exists() always returns false
14103 [Builder] Too many dependents found when incrementally recompiling
39601 [DOM/AST] clarify documentation of source ranges
39739 [DOM/AST] VariableDeclarationStatements aren't full statements
46690 Code formatter always inserts space after comma in multiple locals or field declarations
46689 Code formatter always inserts a space in front of the '-' unary operator
46686 Code formatter doesn't indent properly statements following a switch statement
46356 [Builder] simple/qualified names list for indicting dependents should be hashed collections
46612 [DOM/AST] BodyDeclaration should provide a method getModifiers

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 10th November 2003
Project org.eclipse.jdt.core v_382 (cvs).

## What's new in this drop

### Problem Reports Fixed

46276 Search for package declarations incorrectly finds matches in clone project
46099 Batch compiler doesn't print stats if errors and not proceeding on errors
40950 [infrastructure] NPE from indexer
46150 formatter failed to format
46013 IBinding.getKey() for local shouldn't return null
46033 New formatter not formatting nested constructor/methods properly
46093 [Builder] Unoptimal pre-check for not writing class files
45847 [Builder] Reading build state is slow
45982 Array out of bounds error while editing Java file
41611 CreateCompilationUnitOperation.executeOperation() should probably force creation more agressively
45113 No hierarchy refresh when on region

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 4th November 2003
Project org.eclipse.jdt.core v_381 (cvs).

## What's new in this drop

### Problem Reports Fixed

45968 [new formatter] Formatter introduces empty lines inside line comments
44450 Strange name range for anonymous classes.
43139 Delete member in Outliner not working
45944 Stack trace attempting to find markers on a closed project
44884 Wrong list displayed while code completion
45661 Search for references of default package fails
45671 Need source range and getTypeSignature() for local variables
45575 Failure in nightly build of formatter tests (test325)
45783 NPE in MatchLocator
22073 Each "format" adds one more level of indentation.
23709 for (/*comment*/; causes indentation to misbehave
27249 incorrect formatting of empty array initialization blocks
29473 wrong formatting of if...try... catch... else
45786 No selection on method declaration in field initializer
45721 Getting wrong deltas
45674 Compiler should allow compound assignment to final in unreachable code
43984 NPE in background search
45707 Autobuild does not kick in when using classpath containers
45655 exception while editing java file
42287 Should consider qualified name token positions

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 28th October 2003
Project org.eclipse.jdt.core v_380 (cvs).

## What's new in this drop

- Search is now able to find local variable references and declarations. In order to trigger such a search, the search engine must be fed with an `ILocalVariable` element. Searching a local variable by its name is not supported.
- Search is now finding references in Javadoc comments. Found references are method parameters declared in `@param` tags, types of exceptions declared in `@throws`/`@exception` tags and all instance variables, methods, types or packages declared in `@see` tags.
  Note that only valid references in Javadoc comments will be reported during search. In order to ensure the integrity of your Javadoc comments, you may want to enable the compiler check for Javadoc (Preferences>Java>Compiler>Style>Problem in Javadoc tags).

### Problem Reports Fixed

45641 CCE when using declarations view
45596 Wrongly complains about missing parameter javadoc entry in anonymous class
45592 NPE while searching a method references in jdt-core
45520 Potential NPE
45518 Search has to find references put in javadoc comments
45436 Javadoc warnings: wrong errors in AST
45198 NPE from AnnotationParser
45459 JDT compiler more restrictive than javac
35899 "hierarchy of type ... inconsistent" error message wrong
43967 Search for references on local variable finds all occurances of variables of that type not just that variable.
37509 Open Declaration opens class declaration for local variables
45433 Bug7 (and counting ;-): hundretAssignmentsToFinalVariable()
45357 Compiler-Bug: "The local variable oResult may not have been initialized".txt

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 21st October 2003
Project org.eclipse.jdt.core v_379 (cvs).

## What's new in this drop

- Compiler options for controlling the severity of problems for invalid imports or unreachable code got discontinued. Indeed, allowing this kind of problems to be ignored or treated as a warning would violate the language spec. As a consequence, `JavaCore#COMPILER_PB_INVALID_IMPORT` and `JavaCore#COMPILER_PB_UNREACHABLE_CODE` got deprecated, further attempts to set these preferences are now ignored and import problems or unreachable code are always reported as errors.
- The warning level of the batch compiler can now be configured more easily using `-warn:+...` or `-warn:-...` command line argument (as opposed to only existing `-warn:...` command line argument). `-warn:+...` will not override the default warning level, but simply enable a few more specific warnings. Similarily, `-warn:-...` will only disable specific warnings.
  Note, by default the batch compiler is reporting the following warnings:
  - 'assert' used as identifier
  - char[] in String concat
  - method with constructor name
  - deprecation outside deprecated code
  - finally block not completing normally
  - interface non-inherited method compatibility
  - hidden catch block
  - assignment without effect
  - attempt to override package-default method
  - unused import declaration
  - non-static reference to static member
- Code select (i.e. `ICodeAssit.codeSelect(...)`) now returns an `ILocalVariable` element when a local variable or an argument is selected.
  Note that `ILocalVariable`s are pseudo-elements: they are not part of the Java model (`exists()` always returns `false`), they are not returned when asking for the children of a method, and there is no other way to create such an element. One can only ask for the source range (`ISourceReference.getSourceRange()`) or for the name range (`ILocalVariable.getNameRange()`) of the local variable.
  Searching a local variable is not yet implemented, but it is on the plan.

### Problem Reports Fixed

35389 Compiler settings can violate JLS [build path]
44869 Search: no refs found to overridden method in binary subclass
45110 No constant for '..compiler.problem.missingAnnotation'
45100 [formatter] test144 fails
45036 [formatter] New formatter fails formatting multiple field declarations using K_CLASSBODY_DECLARATION kind
45037 [formatter] New formatter doesn't insert a new line before the while in a do/while
45014 Formatter misplaces semicolon
44757 New code formatter does not format switch statements correctly
44647 NPE code completion
43754 How to position this comment?
44839 New formater fails with out of memory error

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M5 Build - 15th October 2003
Project org.eclipse.jdt.core v_378 (cvs).

## What's new in this drop

- Removed dependency on Xerces.
- Remove deprecated previously added API `IJavaProject#forceClasspathReload(IProgressMonitor)` (see comment of v_368 drop below).
- Added optional compiler problem to signal problems with javadoc annotation.

      	 * COMPILER / Reporting Invalid Javadoc Annotation
      	 *    When enabled, the compiler will issue an error or a warning when a javadoc annotation is inconsistent,
      	 *    misses a tag entry or contains invalid references.
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.invalidAnnotation"
      	 *     - possible values:   { "error", "warning", "ignore" }
      	 *     - default:           "ignore"
      	 * COMPILER / Reporting Missing Javadoc Annotation
      	 *    When enabled, the compiler will signal cases where public class, interface, method, constructor or field
      	 *    (considered as part of the API) has no javadoc annotation.
      	 *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.invalidAnnotation".
      	 *     - option id:         "org.eclipse.jdt.core.compiler.problem.missingAnnotation"
      	 *     - possible values:   { "enabled", "disabled" }
      	 *     - default:           "disabled"
      	 *

### Problem Reports Fixed

44715 NullPointerException compiling Java file
44697 Bug when i search reference of 'String' in 3.0M4
38091 DCR - Generate warnings for JavaDoc missing entries
44637 NPE in Initializer.getPrimaryElement()
42762 Compiler tests should run both in 1.3 and 1.4 mode
44580 No outline when unit name is not valid
44651 Wrong formatting of multiple local variables declarations
44643 Remove dependancy to xerces
44662 Should not validate unit/classfile handles upon creation
44400 Unnecessary cast not being picked up
44143 [JSR202] Remove usage of jsr bytecodes in 1.5 mode

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 9th October 2003 - 3.0 MILESTONE-4
Project org.eclipse.jdt.core v_377 (cvs).

## What's new in this drop

### Problem Reports Fixed

44576 Code formatter option "Insert a new line before an opening brace" has no effect for single else
44570 Code formatter option "Insert a new line inside an empty block" has no effect
44503 Unoptimal formatting for long constructor argument
44546 New formatter unable to format
44506 Type hierarchy is missing anonymous type
44481 "Insert new line between else and if" is not working as expected
44480 Formatting the formatted string should not produce edits
44444 jdt.core in trouble when project has no JRE
44437 Typo in plugin.properties

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 8th October 2003
Project org.eclipse.jdt.core v_376 (cvs).

## What's new in this drop

- Fix for bug 44289 requires the index format to be changed. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

44308 NullPointerException when searching jars
44341 NPE from delta processor
44119 NPE while searching for references to Action#run()
44331 Need indication that removal/add was targeted to a primary working copy
32639 Missing empty fine-grain delta when reconciling
44292 IDOMType.setFlags(Flag.AccPublic) when applied to an interface having default visibility produces uncompilable code
44293 DOMFactory.createInitializer() always creates a static intializer
44289 Search broken

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 7th October 2003
Project org.eclipse.jdt.core v_374 (cvs).

## What's new in this drop

- The new code formatter can be activated in the ui. See the work in progress section. This first release doesn't expose yet all the preferences of the new code formatter. This will be done after M4. However the old formatter options should be honored by the new code formatter. This is a work in progress and all problems should be reported against JDT/Core.

### Problem Reports Fixed

44242 Deadlock during jdt/debug test
44066 Package Explorer doesn't show new file
44219 NPE while creating TypeHierarchy for binary type "Group"
44073 Override methods action does not work for local types [code manipulation]
16231 formatter creates ugly array initializer expressions
6284 Java formatter enhancements
6268 Code formatting
44036 Java code formatter wraps line too much.
43651 Linewrapping of throws declarations (if many)
43545 Code Formatter: Don't separate long "import" clause.
43272 feature request : extend the code formatter to support blanks between method / class name and bracket.
43050 Formatting long arguments not very readable
40777 Incorrect formatting for anonymous inner class with comment
39607 Incorrect formatting of anonymous inner class inside if statement
39603 for-Statement not correctly formatted by Codeformatter
39357 Better code formatting
38151 Code formatter adds an unwanted blank line after an abstract method with a "throws" clause.
37106 Code Formatter: Option to double indent wrapped lines in if statments, etc.
37057 Code Formatter: Reduce number of blank lines to 1
36832 wrong indent on Code Format of anonymous class
36455 [Formatting] Too long lines look ugly
36108 Code Formatter Clear Blank Lines Doesn't Work
35799 code formatter: missing space after last array initializer
35433 Simple Feature Request - Code Formatter Enhancement
35173 Code formatter incorrectly formats this case:
29110 RFE: Disable line splitting in the code formatter
28098 Code Formatter doesn't format JavaDoc indentation
27196 Code Formatter Won't Indent Braces
25559 more code formatter options
24200 "Space inside parens & brackets" option in Code Formatter
23144 formatter issues
22528 Code formatter incorrectly indents lines
22313 Formatter doesn't like some comment
21943 Formatter should allow removing space after for/while/if
20721 Code formatter bug
19999 Code Formatter always clears blank lines to 1
19811 Code formatter bugs
17349 Code Formatter incorrectly formats static initializer
16233 formatter problem with constructor, array and line-end comments
15286 Code formatter: long param lists and line wrapping
14659 Align method arguments on line break
12456 Add formatter options for controlling spaces
12321 Code formatter and comments
10052 CodeFormatter - line splitting enhancement.
7439 incorrect formatting: empty inner class
7224 Formatting splits package names in ugly ways
6747 Code Formatter exchange several blank lines w/ one
5824 Code Formatter needs to be more customizable to be useful
3327 Formatter - should ensure one empty line before a method declaration (1GHOJWD)
3276 DCR: (LOW) Formatter option to not indent methods (1GE39ZO)
3181 Does not format nicely anonymous type (1FRLTO1)
44085 becomeWorkingCopy() should add the working copy in the model
44052 Deadlock on startup
44092 Methods to generate parser files are not correct
44084 No refresh when deleting edited unit
41643 Code assist doesn't propose all valid types
44065 NPE during hot code replace
43897 No completion in cast expression
44061 CodeAssist - no completion after class literal access
44018 Change superfluous semicolon error message
43872 Hierarchy does not update properly when local class eliminated [type hierarchy]
43294 Primary working copy: No updates when changed in working copy mode
43907 Too many warnings reported by the jdt compiler adapter
43847 IPackageFragment not updated after CUs have moved
43879 working copy commit outside classpath doesn't save buffer

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 30th September 2003
Project org.eclipse.jdt.core v_373 (cvs).

## What's new in this drop

### Problem Reports Fixed

43728 Optimize CompilerOptions(Map....)
43842 JDTCompilerAdapter doesn't find bootclasspath
40782 Primary working copies: unnecessary deltas on save
43300 SearchEngine(IWorkingCopy[] workingCopies) not backward compatible
43670 No classpath refresh when replacing binary project with source form
43600 NPE from JDTCompilerAdapter
43636 Compiler complain that class cannot be resolved when it should be only not visible
43208 ICompilation.move not supported when in workingCopyMode
40793 Primary working copies: Type search does not find type in modified CU
43587 Searching for references to default constructors reports questionable results
36143 Type hierarchy doesn't include anonymous subclasses
8613 Outline should show anonymous inner classes

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 24th September 2003
Project org.eclipse.jdt.core v_372 (cvs).

## What's new in this drop

### Problem Reports Fixed

42692 JavaCC files cause VerifyError when compiled with Eclipse
43437 Scanner does not like string literals
43485 NPE in SearchEngine
37659 [plan item] Improve shared working copies

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 22nd September 2003
Project org.eclipse.jdt.core v_371 (cvs).

## What's new in this drop

- As a consequence of migrating to background autobuild, the JavaModel will no longer broadcast deltas during PRE_AUTO_BUILD event notification. These were somewhat inconsistent in so far as the model wasn't totally up to date anyway. Now the model will only fire deltas during POST_CHANGE, or working copy reconcile operations.
- Part of the new support for local and anonymous types in the Java model has been released.

  This includes:

  - local and anonymous types are shown in the Outline view and the Package Explorer view
  - Java element deltas for these types are notified
  - handles on these types can be created (see `IMember.getType(String, int)`)
  - `getChildren()` on a method, a field or an initializer returns the local or anonymous types defined in this element
  - mementos for these handles are supported
  - open on selection (F3) in a Java editor goes to the local type definition
  - type hierarchies contain anonymous and local types

  This doesn't yet include:

  - search on these types
  - anonymous/local binary types

### Problem Reports Fixed

42832 Cannot get rid of this error even if the compiler settings is ignore for incompatible required binaries
41583 [misc] Eclipse cannot save or compile files in non-Java project anymore
43274 Type hierarchy broken
38931 Migrate delta processor to comply to new notification scheme in 3.0
42281 "Resource *.java does not exist"
38931 org.eclipse.jdt.internal.corext.dom.NodeFinder needed in API

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 16th September 2003
Project org.eclipse.jdt.core v_370 (cvs).

## What's new in this drop

### Problem Reports Fixed

43026 Running jdt/core tests on Linux is failing
43045 Copy/move of package fragments with read-only subpackages fails on Linux
43116 NPE copy and pasting a method
43089 Search engine doesn't report all matches
43080 NPE when searching in CU with incomplete method declaration
42856 CodeAssist - Does not work after an inner type reference
42839 Incorrect position in org.eclipse.jdt.core.dom.ArrayType

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 9th September 2003
Project org.eclipse.jdt.core v_369 (cvs).

## What's new in this drop

- Default compiler compliance setting got raised to 1.4 level. Default source level is 1.3, and default target level is 1.2. To ease the 1.4 migration, the default severity for optional problem 'assert used as identifier' got raised to warning.

### Problem Reports Fixed

42760 NullPointerException in JobManager when searching
42629 javac error message with missing classpath entry when claims entry dropped from path
42614 1.3 compliant mode should select default enclosing instance
42588 Incorrect selection of current enclosing instance
35567 Classpath validation error messages should contain project name
42443 Error when inner class name has the same name than another class, but with not the same case sensitive
42459 DebugEvaluationTests don't run if target is 1.2
39887 Resource exception while indexing
42366 Classpath validation error message removed while rebuilding a project.
41680 Unnecessary cast wrongly reported

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M4 Build - 1st September 2003
Project org.eclipse.jdt.core v_368 (cvs).

## What's new in this drop

- Added optional compiler problem to signal unqualified access to a non-static field. In order to improve code readability, qualifying field accesses is a simple way to syntactically distinguish a field access from a local variable access, and thus avoid resorting to a special naming convention for fields (such as "fField").

      * COMPILER / Reporting Unqualified Access to Field
      *    When enabled, the compiler will issue an error or a warning when a field is access without any qualification.
      *    In order to improve code readability, it should be qualified, e.g. 'x' should rather be written 'this.x'.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Added optional compiler problem to signal method/constructor declared thrown checked exception which aren't actually raised inside the method/constructor body.

      * COMPILER / Reporting Unused Declared Thrown Exception
      *    When enabled, the compiler will issue an error or a warning when a method or a constructor is declaring a
      *    thrown checked exception, but never actually raises it in its body.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Added optional compiler problem to flag situations where a finally block does not complete normally.

      * COMPILER / Reporting Finally Blocks Not Completing Normally
      *    When enabled, the compiler will issue an error or a warning when a finally block does not complete normally.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- Improved problem description for unreachable catch block problems. Message will now mention the exception type name and better diagnose the cause of the problem. Also changed problem source range to rather highlight the caught exception type instead of entire catch block.

- Added two new API methods `readRawClasspath()` and `readOutputLocation()` on `IJavaProject` interface so as to allow user to read classpath directly from disk (`.classpath` file contents). This is useful to configure a Java project before it is associated with the Java nature, or before the automatic classpath reconciliation mechanism has performed (within a resource modifying operation, and prior to the change notification). Note that these API additions are obsoleting the previously added API `IJavaProject#forceClasspathReload(IProgressMonitor)` (also see bug 20931) which has thus been deprecated. Forcing the classpath reload can simply be achieved by: `p.setRawClasspath(p.readRawClasspath(), p.readOutputLocation(), ...)`.

### Problem Reports Fixed

40383 Search - should only special treat unsaved working copies
40658 IJavaProject.getOutputLocation/getRawClasspath require Java nature
42196 Method popup extremely slow for JOGL code
41534 incorrect shadowing reported by rename [refactoring]
40937 ISourceReference.getSource throws ArrayIndexOutOfBoundsException
41373 SourceField.getConstant() returns null for final fields set in initializer
41604 Possible Compiler Bug
22976 DCR - warning for unused declarations of thrown exceptions
40736 JDT compiler fails to compile legitimate Java code.
40020 Exceptions in console

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M3 Build - 22nd August 2003 - 3.0 MILESTONE-3
Project org.eclipse.jdt.core v_367 (cvs).

## What's new in this drop

### Problem Reports Fixed

40464 Index states not saved
41805 ArrayIndexOutOfBoundsException while creating AST
39831 Search finds only "inexact" matches
35980 illegal code completion suggested (abstract methods)
40779 Primary working copies: no deltas on destroy
36271 CodeAssist should treat array.clone() as visible
40681 no warnings for some externalized strings
40584 Test suite configuration should be more flexible
41674 ToolFactory.createDefaultClassFileReader does not close zipfile

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M3 Build - 19th August 2003
Project org.eclipse.jdt.core v_366 (cvs).

## What's new in this drop

- In 1.4 mode, the compiler is now JCK 1.4a compliant (previously was passing JCK1.4).
- To reduce the memory consumption and improve performance, the following new APIs were added:
  - AST.parsePartialCompilationUnit(ICompilationUnit unit, int position, boolean resolveBindings)
  - AST.parsePartialCompilationUnit(ICompilationUnit unit, int position, boolean resolveBindings, WorkingCopyOwner owner)

### Problem Reports Fixed

41602 missing @exception in javadoc of IPackageFragment.getNonJavaResources
38635 Refactor / Rename Package doesn't allow rename to same name with different case [refactoring]
40476 refactor change method signature reports erroneous non-constant case statements
40995 NPE in ast.ExplicitConstructorCall.analyseCode
40880 Wrong error range for 'indirect static access'
40174 Performance issues with builder
39108 Numerous single type imports can slow compiler down significantly
41019 org.eclipse.jdt.core.Signature cannot resolve complex type that has package name starting with letters as any primitive type
38633 Search should not open requested types with match locator parser
40954 ArrayIndexOutOfBoundsException during sort members
40804 NPE in MethodBinding.sourceMethod()
40474 DOM/AST: Add API to parse only part of a compilation
40839 Deprecation is reported even if there is an empty member declaration prior to the field declaration
40606 Unable to discard empty package if containing .class files
39174 NPE in type hierarchy when opening type
40082 NPE in TypeHierarchy.packageRegionContainsSamePackageFragment(TypeHierarchy.java:1314)
40090 No need to close Java model on shutdown
42589 jck1.4a failures

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M3 Build - 24th July 2003
Project org.eclipse.jdt.core v_365a (cvs).

## What's new in this drop

### Problem Reports Fixed

40752 internal compiler error: java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.ArrayBinding
40594 wrong location set for org.apache.ant when building jdt component with baseLocation
40715 getWorkingCopy(...) should always return a new working copy for primary cus

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M3 Build - 22nd July 2003
Project org.eclipse.jdt.core v_365 (cvs).

## What's new in this drop

- Added optional diagnosis for undocumented empty blocks

      * COMPILER / Reporting Undocumented Empty Block
      *    When enabled, the compiler will issue an error or a warning when an empty block is detected and it is not
      *    documented with any comment.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Removed optional diagnosis for boolean methods throwing exception, since it proved to be useless as is.
- Fix for bug 40116 requires the index format to be changed. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).

### Problem Reports Fixed

40382 JavaModelException#printStackTrace should be improved
40572 Unnecessary cast warning for necessary cast
40322 Error creating new Java projects
40421 Unnecessary cast warning...true but...
32285 DCR - extra java compiler markers
40514 ArrayIndexOutOfBoundsException during detection of unnecessary casts
40442 Abstract class fails to invoke interface-defined method in 1.4 compliance mode.
40116 Search for references to nested class doesn't find anything
40334 Model should be more tolerant for possible compiler failures
36479 Rename operation during refactoring fails
39865 Misleading error diagnosis on broken method signatures
12800 suboptimal error messages on mistyped 'throw/throws' keywords
38568 Search for method declarations fooled by array types

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 18th July 2003 - 3.0 MILESTONE-2
Project org.eclipse.jdt.core v_364b (cvs).

## What's new in this drop

### Problem Reports Fixed

40495 VerifyError with return statements containing a cast expression

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 17th July 2003
Project org.eclipse.jdt.core v_364a (cvs).

## What's new in this drop

### Problem Reports Fixed

40423 NPE Saving a file
40288 NPE while building

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 16th July 2003
Project org.eclipse.jdt.core v_364 (cvs).

## What's new in this drop

### Problem Reports Fixed

40210 ICompilationUnit#isWorkingCopy() misbehaving for discarded working copies

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 15th July 2003
Project org.eclipse.jdt.core v_363 (cvs).

## What's new in this drop

- Added flag `IJavaElementDelta.F_PRIMARY_WORKING_COPY` that signals that a compilation unit has become a primary working copy, or that a primary working copy has reverted to a compilation unit (i.e. primary working copies are not notified as being added/removed like other working copies, since the primary unit is only changing mode, also see bug 40028).

### Problem Reports Fixed

40028 Deltas and deleted working copies
39823 AST: Would like to have binding of Serializable and Clonable

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 14th July 2003
Project org.eclipse.jdt.core v_362 (cvs).

## What's new in this drop

- Added optional diagnosis for unnecessary cast or instanceof operations (matching problem IDs are `IProblem.UnnecessaryCast`, `IProblem.UnnecessaryArgumentCast`, `IProblem.UnnecessaryInstanceof`).

      * COMPILER / Reporting Unnecessary Type Check
      *    When enabled, the compiler will issue an error or a warning when a cast or an instanceof operation
      *    is unnecessary.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Changed Java element delta processing to be thread-safe.

### Problem Reports Fixed

39926 deleting default package (not in source folder) does nothing
39877 Rebuild All generates extra "Unable to read classpath" entry.
39925 Unnecessary instanceof checking leads to a NullPointerException
35442 flag unnecessary casts
39841 Give better explanation of why abstract class can't be instantiated
39467 Classes not implementing abstract methods compile without error
39763 Non NLS string is reported and it should not
39779 End position of IType exceeds the size of CompilationUnit
39766 compilation unit cannot be saved
39664 setSuperInterfaces(String[] interfaceNames) API of org.eclipse.jdt.core.jdom.IDOMType interface does not work for an empty array parameter as Input
39663 setSuperclass(String superclassName) API of org.eclipse.jdt.core.jdom.IDOMType interface does not work for null as Input
39736 JavaModelException on copying read-only CompilationUnits
39009 NPE in Delta processor while executing JDT/UI tests
35739 Stack dump on console
35632 NPE in DeltaProcessor
39281 Unable Refacter (renaming) an inner class
38450 Delete: Removing default package removes source folder

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 7th July 2003
Project org.eclipse.jdt.core v_361 (cvs).

## What's new in this drop

- Added optional compiler diagnosis for boolean method declaring thrown exceptions (matching problem ID is `IProblem.BooleanMethodThrowingException`)

      * COMPILER / Reporting Boolean Method Declaring Thrown Exceptions
      *    When enabled, the compiler will issue an error or a warning when a boolean method declaration
      *    is specifying a clause for thrown exceptions. Some of them are predicates, and these should only
      *    return a boolean value and not raise exceptions.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.booleanMethodThrowingException"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Added optional compiler diagnosis for indirect references to static members (matching problem IDs are: `IProblem.IndirectAccessToStaticField`, `IProblem.IndirectAccessToStaticMethod`, `IProblem.IndirectAccessToStaticType`).

      * COMPILER / Reporting Indirect Reference to a Static Member
      *    When enabled, the compiler will issue an error or a warning whenever a static field
      *    or method is accessed in an indirect way. A reference to a static member should
      *    preferably be qualified with its declaring type name.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.indirectStaticAccess"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- Removed method `Parser#grammar()`, which was hosting the Java grammar as a massive comment. From now on, the grammar is defined in its own separate file: `java_1_4.g`.

### Problem Reports Fixed

39624 Should warn about predicate throwing exceptions
39168 Could remove JavaElement.fLEType field
36989 Incorrect error for "super must be first statement in constructor"
3319 wrong compile-time error message (1GG1LDK)
39268 Optional warning for indirect static references
39533 Working copy with no corresponding file not considered by NameLookup
39502 No completion in message send
39475 Extra error diagnosis in editor from siblings

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 1st July 2003
Project org.eclipse.jdt.core v_360 (cvs).

## What's new in this drop

- Plugin version ID got incremented to 3.0.0.
- Removed tolerance for relative source attachments in `JavaCore.newLibraryEntry(...)`. Only allowing relative empty pathes so as to permit using classpath variables to denote the absence of a source attachment.
- To finish closing the gap between compilation units and working copies (see bug 36888), new APIs were added to generalize the usage of a working copy owner (entire JavaModel is now aware of owned working copies). These new APIs are copies of existing APIs augmented with a `WorkingCopyOwner` parameter, that defines the working copies to consider in the operation. When specifying an owner parameter, all working copies belonging to this owner will implicitly take precedence over primary ones (without requiring the owner to remember all its working copies, as in 2.1 era). Note that when no owned working copy is found, a primary unit will be considered instead, and since primary units have a built-in working copy (see `ICompilationUnit.becomeWorkingCopy(...)`), the primary unit may already be in working copy mode (very likely since an editor got opened on it). This means that an owner will already transparently see unsaved editor contents for all units for which it has no better working copy to contribute. The following new APIs were added:
  - `AST.parseCompilationUnit(char[] source, String unitName, IJavaProject project, WorkingCopyOwner owner)`
  - `AST.parseCompilationUnit(IClassFile classFile, boolean resolveBindings, WorkingCopyOwner owner)`
  - `AST.parseCompilationUnit(ICompilationUnit unit, boolean resolveBindings, WorkingCopyOwner owner)`
  - `IEvaluationContext.codeComplete(String codeSnippet, int position, ICompletionRequestor requestor, WorkingCopyOwner owner)`
  - `IEvaluationContext.codeSelect(String codeSnippet, int offset, int length, WorkingCopyOwner owner)`
  - `IDOMCompilationUnit.getCompilationUnit(IPackageFragment parent, WorkingCopyOwner owner)`
  - `ICodeAssist.codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner)`
  - `ICodeAssist.codeSelect(int offset, int length, WorkingCopyOwner owner)`
  - `ICompilationUnit.reconcile(boolean forceProblemDetection, WorkingCopyOwner owner, IProgressMonitor monitor)`
  - `IJavaProject.findElement(IPath path, WorkingCopyOwner owner)`
  - `IJavaProject.findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner)`
  - `IJavaProject.findType(String fullyQualifiedName, WorkingCopyOwner owner)`
  - `IJavaProject.newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)`
  - `IJavaProject.newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor)`
  - `IPackageFragment.getCompilationUnit(String name, WorkingCopyOwner owner)`
  - `IPackageFragment.getCompilationUnits(WorkingCopyOwner owner)`
  - `IType.codeComplete(char[] snippet, int insertion, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic, ICompletionRequestor requestor, WorkingCopyOwner owner)`
  - `IType.newSupertypeHierarchy(WorkingCopyOwner owner, IProgressMonitor monitor)`
  - `IType.newTypeHierarchy(IJavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor)`
  - `IType.newTypeHierarchy(WorkingCopyOwner owner, IProgressMonitor monitor)`
  - `IType.resolveType(String typeName, WorkingCopyOwner owner)`
  - `JavaCore.create(IFile file, WorkingCopyOwner owner)`
  - `JavaCore.create(IResource resource, WorkingCopyOwner owner)`
  - `JavaCore.create(String handleIdentifier, WorkingCopyOwner owner)`
  - `JavaCore.createCompilationUnitFrom(IFile file, WorkingCopyOwner owner)`
  - `JavaCore.getWorkingCopies(WorkingCopyOwner owner)`
  - `SearchEngine.SearchEngine(WorkingCopyOwner workingCopyOwner)`
  - `SearchEngine.createHierarchyScope(IType type, WorkingCopyOwner owner)`
- Added optional problem to signal superfluous semicolons (matching problem ID is `IProblem.SuperfluousSemicolon`).

      * COMPILER / Reporting Superfluous Semicolon
      *    When enabled, the compiler will issue an error or a warning if a superfluous semicolon is met.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.superfluousSemicolon"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

### Problem Reports Fixed

26281 error hover text indicates wrong problem
23166 Syntax error message from Java compiler is confusing.
33213 Same error reported more than once?
36214 TODOs reported twice when located at the end of the method declaration
36232 binding do not fully consider working copies
36888 Close the gap between original and working copies
39311 Outliner did not refresh after method rename (refactor)
39259 While statement has wrong source position
39007 Infinite loop trying to index a non-existing external jar
39172 Incorrect error reported if extra semi-colon exists on a return statement

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 23rd June 2003
Project org.eclipse.jdt.core v_359 (cvs).

## What's new in this drop

- Added API on `ICompilationUnit` to get the primary compilation unit of a working copy (it replaces `IWorkingCopy.getOriginalElement()`):

      /**
       * Returns the primary compilation unit (whose owner is the primary owner)
       * this working copy was created from, or this compilation unit if this a primary
       * compilation unit.
       * Note that the returned primary compilation unit can be in working copy mode.
       *
       * @return the primary compilation unit this working copy was created from,
       * or this compilation unit if it is primary
       * @since 3.0
       */
      ICompilationUnit getPrimary();

- Added API on `IJavaElement` to get the primary element of a working copy element (it replaces `IWorkingCopy.getOriginalElement(IJavaElement)`):

      /**
       * Returns the primary element (whose compilation unit is the primary compilation unit)
       * this working copy element was created from, or this element if it is a descendant of a
       * primary compilation unit or if it is not a descendant of a working copy (e.g. it is a
       * binary member).
       * The returned element may or may not exist.
       *
       * @return the primary element this working copy element was created from, or this
       * 	element.
       * @since 3.0
       */
      IJavaElement getPrimaryElement();

### Problem Reports Fixed

38678 workspace did not shutdown
37006 2 tasks in the tasks view instead of one
38759 Task Tags: should not consider text in substrings/parts of text
36066 Outliner did not refresh after field rename
38951 NPE in editor while saving contents
35877 Stack overflow in code assist
35409 RC2 Compiler produces bogus error messages
38838 SyntaxError- unoptimal syntax error message

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 18th June 2003
Project org.eclipse.jdt.core v_357b (cvs).

## What's new in this drop

- Backported index manager deadlock fix on top of v_357

### Problem Reports Fixed

38901 IndexManager hangs in end-less loop

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M2 Build - 16th June 2003
Project org.eclipse.jdt.core v_358 (cvs).

NOTE: This version got backed out due to severe regression (see 38951 NPE in editor while saving contents). Until subsequent version is made available (see above), integration builds will revert to previous version (v_357).

## What's new in this drop

- `JavaCore.newLibraryEntry(...)` will now allow an empty source attachment (`new Path("")`) to be equivalent to no source attachment (i.e. `null`). This adjustment is made necessary for library entries generated from classpath variables which cannot be set to `null`. Also see bug 38531.

      * @param sourceAttachmentPath the absolute path of the corresponding source archive or folder,
      *    or null if none. Note, since 3.0, an empty path is allowed to denote no source attachment.
      *   and will be automatically converted to null.

- Added API `IJavaProject#forceClasspathReload(IProgressMonitor)` to force reload of `.classpath` file before next automatic update occurs.

      /**
       * Force the project to reload its .classpath file from disk and update the classpath accordingly.
       * Usually, a change to the .classpath file is automatically noticed and reconciled at the next
       * resource change notification event. If required to consider such a change prior to the next automatic
       * refresh, then this functionnality should be used to trigger a refresh. In particular, if a change to the file is performed,
       * during an operation where this change needs to be reflected before the operation ends, then an explicit refresh is
       * necessary.
       *
       * @param monitor a progress monitor for reporting operation progress
       * @exception JavaModelException if the classpath could not be updated. Reasons
       * include:
       *  - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
       *  - Two or more entries specify source roots with the same or overlapping paths (NAME_COLLISION)
       *  - A entry of kind CPE_PROJECT refers to this project (INVALID_PATH)
       *  - This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
       *  - The output location path refers to a location not contained in this project (PATH_OUTSIDE_PROJECT)
       *  - The output location path is not an absolute path (RELATIVE_PATH)
       *  - The output location path is nested inside a package fragment root of this project (INVALID_PATH)
       *  - The classpath is being modified during resource change event notification (CORE_EXCEPTION)
       * @since 3.0
       */

- In the process of closing the gap between compilation units and working copies (see bug 36888 ), the following new APIs are added to `ICompilationUnit`:

  -     /**
         * Changes this compilation unit handle into a working copy. A new IBuffer is
         * created using this compilation unit handle's owner. Uses the primary owner is none was
         * specified when this compilation unit handle was created.
         *
         * When switching to working copy mode, problems are reported to given
         * IProblemRequestor.
         *
         * Once in working copy mode, changes to this compilation unit or its children are done in memory.
         * Only the new buffer is affected. Using commitWorkingCopy(boolean, IProgressMonitor)
         * will bring the underlying resource in sync with this compilation unit.
         *
         * If this compilation unit was already in working copy mode, an internal counter is incremented and no
         * other action is taken on this compilation unit. To bring this compilation unit back into the original mode
         * (where it reflects the underlying resource), discardWorkingCopy must be call as many
         * times as becomeWorkingCopy.
         *
         * @param problemRequestor a requestor which will get notified of problems detected during
         * 	reconciling as they are discovered. The requestor can be set to null indicating
         * 	that the client is not interested in problems.
         * @param monitor a progress monitor used to report progress while opening this compilation unit
         * 	or null if no progress should be reported
         * @exception JavaModelException if this compilation unit could not become a working copy.
         * @see discardWorkingCopy
         * @since 3.0
         */
        void becomeWorkingCopy(IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException;

  -     /**
         * Commits the contents of this working copy to its underlying resource.
         *
         * It is possible that the contents of the original resource have changed
         * since this working copy was created, in which case there is an update conflict.
         * The value of the force parameter affects the resolution of
         * such a conflict:
         * - true - in this case the contents of this working copy are applied to
         * 	the underlying resource even though this working copy was created
         * 	before a subsequent change in the resource
         * - false - in this case a JavaModelException is thrown
         *
         * Since 2.1, a working copy can be created on a not-yet existing compilation
         * unit. In particular, such a working copy can then be committed in order to create
         * the corresponding compilation unit.
         *
         * @param force a flag to handle the cases when the contents of the original resource have changed
         * since this working copy was created
         * @param monitor the given progress monitor
         * @exception JavaModelException if this working copy could not commit. Reasons include:
         * - A CoreException occurred while updating an underlying resource
         * - This element is not a working copy (INVALID_ELEMENT_TYPES)
         * - A update conflict (described above) (UPDATE_CONFLICT)
         * @since 3.0
         */
        void commitWorkingCopy(boolean force, IProgressMonitor monitor) throws JavaModelException;

  -     /**
         * Changes this compilation unit in working copy mode back to its original mode.
         *
         * This has no effect if this compilation unit was not in working copy mode.
         *
         * If becomeWorkingCopy was called several times on this
         * compilation unit, discardWorkingCopy must be called as
         * many times before it switches back to the original mode.
         *
         * @see becomeWorkingCopy
         * @exception JavaModelException if this working copy could not return in its original mode.
         * @since 3.0
         */
        void discardWorkingCopy() throws JavaModelException;

  -     /**
         * Returns the working copy owner of this working copy.
         * Returns null if it is not a working copy or if it has no owner.
         *
         * @return WorkingCopyOwner the owner of this working copy or null
         * @since 3.0
         */
        WorkingCopyOwner getOwner();

  -     /**
         * Returns a new working copy of this element if this element is not
         * a working copy, or this element if this element is already a working copy.
         *
         * Note: if intending to share a working copy amongst several clients, then
         * getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor)
         * should be used instead.
         *
         * When the working copy instance is created, an ADDED IJavaElementDelta is
         * reported on this working copy.
         *
         * Since 2.1, a working copy can be created on a not-yet existing compilation
         * unit. In particular, such a working copy can then be committed in order to create
         * the corresponding compilation unit.
         *
        * @param monitor a progress monitor used to report progress while opening this compilation unit
         * 	or null if no progress should be reported
         * @exception JavaModelException if the contents of this element can
         * 	not be determined.
         * @return a new working copy of this element if this element is not
         * 	a working copy, or this element if this element is already a working copy
         * @since 3.0
         */
        ICompilationUnit getWorkingCopy(IProgressMonitor monitor) throws JavaModelException;

  -     /**
         * Returns a shared working copy on this element using the given working copy owner to create
         * the buffer, or this element if this element is already a working copy.
         * This API can only answer an already existing working copy if it is based on the same
         * original compilation unit AND was using the same working copy owner (that is, as defined by Object.equals).
         *
         * The life time of a shared working copy is as follows:
         * - The first call to getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor)
         *   creates a new working copy for this element
         * - Subsequent calls increment an internal counter.
         * - A call to discardWorkingCopy() decrements the internal counter.
         * - When this counter is 0, the working copy is discarded.
         *
         * So users of this method must discard exactly once the working copy.
         *
         * Note that the working copy owner will be used for the life time of this working copy, that is if the
         * working copy is closed then reopened, this owner will be used.
         * The buffer will be automatically initialized with the original's compilation unit content
         * upon creation.
         *
         * When the shared working copy instance is created, an ADDED IJavaElementDelta is reported on this
         * working copy.
         *
         * Since 2.1, a working copy can be created on a not-yet existing compilation
         * unit. In particular, such a working copy can then be committed in order to create
         * the corresponding compilation unit.
         *
         * @param owner the working copy owner that creates a buffer that is used to get the content
         *  	of the working copy
         * @param problemRequestor a requestor which will get notified of problems detected during
         * 	reconciling as they are discovered. The requestor can be set to null indicating
         * 	that the client is not interested in problems.
         * @param monitor a progress monitor used to report progress while opening this compilation unit
         * 	or null if no progress should be reported
         * @exception JavaModelException if the contents of this element can
         *  	not be determined.
         * @return a new working copy of this element using the given factory to create
         * the buffer, or this element if this element is already a working copy
         * @since 3.0
         */
        ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException;

  And the following abstract class replaces `IBufferFactory`:

      /**
       * The owner of an ICompilationUnit handle in working copy mode.
       * An owner is used to identify a working copy and to create its buffer.
       *
       * @see ICompilationUnit#becomeWorkingCopy
       * @see ICompilationUnit#discardWorkingCopy
       * @since 3.0
       */
      public abstract class WorkingCopyOwner {
      	/**
      	 * Creates a buffer for the given working copy.
      	 * The new buffer will be initialized with the contents of the underlying file
      	 * if and only if it was not already initialized by the compilation owner (a buffer is
      	 * uninitialized if its content is null).
      	 *
      	 * @param workingCopy the working copy of the buffer
      	 * @return IBuffer the created buffer for the given working copy
      	 * @see IBuffer
      	 */
      	public IBuffer createBuffer(ICompilationUnit workingCopy) {
      		...
      	}
      }

  The intent for the primary owner is to use a buffer factory that would be provided by the org.eclipse.text infractructure. This infrastructure not being ready yet, in the meantime one can change the primary owner's `IBufferFactory` using the following internal API:

      org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner.PRIMARY.factory = ...;

### Problem Reports Fixed

38901 IndexManager hangs in end-less loop
38908 Ant script reports that the bootclasspath cannot be infer
38531 IllegalArgumentException "Source attachment path should be absolute"
38424 Mistake on Web site
38732 organize imports does not work with assert in source code
38447 AST: Source ranges with missing bracket
36854 NPE opening type hierarchy
33530 JavaModel synchronization model should be more optimistic
20931 Need an API to reload the classpath from the file
38393 bytecode generated for evaluation with parentheses is wrong

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 5th June 2003 - 3.0 MILESTONE-1
Project org.eclipse.jdt.core v_357 (cvs).

## What's new in this drop

### Problem Reports Fixed

37274 Deadlock on plugin import

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 4th June 2003
Project org.eclipse.jdt.core v_356 (cvs).

## What's new in this drop

### Problem Reports Fixed

38362 Inconsistent output when using comparrisson operators

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 3rd June 2003
Project org.eclipse.jdt.core v_355 (cvs).

## What's new in this drop

- Fix for bug 37111 may issue some outgoing changes to .classpath file since the source attachment will be shortened into a project relative path when applicable. The .classpath file is still backward compatible, and will continue to accept non relative source attachments as well.

### Problem Reports Fixed

37111 classpath file - java source attachment shouldn't hardcode project name
38143 this = null; should raise compile time error
38124 Brackets around cast accepted by Eclipse but not javac

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 26th May 2003
Project org.eclipse.jdt.core v_354 (cvs).

## What's new in this drop

- Added `JavaCore` optional problem to detect incompatible required binaries, so as to flag situations where some prerequisite binaries are required a JRE level higher than the project target platform; i.e. compiling against 1.4 libraries when deploying for 1.1 platform is likely unwanted.

      * JAVACORE / Reporting Incompatible JDK Level for Required Binaries
      *    Indicate the severity of the problem reported when a project prerequisites another project
      *    or library with an incompatible target JDK level (e.g. project targeting 1.1 vm, but compiled against 1.4 libraries).
      *     - option id:         "org.eclipse.jdt.core.incompatibleJDKLevel"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

### Problem Reports Fixed

37750 incorrect handle identifier for IImportContainer
36674 compiler can generate Java 1.4-only bytecode regardless of compatibility settings
37962 Unexpected transient problem during reconcile
37166 NPE in SearchEngine when matching type against ProblemReferenceBinding
37438 searchenging NPE in searchDeclarationsOfReferencedTypes
37779 ExceptionInInitializerError when using JDTCompilerAdapter
36307 JDK1.4.2: Wrong declaring class for clone method on array class

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 19th May 2003
Project org.eclipse.jdt.core v_353 (cvs).

## What's new in this drop

### Problem Reports Fixed

37621 java compiler creates class with internal inconsistency
37646 Help for JDTCompilerAdapter is dated
36894 JobManager could wait when idle
37541 Unoptimal deprecation diagnosis
37565 JACKS: Class literal should not cause class initialization
37503 Compiler does not take care of exclusion filter

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 13th May 2003
Project org.eclipse.jdt.core v_352 (cvs).

## What's new in this drop

- Lowered default severity of field/local variable hiding optional diagnosis to `"ignore"`.
- Lowered default severity of accidental boolean assignment optional diagnosis to `"ignore"`.

### Problem Reports Fixed

37501 VerifyError with assert when optimizing out unused local variables
37387 Compiler generates unnecessary byte codes
37381 AST: Wrong source ranges on VariableDeclExpression
37200 "Source->Generate Delegate Methods..." fails

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 29th April 2003
Project org.eclipse.jdt.core v_351 (cvs).

## What's new in this drop

### Problem Reports Fixed

37040 VerifyError "Illegal target of jump or branch"
36490 Java compiler misses dependency on 'static final' class variables
36814 NaiveASTFlattener does not serialize try-finally statements correctly
36772 AST: CompilationUnit.findDeclaringNode: Spec/Impl not same
36711 Resource duplication message should list location of duplicate
36718 Compiler should not generate references to classes not on the classpath

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 3.0M1 Build - 22nd April 2003
Project org.eclipse.jdt.core v_350 (cvs).

## What's new in this drop

- Added new compiler optional problem to signal cases where a boolean variable is assigned in a condition expression. It is likely an accidental situation, where a comparison was actually meant.

      * COMPILER / Reporting Possible Accidental Boolean Assignment
      *    When enabled, the compiler will issue an error or a warning if a boolean assignment is acting as the condition
      *    of a control statement  (where it probably was meant to be a boolean comparison).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- Added new compiler settings to control the diagnosis of variable hiding other ones.

      * COMPILER / Reporting Local Variable Declaration Hiding another Variable
      *    When enabled, the compiler will issue an error or a warning whenever a local variable
      *    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.localVariableHiding"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"
      *
      * COMPILER / Reporting Field Declaration Hiding another Variable
      *    When enabled, the compiler will issue an error or a warning whenever a field
      *    declaration is hiding some field or local variable (either locally, inherited or defined in enclosing type).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.fieldHiding"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"
      *
      * COMPILER / Reporting Special Parameter Hiding another Field
      *    When enabled, the compiler will signal cases where a constructor or setter method parameter declaration
      *    is hiding some field (either locally, inherited or defined in enclosing type).
      *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.localVariableHiding".
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.specialParameterHidingField"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "disabled"

### Problem Reports Fixed

36510 Automatically attach source for source files located in a class folder
36499 exists() returns true for a source file inside a classfolder
36438 null == null causes java.lang.VerifyError
35755 Search in hierarchy misses dependent projects
36465 Unable to create multiple source folders when not using bin for output
36339 Try codegen issues slightly incorrect ANY exception handler
35965 Source not found in source attachment
36447 Unoptimal wide conditional branch bytecode sequence
19286 Suspicious synchronized operations
36213 ArrayIndex out of bounds
36244 JDK1.4.2: Add -cp as a batch option
35528 When I check out a project from CVS, Updating takes a very long time
36058 Unknown NPE in log
21661 Compile dependency problems
28937 Compiler Problem Marker: Accidental Boolean Assignment
33831 ast API: add FieldAccess.resolveFieldBinding
35649 The SourceMapper instances could share the fileNamefilter
34896 compiler setting "unused private fields"
33751 The numbering of anonymous could be optimized
35849 Incremental compilation ignores linked folders
35926 Batch compiler compile should return false when the command line is incorrect
35421 [nls] Inconsistencies between properties files and nls strings
34173 Create a compiler warning when an instance variable is "re-declared" as a local variable.
21140 Warning/error on shadowing definition of data member?
35490 Search doesn't work for reference of 'cursorLocation'
35338 Cannot save file, "Save failed:null" error message received
35438 CastExpression resolution departs from JLS section 6.5.1
36165 [DOM/AST] Incorrect grammar rule in TypeDeclaration

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build (before 3.0/2.1.1 branching) - 31st March 2003
Project org.eclipse.jdt.core v_312 (cvs).

## What's new in this drop

### Problem Reports Fixed

35831 NPE navigating references using links

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