JDT/Core Release Notes
Author: IBM

jdt core - build notes 2.1 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.0, changes which occurred up to Release 2.0 can be found in build notes R2.0.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 27th March 2003
Project org.eclipse.jdt.core v_311 - 2.1 RELEASE (R2_1)

## What's new in this drop

### Problem Reports Fixed

35731 Unable to build problem

### Problem Reports Closed

35754 NPE in Scope.getTypeOrPackage
35298 NPE: Internal compiler error
31497 Internal compiler error
35476 Null pointer exception in org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage
34962 NPE in Scope.getTypeOrPackage
35651 "Unused private types, methods or fields" should recognize serialVersionUID.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 26th March 2003
Project org.eclipse.jdt.core v_310

## What's new in this drop

### Problem Reports Fixed

24240 DOC - JavaConventions.validateIdentifier: must NOT have the same spelling as ...

### Problem Reports Closed

35658 Cannot resolve Inner Class reference

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 25th March 2003
Project org.eclipse.jdt.core v_309

## What's new in this drop

### Problem Reports Fixed

35654 spec bug in CompilationUnitSorter.sort
35561 No source found if attached file contains 2 potential root paths
35352 NPE when attaching source
35456 The Eclipse compiler generates classes that throw a VerifyError
35473 NPE when exiting Eclipse

### Problem Reports Closed

35510 Assigning code to a library that is within a jarfile
35642 NPE in index manager during shutdown
35608 NPE on shutdown
35437 can't call protected methods from derived classes in other pkg
35396 Compiler error in RC2

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 20th March 2003
Project org.eclipse.jdt.core v_308 - 2.1 RELEASE CANDIDATE 3a

## What's new in this drop

### Problem Reports Fixed

35306 Index update request can be incorrectly handled

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 19th March 2003
Project org.eclipse.jdt.core v_307 - 2.1 RELEASE CANDIDATE 3

## What's new in this drop

### Problem Reports Fixed

34040 It takes a minute to expand a project in Package explorer

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 18th March 2003
Project org.eclipse.jdt.core v_306

## What's new in this drop

### Problem Reports Fixed

35237 Ant adapter should say where to look for the .log file
35132 Need to reindex jar not on classpath not detected
35131 Optimize source attachment query when no source attachment available
35128 Problems with packages named "java"

### Problem Reports Closed

34214 createPackageDeclaration on ICompilationUnit
35098 Delete compiled class files when deleting source file
35087 NPE while importing plug-ins
34850 Need better control over deprecation messages
34322 SDK hangs while building on IBM1.3.1SR2
30418 Inner classes cause compilation errors with asserts
34789 Search for references does not show subclassed methods
33885 packages with javax in their name don't import properly
34992 TODO as a substring in a comment generates a task
34708 unreliable full build/refresh using linked source folders
35093 Not only changes in working copy should refresh type hierarcy.
34851 Rename Class operation hangs

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 13th March 2003
Project org.eclipse.jdt.core v_305

## What's new in this drop

### Problem Reports Fixed

34845 asserts do not need to be NLS'ed
34658 Save All failed with unhelpful error message.

### Problem Reports Closed

34802 instanceof produce InternalCompilerError on MacOSX with JDK1.4.1
34734 internal compiler error ArrayIndexOutOfBound w/ 1.4.1 release
34706 Internal compiler error
34907 ArrayIndexOutOfBoundsException after installing Java 1.4.1_01
34029 "False-positive" deprecated warning
34813 NPE from builder

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 11th March 2003
Project org.eclipse.jdt.core v_304

## What's new in this drop

### Problem Reports Fixed

33927 Leak in Java Editor
33950 Slow performance when changing code in a much referenced project
34000 JDK Compliance doesn't match javac generation from an IBM or SUN JDK
34078 Hierarchy: 27% of time spent reporting progress
33998 unexpected NullPointerException

### Problem Reports Closed

34566 can't get assert to work with mac os x java 1.4.1
34337 [RC2] Searches freezes ?
33412 GB18030: Can't set JRE in a path contains GB18030 characters
34292 [RC2] OutOfMemory compiling
34130 Debug statements on console
34301 Java compiler doesn't dected always unreported exception
32927 Exception while playing with type hierarchy
34059 When adding a library that is stored in a directory containing a "(" or ")" the classes are *not* reachable for Code Assist.
33900 NPE setting output directory of a source folder

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 6th March 2003
Project org.eclipse.jdt.core v_303 - 2.1 RELEASE CANDIDATE 2

## What's new in this drop

- `IJavaProject.isOnClasspath(...)` no longer throws any exception, but rather consistently return `false` in these circumstances. Indeed, it is difficult for clients to work with predicates that throw exceptions. Although this change creates a source incompatibility, the change is binary compatible with 2.0 and within the original spirit of the original API contract. Include in 2.1 readme.

### Problem Reports Fixed

33990 .class file time-stamps out of sync with .java files
32665 Closing element trace should hide children
32634 Improve readability of compiling progress message
33949 DOM: assert statement has wrong length
33695 project build path broken
33475 Build path seems to be lost every time Eclipse restarts
33785 Open on selection fails
33800 search: reporting too many method occurrences
33806 Code assist failure: assignment of double in for loop hides previous variables
33754 IJavaProject.isOnClasspath should answer false for working copies outside the classpath

### Problem Reports Closed

33918 Libraries are not presented in the Package Explorer (I030227)
33843 Compiler incorrectly generating static method calls
33625 Searching for field references with SearchEngine returns some incorrect results
31610 IDE does hang-up

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 4th March 2003
Project org.eclipse.jdt.core v_302a

## What's new in this drop

### Problem Reports Fixed

33757 Problem not detected when opening a working copy
33753 Missing resource messages could be improved
33748 Cannot open working copy on .java file in simple project

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 4th March 2003
Project org.eclipse.jdt.core v_302

## What's new in this drop

- Generalization of working copy deltas: the creation and destruction of any working copy (regular or shared) now fires an `ElementChangedEvent` as well indicating that the working copy has been `ADDED` or `REMOVED`. Until now, only shared working copies were providing such delta notifications.
  See:
  - `IWorkingCopy.getWorkingCopy()`
  - `IWorkingCopy.getWorkingCopy(IProgressMonitor, IBufferFactory, IProblemRequestor)`
  - `IWorkingCopy.destroy()`

### Problem Reports Fixed

31799 Getting squigglies in Java files not on classpath
31858 NPE in log
33371 Rename method dialog: Error message should quote name
33686 Missing extension point schemas
32981 Cancel Extract Interface refactoring does not cleanup working copies
33692 Cleanup in the batch compiler default options
33653 Relevance - should privilege type not needing qualification
33039 Quick Fix: IAE n invocation
32588 Error saving changed source files; all files in project deleted
33560 Workspace shows temporary problems also the compiler doesn't
31765 private recursive methods not marked as unused
33231 Deadlock performing CVS decoration while JRE initializers are invoked
33571 SearchEngine.searchAllTypeNames: NPE when passing null as progress monitor
33035 OutOfMemoryException while searching for references
33445 CodeAssist - Relevance is not correct for local class
33462 NPE during shutdown
33424 No completion available in local type constructor
33225 Override methods... inserts methods incorrectly if class body is as {}
33207 Reject output folder that coincidate with source folder if not equal

### Problem Reports Closed

33621 ICompilationUnit.getElementAt(int) returns strange things when parameter is in a field declaration inside anonymous and local classes
33696 Java source exclusion filter stopped working in RC1
32250 Reporting unused private methods could be improved
33610 Deltas sent while in operation executed with JavaCore.run
33573 NPE in IndexManager on shutdown
33527 Inexact match searching in java.math.BigDecimal
33505 Compiler fails on allowed inner class code
33461 NPE upon shutdown
33466 NPE on shutdown from IndexManager
33475 Build path seems to be lost every time Eclipse restarts

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 27th February 2003
Project org.eclipse.jdt.core v_301

## What's new in this drop

### Problem Reports Fixed

33321 NPE in IndexManager shutdown
31764 CompletionEngine doesn't feed errors to completion requestor
32488 Request to add/remove source folder to index should not look at active job
32392 NPE in SourceMapper
32701 Disassembler doesn't show actual modifiers for member types
32919 Hierarchy views progress bar is useless
32973 Codeassist relevance should privilege prefix match over need for qualification
32629 DeltaProcessor walking some binary output
32612 Saved index file names leaking names?
32376 Signature.getSimpleName/Qualifier should not create an own char-array
32628 Too much time finding out there is no source during search
32974 Invalid classpath error on ..classpath edition
32986 Stack overflow, infinate recursion in compiler
32607 Removing outer folder removes nested folder's cus from index
32937 Kind not set for empty fine-grained delta
32909 compiler error
32690 Classpath error are not detected after a Check out

### Problem Reports Closed

32738 TVT: Externalized Strings to be removed from .properties file
32957 StackOverFlowError renaming class
32323 CVS information on class-Files lost during "rebuild project"
32563 IAE in org.eclipse.jdt.core.Signature.toCharArray (M5)
32900 Java out of memory problem
25848 RedHat Linux LANG=en_US.UTF-8 causes some files *NOT* to be compiled
32579 abstract protected method can't be overridden
32545 Cannot override a method that's accessible in the superclass, but inaccessible in the super-superclass
32179 Problems searching for references to selected text

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 21st February 2003
Project org.eclipse.jdt.core v_300 - 2.1 RELEASE CANDIDATE 1

## What's new in this drop

- In 1.4 compliant mode, the compiler will allow unterminated line comment (i.e. with no trailing line separator), as a consequence of the JLS revisal. Thus removed temporary (and unused) 2.1 API : `ToolFactory.createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean assertMode, boolean recordLineSeparator, boolean strictComment)`

### Problem Reports Fixed

32342 The field type Class_A is defined in an inherited type and an enclosing scope
32476 Spec now allows line comment to end with EOF
32339 Cannot find declaration of SIGNATURE in Java text search

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 20th February 2003
Project org.eclipse.jdt.core v_299

## What's new in this drop

- Added helper method to extract problem marker arguments: `CorrectionEngine.getProblemArguments(IMarker problemMarker)`
- Added 2 settings to disable classpath enhancements which could affect 2.0 clients.

      * JAVACORE / Enabling Usage of Classpath Exclusion Patterns
      *    When set to "disabled", no entry on a project classpath can be associated with
      *    an exclusion pattern.
      *     - option id:         "org.eclipse.jdt.core.classpath.exclusionPatterns"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "enabled"
      *
      * JAVACORE / Enabling Usage of Classpath Multiple Output Locations
      *    When set to "disabled", no entry on a project classpath can be associated with
      *    a specific output location, preventing thus usage of multiple output locations.
      *     - option id:         "org.eclipse.jdt.core.classpath.multipleOutputLocations"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "enabled"

- Removed temporary 2.1 API :
  - `IPackageFragmentRoot.computeSourceAttachmentRootPath(IPath sourceAttachmentPath)`
  - `IJavaModelMarker.UNBOUND_CONTAINER`, use classpath problem marker ID instead (`IJavaModelStatusConstants.CP_CONTAINER_PATH_UNBOUND`).
  - `IJavaModelMarker.UNBOUND_VARIABLE`, use classpath problem marker ID instead (`IJavaModelStatusConstants.CP_VARIABLE_PATH_UNBOUND`).

### Problem Reports Fixed

29578 Issues with migrating shared data
32040 Multiple output folders fooling Java builder
32217 Missing JavaCore in JDT/Core project index
32338 Auto generated comments of quickfix method generation for unnamed package class is wrong
32271 Type Hierarchy Progress monitor improvements
32267 TypeHierarchy. Does not set progress monitor to done when cancelled
32218 Inexact matches found when should be exact
31016 builder exception found in log
32225 incorrect delta after deleting 2 fields
32219 JavaModel operations fail with ArrayIndexOutOfBoundsException if array empty
32182 NPE performing search
27994 Code Assist replace mode inconsistent
32041 Multiple output folders fooling Java Model
32196 Patch: correctly detect misisng .rsc file
32111 ArrayIndexOutOfBoundsException during delete of members
32100 when superpackage package empty deleting a subpackage deletes superpackage
31646 No proposal using code assist in field initializer

### Problem Reports Closed

32227 Serialization incompatibility with Sun's 1.4 compiler
28426 Content Assist displays x(String arg0, String arg1) should be x(String str, String delim)
32164 Serialization methods with private or arbitrary access modifiers should be ignored by "unused private members" compiler check.
32097 Regression - attached source not found when in a subdirecory of archive

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 18th February 2003
Project org.eclipse.jdt.core v_298

## What's new in this drop

- Fix for bug 31997 requires the index format to be changed. Indexes will be automatically regenerated upon subsequent search queries (accounting for indexing notification in search progress dialogs).
- Unused parameter diagnosis will now ignore parameters in an abstract method, a main method, an implementation of an abstract method or a method overriding a concrete one. Additional settings got added for enabling the diagnosis of the latter two scenarii.

      * COMPILER / Reporting Unused Parameter if Implementing Abstract Method
      *    When enabled, the compiler will signal unused parameters in abstract method implementations.
      *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "disabled"
      *
      * COMPILER / Reporting Unused Parameter if Overriding Concrete Method
      *    When enabled, the compiler will signal unused parameters in methods overriding concrete ones.
      *    The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.unusedParameter".
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete"
      *     - possible values:   { "enabled", "disabled" }
      *     - default:           "disabled"

- Code completion enhancement:
  - Relevance of a proposal is higher if the proposal is a variable name and this name contains a prefix.
  - Relevance of a proposal is higher if the proposal is a variable name and this name contains a suffix.

### Problem Reports Fixed

32107 Index signature change isn't honoured any longer
31997 Refactoring d.n. work for projects with brackets in name.
31417 Where has the "Root Path" field gone? [doc]
32000 IJavaModel.contains() returns true for resources copied into bin folder
31947 NPE on shutdown in BlocksIndexInput.close()
31985 NPE searching non-qualified and case insensitive type ref
28637 [Preferences] Import Preferences: Console Message: Content is not allowed in Prolog
31748 [search] search for reference is broken 2.1 M5
31990 Working copy operations should not take workspace lock
31811 VerifyError with huge switch statement
5783 Problem counts are not accumulated
31652 NamingConvention.suggestXXNames: Put the most relevant first
31628 Redundant import need a warning (matching package declaration)
31867 No unused import diagnosis on duplicate import
31495 Should writeObject/readObject be a compiler warning?
31538 serialVersionUID being flagged as an "unused" field
31757 Folder with invalid pkg name should be non-Java resource
25204 Eclipse compiler option: Unused parameters (i.e. never read)
27251 Compiler preferences: Unused parameters - ignore main
31383 Strange rendering of of link resources when link points to Eclipse workspace
31756 Code assist: fails inside an array which inside a function call
31248 Java Compiler progress monitor tells about probelms found
29790 OOM Exception in search cause IDE freeze

### Problem Reports Closed

32083 overridden methods that change visibility cause compiler error
32044 Pre auto build notification fired when closing or opening a file
31903 Null pointer exception loading from respository
31968 Notifier loose nested levels
31942 Bug with Selection Statement switch()
31916 M5 Crashing
31923 Source folder specific compiler settings
31917 Unused private method warning doesn't know about read/writeObject
8452 Wrong position in FieldReference
12797 Can't add directory pointing to class-files to project classpath
11023 Filter code assist choices based on context
7293 Scrubbing Output Directory Can Cause Havoc
6096 Exception using code assist after package rename
5043 Feature Request: source folders in other projects
6488 Classpath Variables (allow plugins to reserve some)
31809 Eclipse reports error in task view - but it's no error!
28319 Unused parameter should be limited to current method/class
31243 Warn of unused parameters: Should not warn when method overrides
28139 Highlight unused method parameters that are not inherited
31380 NPE setting classpath

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 13th February 2003
Project org.eclipse.jdt.core v_297

## What's new in this drop

- To help fixing bug 31135, added new flag `F_REORDER` on `IJavaElementDelta`. This flag is positioned if a member in a compilation unit has changed its position relatively to its siblings.

### Problem Reports Fixed

31476 CU is on build path also it is located in a excluded folder
31303 copy of read-only package doesn't preserve read-only flag
24045 Error deleting parent folder of source folder
31653 typos in javadoc of NamingConventions
30623 Strange java delta when creating a new class
31446 Cannot cancel 'Cleaning of output foder'
30757 Out of memory exception during hierarchy scoped search

### Problem Reports Closed

30485 ArrayOutOfBoundsException during shutdown
30609 Output folder scrubbing
31591 abstract method in base class, defined in a subclass results in compile error
31605 Single line comment on the last line of a file produces a syntax error
31626 getJavadoc() on TypeDeclaration returning incorrect comment

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 11th February 2003
Project org.eclipse.jdt.core v_296

## What's new in this drop

### Problem Reports Fixed

31377 NullPointerException on binary import
31441 Match in jar missing searching for references
31398 M5 compilation problems with package abstract methods
31230 Code assist on variable names: uses prefix and suffix together
31440 Classpath container initializer getDescription should also take a project in argument
31242 exception names should use Local Var suffix/prefix, not Method Param
31168 Trying to open Java-source file with Java editor fails with I/O Exception.
31261 Strange behavior when there is more errors than max errors per compilation unit

### Problem Reports Closed

31450 Compiler bug with overriding protected abstract methods, where a parent class has package-private abstract method
31475 class must implement the inherited abstract method, but cannot override it
30720 linked resources and exclusion filters: compiler markers not flushed
31467 spurious "Incompatible conditional operand types" on ?: when assigning to abstract
30800 Search - doesn't find declaration of field with unicode name
31225 Source attachment not found
31148 freezes when editing a java file and adding while(st.hasMoreTokes())
30731 Class move refactoring changes the unlinked projects in the same workplace

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 6th February 2003
Project org.eclipse.jdt.core v_295 - 2.1 MILESTONE-5 (aka 2.1 RELEASE CANDIDATE 0)

## What's new in this drop

- Added API `ClasspathContainerInitializer.getDescription(IPath containerPath)` so as to improve readability of our messages involving classpath containers (e.g. unbound container classpath problems). Default implementation answers the original container path.

### Problem Reports Fixed

30946 Deadlock in code parser

### Problem Reports Closed

30999 Hang/Deadlock while inserting brace
30949 When compiled from eclipse, unhandled exceptions in try - finally block are not detected.

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 5th February 2003
Project org.eclipse.jdt.core v_294

## What's new in this drop

- Classpath problem markers generated for unbound variable or container will have an extra attribute (respectively IJavaModelMarker.UNBOUND_VARIABLE or IJavaModelMarker.UNBOUND_CONTAINER) which value is the unbound variable or container names. This allows clients to recognize these problems, and contribute suitable recovery actions for these.
- Project cycles can now be built as soon as the compiler severity for circular dependencies is lowered to a warning (see Preferences>Java>Compiler>Other>Circular dependencies>Warning).
- Surfaced compiler options for reporting usage of char[] in String concatenations (default is still warning).

      * COMPILER / Reporting Usage of char[] Expressions in String Concatenations
      *    When enabled, the compiler will issue an error or a warning whenever a char[] expression
      *    is used in String concatenations (e.g. "hello" + new char[]{'w','o','r','l','d'}).
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- Added API `IJavaModel.contains()` to find out if an `IResource` is visible in the Java model.
- 2.1 API Change in org.eclipse.jdt.core.NamingConventions: deprecated 'suggestSetterName' methods removed.
  - `suggestSetterName(IJavaProject,char[],int,char[][])`
  - `suggestSetterName(IJavaProject,String,int,String[])`
- Added API for sorting the members of types in a compilation.
  - `org.eclipse.jdt.core.util.CompilationUnitSorter`

        public static final String RELATIVE_ORDER = "relativeOrder";
        public static void sort(ICompilationUnit compilationUnit,
        	int[] positions,
        	Comparator comparator,
        	int options,
        	IProgressMonitor monitor) throws JavaModelException;

### Problem Reports Fixed

30947 CodeAssist - top level types are not proposed if type is qualified with package
30907 Code assist doesn't work in first case statement of a switch statement
30920 Stack overflow when container resolved to null
30855 Wron error message when nesting source folder in class folder
30857 IPackageFragmentRoot: copy removes source folders from classpath
22756 Reference search does not respect package fragments scope
30860 CodeAssist - Relevance is not correct for member exception
30856 1.4 compliant mode should consider abstract method matches
30825 Missing REORDERED_IN_CLASSPATH notifications
26909 NPE opening type hierarchy for binary type
29832 Bogus quickfixes after removing/adding core plugins
30699 External JAR: no refresh in JavaModel if full build occurred before
30697 Classpath marker update could trigger automatic refresh for external JARs
30805 Abstract non-visible method diagnosis fooled by intermediate declarations
14597 rearrange source code
30417 ICodeFormatter format method should specify that the positions are sorted from the lowest to the biggest
30709 Return value of IPackageFragementRoot.getElementName() has changed
30705 Simple name should consider member types before toplevel types
30704 01e0f should be accepted as valid floating point literal
30511 IPackageFragmentRoot:move ignores FORCE flag
30516 typo in javadoc of IPackageFragmentRoot:isArchive
30506 IPackageFragmentRoot:delete does not handle external jars
20614 Failure compiling a project with cyclic dependencies
30227 compilerAdapter jar should not be include in the repo
30274 Need method to figure out if an IResource is visible through the Java Model
27027 ClassCastException from codeassist
30503 IPackageFragmentRoot:move, copy should accept null as sibling
30496 CU/classfile name validation shouldn't scan if suffix isn't the proper one
30471 AST.parseCompilationUnit(IClassFile, boolean) throws IAE even if class file has source
30487 NPE during shutdown in path canonicalization
26912 'null == null' fooling blank final analysis
30280 NullPointerException at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.resolveType(QualifiedAllocationExpression.java:225)
30393 Its back: Core Exception [code 380] The resource tree is locked for modifications

### Problem Reports Closed

5347 class files not updated
9838 Wrong diagnosis compiling inner classes
30600 incorrect code assist after 'throw new'
30799 Core dump with J2SDK 1.4.1_01 in java.util.zip.ZipFile.getNextEntry
30739 \u4100 is rejected as an identifier character
30782 Can't rename a package to the same name with different case
30522 IPackageFragmentRoot: move, copy updateClasspath semantics
30567 GB18030: Class name, method name, variable name can not contain GB18030 character in some version of Eclipse for Linux.
30629 search: no occurrences to type found if type in default package in nested source folder
27770 Rebuild all doesn't follow project dependencies
24832 Recurency between projects
27750 [startup] starting javacore takes 13% of empty worspace startup
22710 simple save takes 40 seconds
30470 IJavaModelStatus.getMessage not the same as getString
30465 PDE binary project import fills log with core exceptions
28224 Invalid "Unused Imports" warning when importing inner classes
27583 reconciling allocates megabytes of memory in seconds of typing

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 28th January 2003
Project org.eclipse.jdt.core v_293

## What's new in this drop

- By default, JDT/Core will consider a default task tag "TODO" (with normal priority). In the past, default was no task reported.
- Added APIs to save/restore type hierarchies. Note that the client still has to register as a `ITypeHierarchyChangedListener` once restoration has occurred.
  - `ITypeHierarchy.store(OutputStream, IProgressMonitor)` for saving a type hierarchy.
  - `IType.load(InputStream, IProgressMonitor)` for restoring a previously saved hierarchy.
- Added APIs to manipulate package fragment roots:
  - `IPackageFragmentRoot.copy(IPath, int, boolean, IClasspathEntry, IProgressMonitor)`
  - `IPackageFragmentRoot.delete(int, boolean, IProgressMonitor)`
  - `IPackageFragmentRoot.move(IPath, int, boolean, IClasspathEntry, IProgressMonitor)`
  Note that these APIs are very close to the corresponding `IResource` APIs except that they filter out nested source folders, and that they update the project's classpaths if specified.
- Extended compiler optional warning for interface methods incompatible with Object non public methods to scenario where thrown exceptions are not compatible (problem ID: `IProblem.IncompatibleExceptionInThrowsClauseForNonInheritedInterfaceMethod`). This problem is optional, and its severity is also controlled by the `JavaCore` preference `"org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"`.
- 2.1 API Change in org.eclipse.jdt.core.NamingConventions: a new boolean parameter 'isBoolean' added. The value of this parameter is `true` if the field's type is boolean.
  - `suggestSetterName(IJavaProject,char[],int,char[][])` become `suggestSetterName(IJavaProject,char[],int,boolean,char[][])`
  - `suggestSetterName(IJavaProject,String,int,String[])` become `suggestSetterName(IJavaProject,String,int,boolean,String[])`
  Previous APIs got deprecated, and will be removed before 2.1.

### Problem Reports Fixed

22049 Hierarchy View slow to calculate hierarchy [type hierarchy]
29411 Projects rebuilt after restart of Eclipse
30282 TODO task message shouldn't be multiline
30102 NamingConvention: Tests fail
30113 Wrong positions in the outliner for a field that follows an initializer
30224 No JavaElement delta when renaming non-Java project
30108 not clear what 'modifiers' in NamingConventions means
30099 NamingConvention.suggestArgumentNames: No guess returned
27291 [Dialogs] Error dialog looks bad if status message is null
28666 Unclear error message for invalid output folder
29366 Search reporting invalid inaccurate match
29864 Unable to restore working set item - cannot instantiate item: org.eclipse.jdt.ui.PersistableJavaElementFactory
28044 weird errors not reported anywhere but in text and overview ruler
30013 Project compiler setting workspace | project do not persist
29151 NPE in Surround with try/catch block [refactoring]
29969 CodeAssist: too much proposals just after 'switch'
29955 Should not report incompatible throws clause for interface if Object non public ref method
29894 Path matching failure (CharOperation)
29761 Regular expression pattern in exclusion filter is too greedy in M4
29803 Source path exclusion filter not relative source folder
23134 Odd behavior from code formatter

### Problem Reports Closed

30357 Incompatibility of serialization with sun jdk
30370 Warning "import never used" in spite of use by a javadoc @link
30209 JDT compiler bytecode incompatibility with JDK bytecode results in serialization error
27497 Compile only on class
28263 Better specification of source folders
30232 NullPointerException in compilation unit
30160 CodeAssist - no completion behind jProject
29862 GB18030:Could not set a GB18030 character as workbench classpath variable.
29863 GB18030: Could not create a class variable whose name contains a GB18030 character
27616 [Compiler] stack overflow while editing
23299 Enhance Code completion
29239 Refactoring throws exception if .project or .classpath read-only in 2.1 M4

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 21st January 2003
Project org.eclipse.jdt.core v_292a

## What's new in this drop

### Problem Reports Fixed

29872 ImportOrganizeTest failing due to file missing from index

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 21st January 2003
Project org.eclipse.jdt.core v_292

## What's new in this drop

- New compiler setting got added to control severity of incompatible interface method with Object non public method. This used to be reported incorrectly as an error by our compiler (e.g. `interface I { int clone(); }`), and is now an optional problem (default severity is WARNING). Corresponding problem ID is: `IProblem.IncompatibleReturnTypeForNonInheritedInterfaceMethod`.

      * COMPILER / Reporting Interface Method not Compatible with non-Inherited Methods
      *    When enabled, the compiler will issue an error or a warning whenever an interface
      *    defines a method incompatible with a non-inherited Object one.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

- New compiler problems got added to report declarations of unused private members (field/method/type). A JavaCore setting got added to control the severity of these new problems (default severity is IGNORE). Note that currently only a valid local usage is considered as a true usage (e.g. if a message send targets this method, but cannot see it, then the target method will still be reported as unused). Corresponding problem IDs are: `IProblem.UnusedPrivateMethod`, `IProblem.UnusedPrivateField`, `IProblem.UnusedPrivateType` and `IProblem.UnusedPrivateConstructor`.

      * COMPILER / Reporting Unused Private Members
      *    When enabled, the compiler will issue an error or a warning whenever a private
      *    method or field is declared but never used within the same unit.
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.unusedPrivateMember"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "ignore"

- CodeAssist now answers keyword completions. Note that there was already an API for these: `ICompletionRequestor#acceptKeyword(char[] keywordName, int completionStart, int completionEnd, int relevance)` which wasn't invoked until now. There is currently no way to distinguish in between a 'synchronized' keyword used as a modifier or as a statement.

### Problem Reports Fixed

26363 [ast/dom] type bindings that return null for superclass
22381 Show unused fields and variables [refactoring] [search]
19063 code assist proposals for keywords
29771 No reference found to IResource.getLocation when no case sensitive
28236 Search for refs to class in hierarchy matches class outside hierarchy
28951 Source attachment rootpath field missing in UI
29536 Check use of IResource.getLocation
29337 Poor wording in task message "This method overrides deprecated..."
29601 TypeHierarchy: Avoid to use 'isInterface' / 'isClass'
29540 Search Engine return extra results
29524 Search for declaration via patterns adds '"*"
26260 task markers: limitting the number of problems per CU limits the number of tasks/markers (in general) per CU
29306 Can't get content of CU not on classpath
3331 DCR: Code Formatter should offer cast without space (1GI74GZ)
29690 Locked Resource Tree (JavaModelException)
29585 Core Exception as resource tree is locked initializing classpath container
29487 Internal compiler error: final field set in loop (in constructor)
29546 Project rebuild cannot write over .class files
29636 First anonymous type should be named X$1
29638 No field initializations on Object
27413 Should we reject that code?
29211 Should check the visibility of the array type before accessing its length field
29213 Should check the visibility of the array type before calling a method
29621 Wrong Delta When Adding to Filtered Folder
29637 Default debug attributes don't match with javac
29538 External jar not indexed
28489 PackageFragmentRoot.fullExclusionPatternChars() could be optimized for non-source roots
29298 Simplify AST creation for an IClassFile (minor)
29374 Excluded folder on project not returned by Java Model
27485 SearchEngine returns wrong java element when searching in an archive that is included by two distinct java projects.

### Problem Reports Closed

5997 Code assist does not know about synchronized keyword
3196 DCR - CodeAssist - code assist doesn't assist for keywords (1G0FUQF)
23300 Context sensitive Code Completion
29541 Scrubbing wipes out entire build directory
28393 Duplicate 'missing require project' marker
25976 Bug in code formatter: can't be called twice in a row...
25896 weird formatting of import declarations
26426 Add preference to sort method in the source file.
25875 import splitting behavior
23992 Adding partial compilation for JAVA
19501 Found NPE in log
13029 "Build" sometimes builds files that have not changed
13008 Move a Java file, errors remain
11572 Cannot refresh a jar file
8720 include an external directory of classes in Java build path
3359 Get rid of source attachment root (1GJON3Q)
28073 [startup] on startup, jCore loads launching plugins which loads debug plugins
29652 Can't attach source to some ZIP files
29229 Internal compiler error
28801 Internal compiler error
18239 Startup takes too long with java editor open
28819 Nullpointer exception when building
28820 NullPointerException in compiler in M4
28953 internal compiler error: NullPointerException in file with inner class
28954 Internal compiler error -- assert statements in inner class
28980 Null-pointer exception on nested class assert
29267 NullPointerExc. occured when building project
29088 Internal compiler error compiling code in M4 edition of eclipse
29031 Internal compiler error
5520 Class files which are source not shown
3531 NewClass(Interface)Wizard - shows not-visible types (1G4GNH3)
23033 [Tasks] Create seperate setting for stopping build on a circular dependency error
28076 NPE during quick shutdown
29144 Missing code implementation in the compiler
29527 Organize imports fails on included code
29501 Uninitialized variable warning does not analyze the program thoroughly enough
29394 suboptimal handling closing/opening projects in autobuild
29009 ClassCircularityError in RequiredPluginsInitializer

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 15th January 2003
Project org.eclipse.jdt.core v_291a

## What's new in this drop

### Problem Reports Fixed

29516 SearchEngine regressions in 20030114

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 14th January 2003
Project org.eclipse.jdt.core v_291

## What's new in this drop

### Problem Reports Fixed

28545 JavaProject.exists() returns true if project doesn't have Java nature
29404 JavaCore.create(IProject) returns != null for non Java Projects.
28752 J Search resports non-existent Java element
22783 Unexpected null in compiler error message
29365 Syntax error inside method body is fooling NLS string detection
29277 ToolFactory.createDefaultClassFileReader: Retrieving of classfile location
29376 Remove 65k limit on static data
29176 [DOM/AST] Statement.get/setLeadingComment should be deleted
29274 Surface non-java projects as model non-java resources
28531 Classpath Entry: Output folder can not be set to project
28824 Quick Fix: Type Mismatch -> Cast bug [quick fix]
28599 validateClasspath rendering of paths
29079 Buildpath validation: No check that output folder is inside project
29159 DeltaProcessor walks removed project
28822 ClassCastException in ProblemBinding
28596 Default output folder cause of validation error even if not used
28672 Batch compiler should support argument expansion
28617 Qualified super reference cannot be surrounded with parentheses.
27298 Must return result error could be more accurate
28869 Parse error with final local vars without immediate assignment
28682 org.eclipse.jdt.core.dom.ForStatement's body position is incorrect
28622 Check deprecation should handle unicodes
28559 @deprecated has to be at the beginning of the comment line
20844 Indexing space usage
26820 Out of Memory indexing new plugins
27289 ClassCircularityError forces ClassNotFoundException's
27401 [startup] Review JavaCore.startup()
28557 Deprecation is not checked when subclassing a deprecated member type
28615 Cannot optimize out -0.0 in array initializers
28750 Compiler crashes with M4
27241 Missing code generation for the qualifier of a static method invocation
3173 Constant field code generation (1FEWXZW)
28583 Missing one unit in package view

### Problem Reports Closed

3297 DCR - JM - Packages view empty (1GEWRYI)
28934 Using assert keyword in methods of nested classes causes
25980 NullPointerException during Refactor/Move operation
29343 [M4] Scribbling on missing return statement needs to go on a diet
29197 NullPointerException when compiling Class with an assert in a method of an inner class
29082 Can't access Inner class static field through an instance
28675 NPE in indexer
28908 ClassCastException in JavaProject.computePackageFragmentRoots
27430 Java model hangs onto many ClassFile objects
29030 Compiler Bug -- incorrect visibility of protected constructors
28830 Flexible projects cannot share output directory

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 17th December 2002 - 2.1 MILESTONE-4
Project org.eclipse.jdt.core v_290

## What's new in this drop

- Added new JavaCore options
  - CODEASSIST / Define the Prefixes for Field Name
    When the prefixes is non empty, completion for field name will begin with one of the proposed prefixes.
    - option id: "org.eclipse.jdt.core.codeComplete.fieldPrefixes"
    - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
    - default: ""
  - CODEASSIST / Define the Prefixes for Static Field Name
    When the prefixes is non empty, completion for static field name will begin with one of the proposed prefixes.
    - option id: "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"
    - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
    - default: ""
  - CODEASSIST / Define the Prefixes for Local Variable Name
    When the prefixes is non empty, completion for local variable name will begin with one of the proposed prefixes.
    - option id: "org.eclipse.jdt.core.codeComplete.localPrefixes"
    - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
    - default: ""
  - CODEASSIST / Define the Prefixes for Argument Name
    When the prefixes is non empty, completion for argument name will begin with one of the proposed prefixes.
    - option id: "org.eclipse.jdt.core.codeComplete.argumentPrefixes"
    - possible values: { "<prefix>[,<prefix>]*" } where <prefix> is a String without any wild-card
    - default: ""
  - CODEASSIST / Define the Suffixes for Field Name
    When the suffixes is non empty, completion for field name will end with one of the proposed suffixes.
    - option id: "org.eclipse.jdt.core.codeComplete.fieldSuffixes"
    - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
    - default: ""
  - ODEASSIST / Define the Suffixes for Static Field Name
    When the suffixes is non empty, completion for static field name will end with one of the proposed suffixes.
    - option id: "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"
    - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
    - default: ""
  - CODEASSIST / Define the Suffixes for Local Variable Name
    When the suffixes is non empty, completion for local variable name will end with one of the proposed suffixes.
    - option id: "org.eclipse.jdt.core.codeComplete.localSuffixes"
    - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
    - default: ""
  - CODEASSIST / Define the Suffixes for Argument Name
    When the suffixes is non empty, completion for argument name will end with one of the proposed suffixes.
    - option id: "org.eclipse.jdt.core.codeComplete.argumentSuffixes"
    - possible values: { "<suffix>[,<suffix>]*" } where <suffix> is a String without any wild-card
    - default: ""
- New API class : org.eclipse.jdt.core.NamingConventions
  This class provides methods for computing Java-specific names.

      package org.eclipse.jdt.core;
      public final class NamingConventions {
      	public static char[] removePrefixAndSuffixForArgumentName(IJavaProject javaProject, char[] argumentName) {...}
      	public static String removePrefixAndSuffixForArgumentName(IJavaProject javaProject, String argumentName) {...}
      	public static char[] removePrefixAndSuffixForFieldName(IJavaProject javaProject, char[] fieldName, int modifiers) {...}
      	public static String removePrefixAndSuffixForFieldName(IJavaProject javaProject, String fieldName, int modifiers) {...}
      	public static char[] removePrefixAndSuffixForLocalVariableName(IJavaProject javaProject, char[] localName) {...}
      	public static String removePrefixAndSuffixForLocalVariableName(IJavaProject javaProject, String localName) {...}
      	public static char[][] suggestArgumentNames(IJavaProject javaProject, char[] packageName, char[] qualifiedTypeName, int dim, char[][] excludedNames) {...}
      	public static String[] suggestArgumentNames(IJavaProject javaProject, String packageName, String qualifiedTypeName, int dim, String[] excludedNames) {...}
      	public static char[][] suggestFieldNames(IJavaProject javaProject, char[] packageName, char[] qualifiedTypeName, int dim, int modifiers, char[][] excludedNames) {...}
      	public static String[] suggestFieldNames(IJavaProject javaProject, String packageName, String qualifiedTypeName, int dim, int modifiers, String[] excludedNames) {...}
      	public static char[][] suggestLocalVariableNames(IJavaProject javaProject, char[] packageName, char[] qualifiedTypeName, int dim, char[][] excludedNames) {...}
      	public static String[] suggestLocalVariableNames(IJavaProject javaProject, String packageName, String qualifiedTypeName, int dim, String[] excludedNames) {...}
      	public static char[] suggestGetterName(IJavaProject project, char[] fieldName, int modifiers, boolean isBoolean, char[][] excludedNames) {...}
      	public static String suggestGetterName(IJavaProject project, String fieldName, int modifiers, boolean isBoolean, String[] excludedNames) {...}
      	public static char[] suggestSetterName(IJavaProject project, char[] fieldName, int modifiers, char[][] excludedNames) {...}
      	public static String suggestSetterName(IJavaProject project, String fieldName, int modifiers, String[] excludedNames) {...}
      }

### Problem Reports Fixed

28434 Open Type broken when workspace has build path problems
28326 "Open Type" dialog could not open selected type
28476 JRE container description wrong
28447 Unreadable error message from build class path validation
23210 Member variable name proposal

### Problem Reports Closed

9511 Exclude files and whole packages from build
27925 Openable.hasChildren is slow
28246 Class files written to custom output and default output
27275 Random craches with corupt jar in library path
28357 NPE on importing plugins

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 16th December 2002
Project org.eclipse.jdt.core v_289

## What's new in this drop

### Problem Reports Fixed

28316 Missing references to constructor
28104 33 Parsers and 35 Scanners created when opening a type hiearchy
28298 SANITY CHECK error when compiling a specific switch statement
28296 parser gives cast expression an incorrect length
28000 Too many deltas on startup, when resolving cp variables/containers

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 13th December 2002
Project org.eclipse.jdt.core v_288

## What's new in this drop

### Problem Reports Fixed

28109 Excluding a source file doesn't remove its Java problems
28115 Ubiquitous resource in the JavaModel
28064 Stack overflow in java editor
28150 ClassCastException in completion
22139 Array initializer used inline causes syntax error
27941 ClassCastException in CompletionParser
27284 misspelled variable name proposals for array with type name ending in 'y'
27852 We should not reject a class named java if it is in the unnamed package

### Problem Reports Closed

28208 IClasspathEntry.getExclusionPattern: String[] would be better
28114 Missing type if defined in nested source folder
27371 code assist / auto inserting "()" broken
28087 on build, findMarkers called 3 times for each project
27992 Incremental compile time = complete build time
28095 JDTCompilerAdapter references old Main constructor
23231 [resources] Ability to hide resources from the builders

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 11th December 2002
Project org.eclipse.jdt.core v_287a

## What's new in this drop

### Problem Reports Fixed

28069 JDTCompilerAdapter and compiler.batch.Main out of sync in I20021210 build

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 10th December 2002
Project org.eclipse.jdt.core v_287

## What's new in this drop

- Added API `IJavaProject.isOnClasspath(IResource)` that returns whether a given resource is on the classpath of the project and whether it is excluded.
- Added mechanism to allow generic container user to request updating definitions held by container initializers, onto `org.eclipse.jdt.core.ClasspathContainerInitializer`:

      /**
       * Returns true if this container initializer can be requested to perform updates
       * on its own container values. If so, then an update request will be performed using
       * ClasspathContainerInitializer#requestClasspathContainerUpdate/
       *
       * @param containerPath - the path of the container which requires to be updated
       * @param project - the project for which the container is to be updated
       * @return boolean - returns true if the container can be updated
       * @since 2.1
       */
      public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
      	// By default, classpath container initializers do not accept updating containers
         	return false;
      }

      /**
       * Request a registered container definition to be updated according to a container suggestion. The container suggestion
       * only acts as a place-holder to pass along the information to update the matching container definition(s) held by the
       * container initializer. In particular, it is not expected to store the container suggestion as is, but rather adjust
       * the actual container definition based on suggested changes.
       *
       * IMPORTANT: In reaction to receiving an update request, a container initializer will update the corresponding
       * container definition (after reconciling changes) at its earliest convenience, using
       * JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor).
       * Until it does so, the update will not be reflected in the Java Model.
       *
       * In order to anticipate whether the container initializer allows to update its containers, the predicate
       * JavaCore#canUpdateClasspathContainer should be used.
       *
       * @param containerPath - the path of the container which requires to be updated
       * @param project - the project for which the container is to be updated
       * @param containerSuggestion - a suggestion to update the corresponding container definition
       * @throws CoreException when JavaCore#setClasspathContainer would throw any.
       * @see JavaCore#setClasspathContainer(IPath, IJavaProject[], IClasspathContainer[], IProgressMonitor)
       * @see ClasspathContainerInitializer#canUpdateClasspathContainer(IPath, IJavaProject)
       * @since 2.1
       */
      public void requestClasspathContainerUpdate(IPath containerPath, IJavaProject project, IClasspathContainer containerSuggestion) throws CoreException {
      	// By default, classpath container initializers do not accept updating containers
      }

- Added helper method to `org.eclipse.jdt.core.JavaCore` so as to retrieve a registered classpath container initializer:

      /**
       * Helper method finding the classpath container initializer registered for a given classpath container ID
       * or null if none was found while iterating over the contributions to extension point to
       * the extension point "org.eclipse.jdt.core.classpathContainerInitializer".
       *
       * A containerID is the first segment of any container path, used to identify the registered container initializer.
       *
       * @return ClasspathContainerInitializer - the registered classpath container initializer or null if
       * none was found.
       * @since 2.1
       */
      public static ClasspathContainerInitializer getClasspathContainerInitializer(String containerID)

### Problem Reports Fixed

27890 Batch compiler option -nowarn or -warn:none doesn't remove the warning for conversion from char[] to String
27670 ClasspathEntry.rootID allocates a lot of throw-away objects
27595 Add isOnClasspath(IResource) as API
27652 DCR - Need a way to request container initializers to update their container definitions
27555 [startup] PackageFragmentRoot - source attached too early (?)
27861 VerifyError not being caught in jdt core tests
27914 Infinite loop setting breakpoint
27853 Incorrect invalid unicode
27840 Computing non-java resources on a project should not create a NameLookup
27690 SourceElementParser doesn't parse local declarations even if it is requested
5295 Segmented view misses field comment
27714 JavaElement.newNotPresentException
27735 CodeAssist - No completion for type
27370 code assist not working with "new .."
27658 Infinite loop when checking cycle
27683 Index should be saved right after a project was indexed
27330 Signeture should reuse Scanner object
27294 Performance - getTypeSignature should not rescan element names
26604 Forward references unilaterally dissallowed
27532 Rebuild sometimes introduces invalid errors
27597 Ant adapter on a 1.4 JVM sets the target to be 1.4
27494 Source folder output folder shown in Package explorer

### Problem Reports Closed

27783 Build output folder should not always be in the project subdirectories
27600 NPE while searching
26602 Incremental compile/build produces invalid header classes
25752 References list displays nulls for package name parts
26967 Upon exit always receive "JVM Terminated message"
27748 JUnit import fails
27660 Stack overflow causes startup crash
27236 search: references to constructors - a subclass constructor reported
27603 NPE in AbstractImageBuilder
27448 using SearchEngine the constructors, inner classes or packages are not found

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 3rd December 2002
Project org.eclipse.jdt.core v_286

## What's new in this drop

- Code completion enhancement:
  - Relevance of a proposal is higher if the proposal is after an operator and the type of proposal is compatible with the operator.
    In the following example `var1` is more relevant than `var2`.

           public class X {
              int var1;
              Object var2;
              void foo() {
                 int i = 1 + var<cursor>
              }
           }

### Problem Reports Fixed

27487 Builder doesn't handle move to nested source folder
27499 Bogus ClasspathVariableInitializer is found in JavaModel
22039 Provide facility to exclude files from compilation
26251 project compiler settings : some are not set
25538 Conflict of classfolder and outputfolder not reported
27310 CompilationUnit#lineNumber(..) doc seems flawed
27235 Bug with assignement with no effect mask
25928 Cannot nest entries in Java Build Path - Request for Feature Removal
26806 Source build path should allow subdirectories of directories already on path
27322 ClassCastException during code assist
27247 Missing generation for the qualifier in 1.4 mode
22407 Can't set Java project build output folder to different project
27250 Walkback asking for a full rebuild
27173 API: add methodInvocation.resolveMethodBinding
24123 Support for multiple output dirs
27151 NPE searching in hierarchy
24308 Performance - Optimization of search in hierarchy

### Problem Reports Closed

27204 AST.lineNumber(position) is not working, if the class didn't have a new line at the end of file.
27374 project specific JRE settings
27295 Relevance of member type in type cast should be higher
27254 Inexact matches found when search references to UnconditionalFlowContext#maxFieldCount
26938 Build Project-command removes all from build-dir

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 26th November 2002
Project org.eclipse.jdt.core v_285

## What's new in this drop

- Source attachment enhancements:
  - Source folder attachment: The source attachment mechanism got generalized to all binary package fragment root. In the past, only archives did support to carry a source attachment, in the form of a source archive. Now, both binary folder or archive can be associated with sources, which can be either a source archive or a source folder. In particular, mixed modes are supported (binary archive associated to source folder and reciprocally). For more details, see `IPackageFragmentRoot.attachSource(IPath, IPath, IProgressMonitor)` and `JavaCore.newLibraryEntry(...)`.
  - Automatic root path detection: If null is specified as the root path (see `JavaCore.newLibraryEntry(...)` and `IPackageFragmentRoot.attachSource(...)`), then the Java Model will do its best to compute this root path automatically. The underlying algorithm finds the first .java file, parses it, and extract the package declaration to compute the root path.
  - Root path detection: The new API `IPackageFragmentRoot.computeSourceAttachmentRootPath(IPath sourceAttachmentPath)` allows to detect the root path for a given source attachment and package fragment root.
- Code completion enhancement:
  - Relevance of a proposal is lesser if the proposal is in a variable initializer and the proposal is the variable.
    In the following example `var2` is less relevant than `var1`.

           public class X {
              int var1;
              int var2 = var<cursor>
           }

  - Relevance of a proposal is lesser if the proposal is static and the qualified expression is non-static.
    In the following example `var2` is more relevant than `var1`.

           public class X {
              static int var1;
              int var2;
              void foo() {
                 this.var<cursor>
              }
           }

  - Relevance of a proposal is higher if the completion is not qualified or is a local variable.
    In the following example the field `var2` and the parameter `var1` are more relevant than field `var1`.

           public class X {
              int var1;
              int var2;
              void foo(int var1) {
                 var<cursor>
              }
           }

  - Relevance of a proposal is higher if the proposal is equals to the current token.
    In the following example the field `var` is more relevant than field `varPlus`.

           public class X {
              int var;
              int varPlus;
              void foo() {
                 var<cursor>
              }
           }

### Problem Reports Fixed

24916 quick fix: does not handle additional dimentions sometimes [quick fix]
26903 VerifyError when casting null to an array type
27002 Scanner allocates new ArrayList(10) everytime it's created
26912 'null == null' fooling blank final analysis
26817 Class File Editor shows words translated which shouldn't be
26452 Wrong automatically generated import statements
26881 Yoyo in the debugger again
26753 Suspicious yoyo behavior when stepping through if condition
25148 Can't have different case package names
26883 Should report unitialized blank final field
20932 Cannot add a source directory as the source of a JAR file.
8719 DCR - Attac h Java Source: allow un-jarred source tree?
6912 Attach Source Requires JAR/ZIP
26255 project compiler settings : cannot go back to worspace settings
26841 Compiler - Does not detect non-visible member type in import
26784 problem M3 sourcebuild, linux/gtk - build error
26706 Cannot create project with comma characters in project path
26195 JDT compiler doesn't report recursive constructor invocation
26747 IllegalArgumentException reading build state
3243 SourceAttachment - automatic computation of the package root does not work (1GCMTLP)
26785 Unreachable empty blocks should be reported in 1.4 compliant mode
26664 deprecated interfaces are not allways recognized
26759 Cast Compiler Error
26134 JACKS - VerifyError running invalid code
26253 task tags: two tags on one line creates one task for first tag
26677 Code Assist - expected type must be qualified.
23542 CodeAssist proposal should offer non-qualified ones first
25890 code assist displays static members on non-static expressions
26025 Search should not use a file based name environment
26138 JACKS - The null literal should not be considered as a constant expression
26585 Wrong code generation in conditional expression
26588 Code Assist - variable must be less relevant in initialization
26142 JACKS: Must reject invalid character after class definition
26141 JACKS: Should report unterminated comment
26129 JACKS: VerifyError, because opcode jsr_w not used
25888 Open on selection fails on private binary inner class contructor
23126 allow selecting directories when attaching source to jar's
22145 Attach source directory in addition to archive file [build path]
26459 Unused NonVoidMethodRequestor
26122 JACKS: VerifyError when affecting final local in anonymous class header
26124 JACKS - Compile error not reported when break; used in a labeled statement
24934 Move top level doesn't optimize the imports[refactoring]
25250 Scrapbook shows wrong error message

### Problem Reports Closed

26580 java element deltas not sent out?
21837 Eclipse hangs trying to set a breakpoint
25406 Package name change disallowed because of case insensitivity
26885 binary representation wrongly flagged as error
26526 Inner class imports flagged as errors
26652 Encountered "case statement must be constant" error
23076 compilation does not create class files!!!
24015 CVS synchronize with outgoing changes only causes Java rebuild
25478 Unresolvable import statements Problem Marker malfunctioning
26658 No deprecation warning
26132 JACKS - Blank final instance must be assigned before the end of constructor
26340 Using javadoc comments to generate and manage bookmarks.
9020 More intelligent code assist.
25962 Output classes is scrubbed due to error in compiling a source.
26166 compile single file
25684 SelectionEngine to be made API?
26454 DCR: IScanner.setSourceReader

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 14th November 2002 - 2.1 MILESTONE-3
Project org.eclipse.jdt.core v_284

## What's new in this drop

### Problem Reports Fixed

26259 Errors reported on save which go aways on rebuild

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 13th November 2002
Project org.eclipse.jdt.core v_283

## What's new in this drop

### Problem Reports Fixed

26128 packages don't appear in package explorer view
26044 Unexpected full builds
26098 Wrong line number attribute.
24517 type view does not notice when jar disappears

### Problem Reports Closed

26063 MacOS X: Error saving files

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 12th November 2002
Project org.eclipse.jdt.core v_282b

## What's new in this drop

- In case someone deletes the .classpath and no corresponding classpath exists in memory, a default .classpath is not automatically created any longer but a marker is created on the project preventing this project from being built. This covers the following scenarii:
  - Someone checks in a .project file with the Java nature but doesn't check in the .classpath file. When the project is checked out, a marker is created indicating the .classpath file could not be read.
  - Someone shuts down the workbench, deletes the .classpath and restart the workspace. When attempting to built the project, a marker is created indicating the .classpath file could not be read and the project is not built.
  - The Java nature is added to a project without a .classpath file. A marker is created indicating the .classpath file could not be read.
- Selectivity API - Source folders can be associated with filters allowing to exclude specified portions of the resource tree rooted at this source entry's path. Exclusion patterns are expressed using the Ant file pattern syntax (i.e. **, *, ? wild-cards; where ** can stand for one or many folder names).
  - Added `JavaCore.newSourceEntry(IPath path, IPath[] exclusionPatterns)`
  - Added `IClasspathEntry.getExclusionPatterns()`
  Full implementation will be available by 2.1 milestone-4.
- Multiple output folder API - Source folders can be associated with a specific output location. The project output location is now corresponding to a default output location.
  - Added `JavaCore.newSourceEntry(IPath path, IPath[] exclusionPatterns, IPath specificOutputLocation)`
  - Added `IClasspathEntry.getOutputLocation()`
  Full implementation will be available by 2.1 milestone-4.
- The Java builder now iterates over the resource tree, allowing to take advantage of forthcoming workspace structure enhancements (in particular: linked folders). As a consequence, the Java builder will only consider the resources officially reflected in the resource tree (as opposed to existing underlying files not yet reflected when the resource tree is out of sync). Note that the build state format has changed to reflect this evolution, as a consequence, if reusing an existing workspace, the first build action will have to be a rebuild-all projects, since incrementally it will not be able to re-read old build states associated with prerequisite projects (and an incremental build cannot tell the build manager a full rebuild is necessary).
- An option allows to control whether the Java builder should clean the output folder(s). Since options can be specified on a per project basis, each individual project can be toggled for cleaning the output folder or not (default is to clean). Also, "scrubbing" output folder got renamed into "cleaning" output folder.

      * BUILDER / Cleaning Output Folder(s)
      *    Indicate whether the JavaBuilder is allowed to clean the output folders
      *    when performing full build operations.
      *     - option id:       "org.eclipse.jdt.core.builder.cleanOutputFolder"
      *     - possible values: { "clean", "ignore" }
      *     - default:         "clean"

- Integrated patch from Genady Beriozkin for bug 25092. The compiler will now optionally diagnose assignments having no effect (e.g. x = x). Added the following option to control this behavior.

      * COMPILER / Reporting Assignment with no effect
      *    When enabled, the compiler will issue an error or a warning whenever an assignment
      *    has no effect (e.g 'x = x').
      *     - option id:         "org.eclipse.jdt.core.compiler.problem.noEffectAssignment"
      *     - possible values:   { "error", "warning", "ignore" }
      *     - default:           "warning"

### Problem Reports Fixed

26053 builder out of order in I-20021112
25859 Error doing Java Search
25092 Detect/Warn on possible user typos
25894 Memory leak - Global ThisReference is leaking bindings
25885 Code Assist - exact expected type should be more relevant than subtype
25184 Operations on cu outside classpath should fail
25876 Code Assist - void method are proposed in assignment
23586 Creating a new project deletes files in the parent folder
25815 Code Assist does not propose member type.
25820 NPE in Code Assist
25811 Code Assist for variable name suggestion is not perfect.
24010 IType::resolveType returns null for inner types
25735 Non-NLS strings are not reported properly when the ending tag is missing

### Problem Reports Closed

22509 Unable to start some Java application
21864 Associate package hierarchy with top-level source directory
12957 Copied resources out of synch
24276 javadoc - Imports marked as unused when they are really necessary.
18320 Compiler Warning/Error/Ignore when Assigning to a Parameter
25994 Marker for "static method should be accessed in a static way"
25995 Marker for "static method should be accessed in a static way"
25582 Cannot specify java source path for resource !
25665 AST adds implicit super call (PR 22306 needed on 2.0.2 stream)
25304 Code assist and parameter assistance.
24783 method parameter name code completion
25872 Eclipse considers the Unicode char '\u000A' an invalid character constant.
25255 ICompilationUnit::getUnderlyingResource throws an exception

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 5th November 2002
Project org.eclipse.jdt.core v_281

## What's new in this drop

- Code completion enhancement:
  - Relevance of a proposal is higher if the proposal is in a variable initializer and its type is compatible with the variable type.
    In the following example `var2` is more relevant than `var1`.

           public class X {
              Object var1;
              int var2;
              void foo() {
                 int i = var<cursor>
              }
           }

  - Relevance of a proposal is higher if the proposal is on the right hand side of an assignment and its type is compatible with the left hand side type.
    In the following example `var2` is more relevant than `var1`.

           public class X {
              Object var1;
              int var2;
              void foo() {
                 int i;
                 i = var<cursor>
              }
           }

### Problem Reports Fixed

24626 codeSelect - does not work in catch clause
25688 Non NLS strings improperly reported when the line separator is \r only
25687 codeSelect - fails with inner class as method parameter
25605 [API] someJavaProject.getRequiredProjectNames(); API should specify that the array is returned in ClassPath order
25358 Creating a new Java class - Browse for parent
25495 Ant compiler adapter should treat bogus imports as errors
21957 'refactor rename' allows subpackage name to start with a space
25591 ClassCastException in CompletionEngine
25539 Unexpected inaccurate search results
25578 Abstract method declaration completion should be more relevant
25221 Code assist after new keyword
25347 Deprecation-Flag in Ant doesn't work with Eclipse Compiler
25551 Ant javac adapter always reports build successful even if there are compiler errors
24939 Code Assist doesn't find protected constructor for anonymous class
3717 Smoke 114: Progress reporting when switching to different default VM (1GEHXMV)
24565 CodeAssist proposing twice the same method
25520 Possible problem in JavaProject#findPackageFragmentRoots(IClasspathEntry)
24518 Public flag not set for interface method

### Problem Reports Closed

18212 Java Build Paths no updated correctly when checking out multiple projects

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 29th October 2002
Project org.eclipse.jdt.core v_280

## What's new in this drop

- In 1.4 compliant mode, the compiler will report errors for unterminated line comments (i.e. not closed with a line break). For backward compatibility reason, the stricter check isn't performed in 1.3 compliant mode. See 23096 for further details. Also note that from now on, the trailing line break is part of the line comment source range.
- The API setLeadingComment(String) on org.eclipse.jdt.core.dom.Statement class has been updated to reflect the changes made for 23096. This API strictly fits to the JLS. It doesn't use the compliance mode settings. So a line comment needs to be closed with a line break in order to be valid. See 25206 for further details.

### Problem Reports Fixed

22358 [api] Would like CharOperation made API
23207 Flags.isDeprecated(IMethod.getFlags()) doesn't work
23984 validateEdit not called when changing .classpath
25439 toString() on IBinding subclasses
25347 Deprecation-Flag in Ant doesn't work with Eclipse Compiler
25396 NPE importing external plug-ins
25433 #findPackageFragmentRoots(IClasspathEntry)
25377 Error location is not correct for empty array initializer
25174 Wrong code generation of the eclipse java compiler
25298 One out of two non-externalized strings reported
25188 Debugger won't stop on method first statement breakpoint
25233 NPE in CompletionParser.buildMoreCompletionContext
25206 DOM/AST: Statement.setLeadingComment specification is inconsistent with the JLS
25229 Compiler should not reject innerclass scenario
25183 AST: ITypeBinding of interface returns constructor
24833 TODO: not detected if there is only a comment in .java file
24744 TODO: Task not found if comment after last closing brace
23096 Compiler does not report end of line comment error
24559 TODO: items disappear when there is a syntax error in a method body
13907 Scanner does not report whitespace tokens at end of input
25185 ClassFormatError compiling a method with a compilation problem
25124 AST: IllegalArgumentException on creation

### Problem Reports Closed

23208 The javadoc shown by Eclipse is different from what javadoc produces
25464 NPE during import plugins
25170 opening .java files from outside of classpath is much slower then other files
23307 Refactoring and Search are applied only on open files
20985 [GM1] REGRESSION: eclipse wants to import class already imported
24906 new non-nls strings not noticed on typing
25378 Switching from jdk1.3.1 to jdk1.4.1 leaves me without CVS support
22304 JavaModel: inner Node Constructor shows syntetic argument
25373 options now with 'Map'
25297 AST: DCR: Allow subclasses of ASTNode
20751 [F3] Discrepency between light bulbs and compiler
25163 AST DCR: Parameter names in IMethodBinding
25103 Formatter indentation

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 23rd October 2002
Project org.eclipse.jdt.core v_279a

## What's new in this drop

### Problem Reports Fixed

25197 NPE importing external plugins

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 22nd October 2002
Project org.eclipse.jdt.core v_279

## What's new in this drop

- By default, the compiler will produce warnings for unused imports and non-static references to static members.
- Code completion enhancement:
  - Relevance of a proposal is higher if the proposal is in a return statement and its type is compatible with the return type.
    In the following example `var2` is more relevant than `var1`.

           public class X {
              Object var1;
              int var2;
              int foo() {
                 return var<cursor>
              }
           }

  - Relevance of a proposal is higher if the proposal is in a cast statement and its type is in the hierachy of the cast type.
    In the following example `var2` is more relevant than `var1`.

           public class X {
              Object var1;
              int var2;
              long foo() {
                 return (int)var<cursor>
              }
           }

  - Relevance of a proposal is higher if the proposal is an argument of a sent message and its type is compatible with the parameter type.
    In the following example `var2` is more relevant than `var1`.

           public class X {
              Object var1;
              int var2;
              void foo(int i) {
                 foo(var<cursor>
              }
           }

### Problem Reports Fixed

25040 getPackageFragmentRoots(CP entry) implementation doesn't match spec
25041 IJavaElement#getUnderlyingResource - should fail if element doesn't exist
24505 Refactoring an empty package makes it disappears
24775 Wrong delta when replacing binary project with source project
25018 parseCompilationUnit(..) does not report a compile error
24773 CompilationUnit.getProblems: not all problems?
24747 incorrect compile error message
24974 Broken link in JDT Plugin-in Developer's Guide
24691 Missing interface makes hierarchy incomplete

### Problem Reports Closed

24213 [M1] dependency checking too conservative
24671 Attaching source to JAR triggers build
25039 Non-existing package fragment roots should not be openable
23311 Need a way to include external JARs in the indexer
24956 Compiler misdiagnoses exception sequence
24019 Jar Refresh Problem

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 15th October 2002 - 2.1 MILESTONE-2
Project org.eclipse.jdt.core v_278

## What's new in this drop

- Added soft dependency on plug-in "org.eclipse.team.core" to account for fileTypes contribution
- JavaCore option added for specifying the task priorities (default is `""` meaning tasks have normal priority).

       * COMPILER / Define the Automatic Task Priorities
       *    In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
       *    of the task markers issued by the compiler.
       *    If the default is specified, the priority of each task marker is "NORMAL".
       *     - option id:			"org.eclipse.jdt.core.compiler.taskPriorities"
       *     - possible values:	{ "priority[,priority]*" } where priority is one of "HIGH", "NORMAL" or "LOW"
       *     - default:			""

### Problem Reports Fixed

23272 Plugin dependence problem
24741 Search does not find patterned type reference in binary project
23812 Configurable (TODO) Markers priority in takslist
22840 Refactor->Move doesn't update Local History
24685 Inner package fragments gets deleted - model out of synch
24498 Duplicate entries on classpath cause CP marker to no longer refresh
24630 NPE in MethodBinding
24622 ast: problems with missing ParenthesizedExpression nodes #2
24529 compiler must accept empty source files
24502 AST: No binding for type accesses to a non-visible type
24511 AST: Resolve on non-visible import
24501 AST: No binding for fields accesses of non-visible fields
24500 AST: No binding for field instance access in constructor invocation
24499 AST: No binding for instance access in constructor invocation
17104 Compiler does not complain but "Quick Fix" ??? complains
21893 IType::isMember works the other way round
22581 Ignore unreachable code for unread variables

### Problem Reports Closed

21175 Incorrectly identified: Catch block is hidden by another one in the same try statement
23523 Ouliner not updated after catch-up from repository
24230 search: does not find a references to constructor in anonymous type creations nodes
24522 New Class Dialog: No interface method stubs generated for nested class
24567 problem with hierarchy in working copy
21901 JavaCore.setClasspathContainer is not generic enough
24623 AST: No method body when abstract modifier is existing
24558 compiler error, method declaration in interface -> NullPointerException
24621 Cannot specified JRE for each project separely ...
24600 ECLIPSE_HOME not set
14194 Java source files shouldn't show errors when in src dir, but not java resource
24514 dependency analyzer is broken
24400 Compiler bug or java 'feature' ?
24243 Heuristic to differ between internal JAR and external JAR.
23769 java.lang.OutOfMemoryError

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 8th October 2002
Project org.eclipse.jdt.core v_277

## What's new in this drop

- Search for constructor references now finds implicit constructor calls. Indexes in old workspaces are recomputed when restarted which may result in longer startup times.

### Problem Reports Fixed

24449 AST: Resolve on field access
24453 ast: problems with missing ParenthesizedExpression nodes
23112 search: need a way to search for references to the implicit non-arg constructor
24440 NPE when complete qualified allocation expression
24406 AST: Resolve on method invocation
24376 Attempt to change resource while tree locked during container initialization
24346 Method declaration not found in field initializer
13939 DBCS: no error message to DBCS whitespace in java source
23829 IType::resolveType incorrectly returns null
22541 JDT core test suites should be on dev.eclipse.org
2857 Renaming .java class with errors to .txt leaves errors in Task list (1GK06R3)
24245 IJavaSearchScope.enclosingProjectsAndJars doc misleading, hard to use
24140 Searching for references to a private field within heirarchy seems very slow
24268 DOM: NPE in NaiveASTFlattener#visit(SwitchCase node)

### Problem Reports Closed

23644 hierarchy: getAllSuperTypes does not include all superinterfaces?
23593 search: strange method reference match found
8489 space instead of tab
24370 SerialUID
24205 TypeHierarchy omits subtypes
24375 Casting of primitive final fields to its own type causes VerifyError
22548 IndexOutOfBoundsException during jdt indexing
24347 AST: Resolve on type name qualifier
23211 Bug with search/reference !
22894 Improperly formed ICompilationUnit?
24324 AST: IVariableBinding.getModifiers not same as in source
23930 Eclipse crash when a rebuild project !???
21905 Class file editor should indicate that .class file is missing debug attributes
21741 Error while Build and doesn't allow to create ServerProject also
22376 Parent of JarEntryFile
24274 ArrayIndexOutOfBoundsException from source mapper
23677 java.lang.OutOfMemoryError when setting class path
24233 Impossible to compile projects - followinf of BUG 22509
24233 Installed JRE detection doesnt work correctly

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 1st October 2002
Project org.eclipse.jdt.core v_276

## What's new in this drop

- Registered classpath variable initializers are now taking precedence on values persisted during previous session. This allows initializers to rebind their variables when restarting a workspace, and thus fix up their values.

### Problem Reports Fixed

23594 code resolve: incorrectly resolving method invocation
21763 Problem in Java search [search]
22846 Cannot add in a new classpath entry
20197 Classpath Variables pref page does not refresh with latest variables [build path]
24134 JDTCompilertAdapter doesn't throw BuildException on compile error
24001 Classpath variable/container initializer should activate

### Problem Reports Closed

23656 hierarchy: type hierarchy on interfaces does not contain Object
23890 Changing Package Declarations triggers full project rebuild
24172 Strange behavior with wrong package declaration
24093 NPE in Java Builder
22445 Compiler inconsistent with javac when code returns from inside a finally {} block
24189 need a way to verify that a string can be a type name
23925 Class path vars missing
24210 NPE renaming project
24164 Cannot use a specif rt.jar for a specific Java project
23989 Build Path page reports cycle even if there is none
22754 JRE-Settings independent for each project

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 26th September 2002
Project org.eclipse.jdt.core v_275

## What's new in this drop

### Problem Reports Fixed

24083 NPE accessing JavaProject preferences

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 24th September 2002
Project org.eclipse.jdt.core v_274

## What's new in this drop

- Added new API findDeclaringNode(String) on CompilationUnit. This new method should be used to retrieve ASTNode declared in another compilation unit. See javadoc for further details or bug 23734.
- New APIs added onto IJavaProject to enable project custom options. Project custom options are persisted into a file ".jprefs" located inside the project metadata JDT/Core plugin location. Project can be specified custom options, and inherit global ones from JavaCore. At this point, it is unclear whether we will attempt to share these custom properties (like .classpath file).

  -     	/**
        	 * Helper method for returning one option value only. Equivalent to (String)this.getOptions(inheritJavaCoreOptions).get(optionName)
        	 * Note that it may answer null if this option does not exist, or if there is no custom value for it.
        	 *
        	 * For a complete description of the configurable options, see JavaCore#getDefaultOptions.
        	 *
        	 * @param optionName the name of an option
        	 * @param inheritJavaCoreOptions - boolean indicating whether JavaCore options should be inherited as well
        	 * @return the String value of a given option
        	 * @see JavaCore#getDefaultOptions
        	 * @since 2.1
        	 */
        	String getOption(String optionName, boolean inheritJavaCoreOptions);

  -     	/**
        	 * Returns the table of the current custom options for this project. Projects remember their custom options,
        	 * i.e. only the options different from the the JavaCore global options for the workspace.
        	 * A boolean argument allows to directly merge the project options with global ones from JavaCore.
        	 *
        	 * For a complete description of the configurable options, see JavaCore#getDefaultOptions.
        	 *
        	 *
        	 * @param inheritJavaCoreOptions - boolean indicating whether JavaCore options should be inherited as well
        	 * @return table of current settings of all options
        	 *   (key type: String; value type: String)
        	 * @see JavaCore#getDefaultOptions
        	 * @since 2.1
        	 */
        	Map getOptions(boolean inheritJavaCoreOptions);

  -     	/**
        	 * Sets the project custom options. All and only the options explicitly included in the given table
        	 * are remembered; all previous option settings are forgotten, including ones not explicitly
        	 * mentioned.
        	 *
        	 * For a complete description of the configurable options, see JavaCore#getDefaultOptions.
        	 *
        	 *
        	 * @param newOptions the new options (key type: String; value type: String),
        	 *   or null to flush all custom options (clients will automatically get the global JavaCore options).
        	 * @see JavaCore#getDefaultOptions
        	 * @since 2.1
        	 */
        	void setOptions(Map newOptions);

- Added `JavaCore.run(IWorkspaceRunnable, IProgressMonitor)` that allows batching of java model operations. Only one Java element changed event is reported at the end of the batch. For example the following code snippet notifies listeners twice:

      	ICompilationUnit unit = ...;
      	unit.createType("class B {}", null, false, monitor);
      	unit.getType("A").createField("int i;", null, false, monitor);

  To be notified only once, use the following:

      	JavaCore.run(
      		new IWorkspaceRunnable() {
      			public void run(IProgressMonitor monitor) throws CoreException {
      				ICompilationUnit unit = ...;
      				unit.createType("class B {}", null, false, monitor);
      				unit.getType("A").createField("int i;", null, false, monitor);
      			}
      		},
      		monitor);

### Problem Reports Fixed

23977 .classpath corruption
23734 AST: CompilationUnit.findDeclaringNode only finds bindings from its own ast
23979 Build Path page reports cycle even if there is none
20881 "organize imports" does not find an import statement "add import" does. [code manipulation]
7091 turn off the debug info on a project by project basis
19663 Java|Compiler|Other|Filtered resources needs to be project/team specific
14062 JDK Compliance against a project
22289 To have file encoding by project
7395 Set the compiler options per project instead of per workspace
23894 Extra (TODO) Markers : There is no todo task when there is no error
23162 DOM: clients should be able to control if bindings are available even if AST is modified
23901 CCE in DefaultBindingResolver
23597 cannot resolve a call to a protected superclass method
23573 AST: clone & source locations

### Problem Reports Closed

22618 incorrect warning about unread vars
3239 CodeFormatter: need to be able to set linedelimiter used (1GC0LFK)
22979 using IScanner inside comments
23550 Micro-java, embedded java
23833 Java source attachment does not work
23402 Cancel on compile has no effect
23635 Compilation Errors Inconsistent
21520 'Errors during build: org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding' error
22148 Qlfd. vs. unqlfd. Name from IField.getTypeSignature
21475 No source for classes without debug information [general issue]

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 19th September 2002 - 2.1 MILESTONE-1
Project org.eclipse.jdt.core v_273a

## What's new in this drop

### Problem Reports Fixed

23558 Extremly slow startup

### Problem Reports Closed

23788 Java compiler doesn't properly flag invalid protected access (for javac 1.4 compatibility)

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 16th September 2002
Project org.eclipse.jdt.core v_273

## What's new in this drop

- The source lookup for .class files inside jar files has been improved. Before it worked only if the .class files had a source file attribute. This was too limiting in case of the usage of a library which has not been compiled in debug mode. Now in case there is no such source file attribute, an heuristic is used to create the proper entry. We assume that a class named A in a package p has been compiled from a class A.java in a folder p. For .class files that correspond to member or local classes the source mapping is using the top level class name in which the class is defined. The only limitiation that still exists is that it is not possible to retrieve the source for secondary types (types that are defined in a file which doesn't have the same name). See bug 21475 for further details.

### Problem Reports Fixed

21475 Attaching Source-Code to a library which is not compiled with debug info
23466 Compiler violates JLS 8.3.2
21022 warning on imports while typing and warning on unused imports is on
23329 search: incorrect range for type references in brackets
23284 AST: SingleVariableDeclaration needs extra dimensions?
23464 ast: (Super)ConstructorInvocation should be wrapped in ExpressionStatement
22560 "Add return type" correction could be smarter [quick fix]
23492 [DOM/AST] lazy init should not count as a modification
23292 Must restart Eclipse after debug of source in .zip is updated
22306 AST: Constructor contains syntetic SuperConstructorCall
22832 select does not work when caret is at the begining of an identifier
23242 Bad line number info when multiple statements on same line
23362 DOM: incorrect length for InfixExpression.
23357 Build not triggered on build path change

### Problem Reports Closed

21954 compile / debug VM mismatch
23558 Extremly slow startup
21952 Circular Dependencies Message - Error vs. Warning Message
23375 cycle detection algorithm is O(pow(n - 1, n - 1))
22900 import of a.b.C fails if package a exists

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 10th September 2002
Project org.eclipse.jdt.core v_272

## What's new in this drop

- JavaCore option added for the error level (warning or error) of incomplete classpath or projects involved in a cycle.

      * JAVACORE / Reporting Incomplete Classpath
      *    An entry on the classpath doesn't exist or is not visible (e.g. a referenced project is closed).
      *     - option id:			"org.eclipse.jdt.core.incompleteClasspath"
      *     - possible values:	{ "error", "warning"}
      *     - default:			"error"
      *
      * JAVACORE / Reporting Classpath Cycle
      *    A project is involved in a cycle.
      *     - option id:			"org.eclipse.jdt.core.circularClasspath"
      *     - possible values:	{ "error", "warning" }
      *     - default:			"error"

- New option -bootclasspath is added for the batch compiler. This option allows you to override the location of bootstrap class files. If omitted, the batch compiler will retrieve the libraries used by its JVM. So there is no more need to specify the rt.jar file using the -classpath option. The batch compiler also retrieves the contents of the property "java.class.path" if no -classpath option is specified.
- Deprecation warning inside deprecated code are now ignored by default. A new JavaCore option allows to report them all.

      *	COMPILER / Reporting Deprecation Inside Deprecated Code
      *		When enabled, the compiler will signal use of deprecated API inside deprecated code.
      *     The severity of the problem is controlled with option "org.eclipse.jdt.core.compiler.problem.deprecation".
      *     		- option id:		"org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"
      *     		- possible values:	{ "enabled", "disabled" }
      *     		- default:			"disabled"

- Compiler can now optionally collect tasks from the source code. Occurrences of a given task tag are looked for inside any type of comments, and reported as custom task markers (`"org.eclipse.jdt.core.task"`).
  - New problem ID got created: `org.eclipse.jdt.core.compiler.IProblem#Task`. Note that clients of `IProblemRequestor` will get detected tasks as warnings with this new ID, they can be filtered out if needed.
  - JavaCore option added for specifying the task tag values (default is `""` meaning no task is detected).

        * COMPILER / Define the Automatic Task Tags
        *    When the tag is non empty, the compiler will issue a task marker whenever it encounters
        *    one of the corresponding tag inside any comment in Java source code.
        *    Generated task messages will include the tag, and range until the next line separator or comment ending, and will be trimmed.
        *     - option id:			"org.eclipse.jdt.core.taskTags"
        *     - possible values:	{ "<tag>[,<tag>]*" } where <tag> is a String without any wild-card
        *     - default:			""

- Creating a working copy on a non-existing ICompilationUnit is now allowed. Such a working copy will have its contents initialized to an empty string. Commiting this working copy creates the underlying compilation unit.

### Problem Reports Fixed

23257 IInitializer::getNameRange returns incorrect result
23318 Resolution of Circular Dep. preference/error message filtering
23113 Request to enrich messages provided by AST with errors defined in IProblem
22154 Proposed method for org.eclipse.jdt.core.dom.ITypeBinding
23181 IScanner returns incorrect whitespaces
23259 AST: SwitchCase wrong length
23117 DOM: no error message for method with wrong return type
20215 Batch compiler ignores the CLASSPATH env variable
23054 DOM - TypeDeclaration.getJavadoc() can find incorrect javadoc
22054 Can't extract local variable from super send [refactoring]
22161 AST: Innerclass name: Positions wrong
22526 Warning given when implementing deprecated methods
23050 DOM - IVariableBinding.getModifiers() doesn't give final modifier for local variables
22939 ast: incorrect range for a name in brackets
22458 Refactoring a package does not move the package's directory
6976 Auto collect tasks from code
23052 DOM - CCE calling resolveBinding on an on-demand import from a type
22635 recompile doesn't happen
23118 AST: BreakStatement & ContinueStatement: wrong length
23048 DOM - lazy initialization of empty loop bodies causes binding resolution to fail
22203 More dependencies increase GUI waiting time [build path]
11529 ast: missing (?) binding on simpleName in VariableDeclaration
8921 DCR - Need a way to create a working copy ignoring existing files
22673 VerifyError in char cast of static final char referenced through instance
23075 Wrong compiling of inner classes
23077 search: does not find type references in some imports
22942 JavaProject.exists returns true when it should not
22517 Cannot create type X in project Test if d:\test\X.java exists
18684 Organize Imports doesn't work on external Jars
22946 search: NPE
22637 AST: Typos in Javadoc Assignment.Operator
17210 No match found when query contains '?'
21420 Changing .classpath doesn't update JDT
21485 NPE when doing a reference search to a package
22428 Compiler 1.4 - should report visibility issue for shadowed protected method
22418 Should not complain about package for empty units
22102 Not all implementors found for IPartListener
20631 Declaration of local binary type not found
20435 NPE when searching java method
22334 Compiler generates corrupt classes
22361 Error in javadoc for JavaCore.getResolvedClasspathEntry
21749 Exported libraries and source folders

### Problem Reports Closed

22830 Subtle visibility problem: class declaration resolved improperly
23264 ast: incorrect node hierarchy
23116 DCR: ModifierNode
23055 DOM - SuperMethodInvocation.resolveTypeBinding() returns null
21843 Qualifier in "Type Hierarchy" View
21158 Deadlock on startup
22883 IJavaProject::find(String) returns null for non-primary top-level types
22123 Inability to put a classpath var pointing to a dir inside the project which is one dir up from output dir
12496 Creating a type hierarchy should not populate java model cache
22453 Compiler Problem
22149 jdk compiles but eclipse does not

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.0 Build - 1st August 2002
Project org.eclipse.jdt.core v_270

## What's new in this drop

### Problem Reports Fixed

22093 VerifyError due to duplicate access method
21916 VariableDeclarationExpression

### Problem Reports Closed

21911 NPE in the compiler
7517 No control of formatting fo do {} while blocks
22078 Incorrect error message

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 30th July 2002
Project org.eclipse.jdt.core v_269

## What's new in this drop

- Add a new API getRawTokenSource() on org.eclipse.jdt.core.compiler.IScanner. It should be used if the user doesn't want the Unicode characters to be processed, otherwise use getCurrentTokenSource().

### Problem Reports Fixed

21912 Compiler probleme: continue statement with label identifier
21358 DOM/AST: setLeadingComment and setJavadocComment doesn't support Unicode
21828 Possible problem in DoStatement#accept0(...)

### Problem Reports Closed

3458 Resource folders containing source (1G4CKG9)
21627 Compiled class error on iSeries
21723 Getting java.lang.OutOfMemoryError
16176 References to private fields could be optimized
21109 Have option for compiler warning on use of static field/method through reference
3357 DCR - Add compiler option (1GJJQAD)
21879 Search could be optimized based on visibility
21868 No return statement for code with infinite loop
20820 Squiggly line is at a bad place for missing return statement

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.0 Build - 23rd July 2002
Project org.eclipse.jdt.core v_268

## What's new in this drop

- Added optional compiler problem for signalling non-static invocations of static field/methods (see `JavaCore.COMPILER_PB_STATIC_ACCESS_RECEIVER()`)
- Compilation problem descriptions are now shortened (qualified type arguments are dequalified in the problem message, problem arguments are left fully qualified).

### Problem Reports Fixed

20402 Error Description too long, should not list full class name
21778 ClassFileReader fails on Gnome Twain class
21787 Provide compiler warning of using static method via non-static style.
21768 ast: incorrect length of SimpleName in MethodDeclaration
21757 ast: incorrect range for Name in TypeDeclaration
21754 typo in IType::getSuperInterfaceNames javadoc
21672 Wrong location for the last 'return' bytecode command

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 22nd July 2002
Project org.eclipse.jdt.core v_267

## What's new in this drop

### Problem Reports Fixed

21606 ImageBuilder deletes & adds rather than overwriting

### Problem Reports Closed

21282 IType.getFullyQualifiedName() problems
21182 unimplemented method error after implementing in super
21682 marking a method deprecated doesn't eleminate deprecated warning
21556 "Missing code implementation in the compiler"

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.0 Build - 15th July 2002
Project org.eclipse.jdt.core v_266

## What's new in this drop

### Problem Reports Fixed

21580 VerifyError in 1.4 compliant mode
21557 VM bug prevents valid Java code to be executed on VM < 1.3.1

### Problem Reports Closed

# Eclipse Platform Build Notes
Java development tools core

Eclipse SDK 2.1 Build - 12th July 2002
Project org.eclipse.jdt.core v_265

## What's new in this drop

- Changed ASCII/binary property for entire project.

### Problem Reports Fixed

21230 Rebuilding project fails with ContextStackOverflow (CompilationResult.quickPrioritize)
21203 Compile time NullPointerException in catch blocks
21447 Wrong method invoked at runtime
21482 Error in generated byte code
21480 Bytecode disassembler doesn't handle #invokespecial correctly
20725 JavaBuilder.toString can throw NPE
20865 nullPointerException being thrown by Class Type.resolveBinding()
21116 Can't compile because eclipse says that the method is not visible

### Problem Reports Closed

21049 Save (Build / Compile?) performance
20961 Can't get complete classpath for project.
21428 DOM/AST: AST class unnecessarily plug-in dependent?
20059 project.isOnClassPath(project) result random

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